diff --git a/.github/workflows/build-obs-powershell.yml b/.github/workflows/build-obs-powershell.yml index 403a5820b..7b38f56d5 100644 --- a/.github/workflows/build-obs-powershell.yml +++ b/.github/workflows/build-obs-powershell.yml @@ -113,7 +113,7 @@ jobs: Install-Module -Name Pester -Repository PSGallery -Force -Scope CurrentUser -MaximumVersion $PesterMaxVersion -SkipPublisherCheck -AllowClobber Import-Module Pester -Force -PassThru -MaximumVersion $PesterMaxVersion} @Parameters - name: Check out repository - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: RunPester id: RunPester shell: pwsh @@ -170,9 +170,6 @@ jobs: $result = Invoke-Pester -PassThru -Verbose -OutputFile ".\$moduleName.TestResults.xml" -OutputFormat NUnitXml @codeCoverageParameters - "::set-output name=TotalCount::$($result.TotalCount)", - "::set-output name=PassedCount::$($result.PassedCount)", - "::set-output name=FailedCount::$($result.FailedCount)" | Out-Host if ($result.FailedCount -gt 0) { "::debug:: $($result.FailedCount) tests failed" foreach ($r in $result.TestResult) { @@ -184,7 +181,7 @@ jobs: } } @Parameters - name: PublishTestResults - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@main with: name: PesterResults path: '**.TestResults.xml' diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..6d06d4328 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "Build/Dependency/obs-shaderfilter"] + path = Build/Dependency/obs-shaderfilter + url = https://github.com/exeldro/obs-shaderfilter.git diff --git a/Build/Dependency/obs-shaderfilter b/Build/Dependency/obs-shaderfilter new file mode 160000 index 000000000..f817637ac --- /dev/null +++ b/Build/Dependency/obs-shaderfilter @@ -0,0 +1 @@ +Subproject commit f817637ac4841368891dbfd39e7edc8c61302d20 diff --git a/GitHub/Jobs/BuildOBSPowerShell.psd1 b/Build/GitHub/Jobs/BuildOBSPowerShell.psd1 similarity index 100% rename from GitHub/Jobs/BuildOBSPowerShell.psd1 rename to Build/GitHub/Jobs/BuildOBSPowerShell.psd1 diff --git a/Build/GitHub/Steps/PublishTestResults.psd1 b/Build/GitHub/Steps/PublishTestResults.psd1 new file mode 100644 index 000000000..e8111e8ec --- /dev/null +++ b/Build/GitHub/Steps/PublishTestResults.psd1 @@ -0,0 +1,10 @@ +@{ + name = 'PublishTestResults' + uses = 'actions/upload-artifact@main' + with = @{ + name = 'PesterResults' + path = '**.TestResults.xml' + } + if = '${{always()}}' +} + diff --git a/Build/obs--shaders.build.ps1 b/Build/obs--shaders.build.ps1 new file mode 100644 index 000000000..a2bc962f2 --- /dev/null +++ b/Build/obs--shaders.build.ps1 @@ -0,0 +1,452 @@ +<# +.SYNOPSIS + Generates obs-powershell commands for PixelShaders +.DESCRIPTION + Generates `*-OBS*Shader` commands, based off of pixel shaders. +.NOTES + Most of the shaders come from the excellent [obs-shaderfilter](https://github.com/Exeldro/obs-shaderfilter) plugin. + This plugin is required for any of these shader functions to work. + + This file should only build if the commit message matches "shader" +.LINK + https://github.com/Exeldro/obs-shaderfilter +#> +[ValidatePattern("Shader")] +param() +#region Build Condition +$logOutput = git log -n 1 +$checkIfThisIsValid = $logOutput.CommitMessage ? $logOutput.CommitMessage : $logOutput -join [Environment]::Newline +foreach ($myAttribute in $MyInvocation.MyCommand.ScriptBlock.Attributes) { + if ($myAttribute.RegexPattern) { + + if ($env:GITHUB_STEP_SUMMARY) { + @( + "* $($MyInvocation.MyCommand.Name) has a Build Validation Pattern: (``$($myAttribute.RegexPattern)``)." + "* $($MyInvocation.MyCommand.Name) Validating Commit: ``$checkIfThisIsValid``" + ) -join [Environment]::Newline | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + $myRegex = [Regex]::new($myAttribute.RegexPattern, $myAttribute.Options, '00:00:00.1') + if (-not $myRegex.IsMatch($checkIfThisIsValid)) { + if ($env:GITHUB_STEP_SUMMARY) { + "* skipping $($MyInvocation.MyCommand.Name) because $checkIfThisIsValid did not match ($($myAttribute.RegexPattern))" | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + Write-Warning "Skipping $($MyInvocation.MyCommand) :The last commit did not match $($myRegex)" + return + } + } + elseif ($myAttribute -is [ValidateScript]) + { + if ($env:GITHUB_STEP_SUMMARY) { + "* $($MyInvocation.MyCommand.Name) has a Build Validation Script." | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + $validationOutput = . $myAttribute.ScriptBlock $checkIfThisIsValid + if (-not $validationOutput) { + if ($env:GITHUB_STEP_SUMMARY) { + "* Skipping $($MyInvocation.MyCommand.Name) because $($checkIfThisIsValid) did not meet the validation criteria:" | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + @( + "~~~PowerShell" + "$($myAttribute.ScriptBlock)" + "~~~" + ) -join [Environment]::Newline | + Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + Write-Warning "Skipping $($MyInvocation.MyCommand) : The $CheckIfThisIsValid was not valid" + return + } + } +} +#endregion Build Condition + +if ($env:GITHUB_STEP_SUMMARY) { +@" +### Shader build +"@ | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append +} + +#region Sparse cloning https://github.com/Exeldro/obs-shaderfilter.git +$CloneAndGetShaders = { + @( + $cloneArgs = @("--sparse","--no-checkout","--filter=tree:0", "https://github.com/Exeldro/obs-shaderfilter.git") + $cloneOut = git clone @cloneArgs *>&1 + $sparseCheckoutRoot = (Join-Path $pwd "obs-shaderfilter") + Push-Location $sparseCheckoutRoot + git sparse-checkout set --no-cone '**.shader' '**.effect' + $checkoutOut = git checkout + Pop-Location + Push-Location ($pwd | Split-Path) + # Get shaders anywhere in the root repo (this will include the sparsely checked out repo) + Get-ChildItem -Recurse -File | + Where-Object Extension -in '.shader','.effect' | + Where-Object { $_.Directory.Name -notin 'internal' } + Pop-Location + ) +} + +if ($env:GITHUB_STEP_SUMMARY) { + "* Cloning Shaders with: +~~~PowerShell +$CloneAndGetShaders +~~~ +" | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append +} + +$SparselyClonedShaders = . $CloneAndGetShaders +#endregion Sparse cloning https://github.com/Exeldro/obs-shaderfilter.git + +$parentPath = $PSScriptRoot | Split-Path + +$ShaderFiles = $SparselyClonedShaders + +if ($env:GITHUB_STEP_SUMMARY) { +"* [x] Found $($shaderFiles.Length) Shaders to Build" | + Out-File -Path $env:GITHUB_STEP_SUMMARY -Append +} + + +$commandsPath = Join-Path $parentPath Commands +$ShaderCommandsPath = Join-Path $commandsPath Shaders + +if (-not (Test-Path $ShaderCommandsPath)) { + $null = New-Item -ItemType Directory -path $ShaderCommandsPath +} + +$FindShaderParameters = '[^/]{0,}uniform\s{1,}(?\S+)\s{1,}(?[\S-[\<\;]]+)' + +$AllShaderParameters = $ShaderFiles | + Select-String $FindShaderParameters | + Where-Object { "$_" -notlike "*//*"} +$ShaderParameters = $AllShaderParameters | + Group-Object Path + +if ($env:GITHUB_STEP_SUMMARY) { + "* [x] Found $($AllShaderParameters.Length) Shader Parameters in $($ShaderParameters.Count) files" | + Out-File -Path $env:GITHUB_STEP_SUMMARY -Append +} + +$importedModule = Import-Module $parentPath -Global -PassThru + +if (-not $importedModule) { + if ($env:GITHUB_STEP_SUMMARY) { +@" +**Could Not Import Module from $parentPath** +"@ | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + + Write-Error "Could not import module" + return +} + + +$underscoreWord = "[\w-[_]]+_?" +$capitalizeNames = { + param($match) + $matchAsString = "$match" + $matchAsString.Substring(0,1).ToUpper() + $matchAsString.Substring(1) -replace "_" +} + +$FindAnnotations = [Regex]::new("$FindShaderParameters\<[\s\S]+?>",'IgnoreCase') +$generatingJobs = @() + +foreach ($shaderParameterSet in $ShaderParameters) { + $shaderFileName = @($shaderParameterSet.Name.Split([IO.Path]::DirectorySeparatorChar))[-1] + $shaderName = $shaderFileName -replace '\.(?>effect|shader)$' + $ShaderNoun = "OBS" + ([Regex]::Replace($shaderName, $underscoreWord,$capitalizeNames) -replace '[\p{P}_\+]') + "Shader" + if ($env:GITHUB_STEP_SUMMARY) { + " * [x] Generating Shader from $shaderFileName ( $ShaderNoun )" | + Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + $ShaderContent = [IO.File]::ReadAllText($shaderParameterSet.Name) + $ShaderAnnotations = [Ordered]@{} + $foundShaderAnnotations = @($FindAnnotations.Matches($ShaderContent)) + if ($env:GITHUB_STEP_SUMMARY) { + " * [x] Found $($foundShaderAnnotations.Length) Shader annotations in $shaderFileName ( $ShaderNoun )" | + Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + foreach ($shaderAnnotation in $FindAnnotations.Matches($ShaderContent)) { + $null = $shaderAnnotation -match $FindAnnotations + $shaderAnnotations[$matches.'ParameterName'] = [Ordered]@{} + $matches + } + + $ShaderParameters = [Ordered]@{} + + if ($env:GITHUB_STEP_SUMMARY) { + " * [x] Found $(@($shaderParameterSet.Group).Length) Shader Parameters in $($shaderName)" | + Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + + foreach ($shaderParameterInSet in $shaderParameterSet.Group) { + $shaderMatch = "$(@("$($shaderParameterInSet)") -join '')" -match $FindShaderParameters + $shaderMatch = [Ordered]@{} + $matches + $shaderParameterSystemName = $shaderMatch.ParameterName + + if ($shaderParameterSystemName -match '[^\w_]') { + if ($env:GITHUB_STEP_SUMMARY) { + " * [ ] Shader Parameter $shaderParameterSystemName will be skipped due to improper naming" | + Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + continue + } + # Shader parameters can conflict with automatic parameters (we can sidestep this with a rename) + $shaderParameterName = + switch ($shaderParameterSystemName) { + debug { + "DebugShader" + } + default { + [Regex]::Replace($shaderParameterSystemName, $underscoreWord,$capitalizeNames) + } + } + + if ($env:GITHUB_STEP_SUMMARY) { + " * [x] Shader Parameter $shaderParameterSystemName will become $ShaderParameterName" | + Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + + $ShaderParameterHelp = "Set the $shaderParameterSystemName of $ShaderNoun" + $ShaderParameterAttributes = @() + + # If there were annotations, pick them out. + if ($shaderParameterInSet -like '*<') { + $annotationsForThisShader = $ShaderAnnotations[$shaderParameterSystemName] + $annotationList = + $ShaderAnnotations[$shaderParameterSystemName].0 -split '[\<\>\;]' -notmatch '^\s{0,}$' | + Select-Object -Skip 1 + + $ShaderMin, $ShaderMax = $null, $null + + foreach ($annotationItem in $annotationList) { + $annotationItems = @($annotationItem -split '\s+' -ne '') + $afterEquals = @($annotationItems | Select-Object -Skip 3) -join ' ' -replace '"' + switch ($annotationItems[1]) { + label { + $null = $null + $ShaderParameterHelp = $afterEquals + } + maximum { + $null = $null + $ShaderMax = $afterEquals -as [float] + } + minumum { + $ShaderMin = $afterEquals -as [float] + } + } + } + + if ($null -ne $ShaderMax -and $null -ne $ShaderMin) { + $ShaderParameterAttributes += "[ValidateRange($ShaderMin, $ShaderMax)]" + } + } + + + $shaderParameterType = $shaderMatch.Type + + $ShaderPowerShellParameterType = + switch ($shaderParameterType) { + int { [int] } + bool { [switch] } + + string { [string] } + texture2d { [string] } + + float { [float] } + float2 { [float[]] } + float3 { [float[]] } + float4 { [string] <# float4 is usually a color #>} + float4x4 { [float[][]]} + + default { + [PSObject] + } + } + + $ShaderParameters[$shaderParameterName] = [Ordered]@{ + ParameterName = $shaderParameterName + ParameterType = $ShaderPowerShellParameterType + Attribute = "[ComponentModel.DefaultBindingProperty('$ShaderParameterSystemName')]" + Help = $ShaderParameterHelp + } + + if ($shaderParameterSystemName -ne $shaderParameterName -and $shaderParameterSystemName -notin 'debug') { + $ShaderParameters[$shaderParameterName].Alias = $shaderParameterSystemName + } + } + + $ShaderParameters["SourceName"] = [Ordered]@{ + Attribute = 'ValueFromPipelineByPropertyName' + Alias = 'SceneItemName' + ParameterType = [string] + Help = "The name of the source. This must be provided when adding an item for the first time" + } + + $ShaderParameters["FilterName"] = [Ordered]@{ + Attribute = 'ValueFromPipelineByPropertyName' + ParameterType = [string] + Help = "The name of the filter. If this is not provided, this will default to the shader name." + } + + $ShaderParameters["ShaderText"] = [Ordered]@{ + ParameterName = "ShaderText" + ParameterType = [string] + Alias = "ShaderContent" + 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] + Help = "If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS)" + } + + $ShaderParameters["NoResponse"] = [Ordered]@{ + ParameterName = "NoResponse" + ParameterType = [switch] + Help = "If set, will not wait for a response from OBS (this will be faster, but will not return anything)" + } + + $ShaderParameters["UseShaderTime"] = [Ordered]@{ + ParameterName = "UseShaderTime" + ParameterType = [switch] + Attributes = "[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')]" + Help = "If set, use the shader elapsed time, instead of the OBS system elapsed time" + } + + $ShaderProcess = [scriptblock]::Create(@" +`$shaderName = '$shaderName' +`$ShaderNoun = '$ShaderNoun' +if (-not `$psBoundParameters['ShaderText']) { + `$psBoundParameters['ShaderText'] = `$ShaderText = ' +$($ShaderContent -replace "'","''") +' +} +"@ + { +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} +}) + + + + $NewPipeScriptSplat = [Ordered]@{} + $NewPipeScriptSplat.FunctionName = "Get-$ShaderNoun" + $NewPipeScriptSplat.Parameter = $ShaderParameters + $NewPipeScriptSplat.Alias = "Set-$ShaderNoun", "Add-$ShaderNoun" + $NewPipeScriptSplat.OutputPath = (Join-Path $ShaderCommandsPath "Get-$ShaderNoun.ps1") + $NewPipeScriptSplat.Process = $ShaderProcess + New-PipeScript @NewPipeScriptSplat +} + +if (Test-Path "obs-shaderfilter") { + Remove-Item -Recurse -Force -Path "obs-shaderfilter" +} + +$shaderReadme = Join-Path $ShaderCommandsPath "README.md" +New-Item -Path $shaderReadme -Value @' +## obs-powershell Shader Commands + +This folder contains the generated commands for the shaders in the [obs-shaderfilter plugin](https://github.com/exeldro/obs-shaderfilter/). +'@ -Force + + +trap [Exception] { +if ($env:GITHUB_STEP_SUMMARY) { +@" +❗❗ Trapped Error! + +ShaderName: ``$ShaderName`` +~~~ +$($_ | Out-String) +~~~ +"@ | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append +} + continue +} \ No newline at end of file diff --git a/obs-powershell.GitHubWorkflow.PSDevOps.ps1 b/Build/obs-powershell.GitHubWorkflow.PSDevOps.ps1 similarity index 69% rename from obs-powershell.GitHubWorkflow.PSDevOps.ps1 rename to Build/obs-powershell.GitHubWorkflow.PSDevOps.ps1 index 311cef7b2..6175e6f9c 100644 --- a/obs-powershell.GitHubWorkflow.PSDevOps.ps1 +++ b/Build/obs-powershell.GitHubWorkflow.PSDevOps.ps1 @@ -1,10 +1,11 @@ #requires -Module PSDevOps #requires -Module obs-powershell +Import-BuildStep -SourcePath ( + Join-Path $PSScriptRoot 'GitHub' +) -BuildSystem GitHubWorkflow -Import-BuildStep -Module obs-powershell - -Push-Location $PSScriptRoot +Push-Location ($PSScriptRoot | Split-Path) New-GitHubWorkflow -Job PowerShellStaticAnalysis, TestPowerShellOnLinux, TagReleaseAndPublish, BuildOBSPowerShell -OutputPath @' .\.github\workflows\build-obs-powershell.yml diff --git a/obs-powershell.HelpOut.ps1 b/Build/obs-powershell.HelpOut.ps1 similarity index 50% rename from obs-powershell.HelpOut.ps1 rename to Build/obs-powershell.HelpOut.ps1 index c4794443e..c4d75aac2 100644 --- a/obs-powershell.HelpOut.ps1 +++ b/Build/obs-powershell.HelpOut.ps1 @@ -1,5 +1,6 @@ #requires -Module HelpOut - +Push-Location ($PSScriptRoot | Split-Path) Import-Module .\obs-powershell.psd1 Save-MarkdownHelp -Module obs-powershell -PassThru - +Install-Maml -Module obs-powershell -PassThru -NoComment +Pop-Location diff --git a/obs-powershell.PSSVG.ps1 b/Build/obs-powershell.PSSVG.ps1 similarity index 98% rename from obs-powershell.PSSVG.ps1 rename to Build/obs-powershell.PSSVG.ps1 index 06adf38b8..803a67a3a 100644 --- a/obs-powershell.PSSVG.ps1 +++ b/Build/obs-powershell.PSSVG.ps1 @@ -2,7 +2,7 @@ $powerShellChevron = Invoke-RestMethod https://pssvg.start-automating.com/Examples/PowerShellChevron.svg -$assetsPath = Join-Path $PSScriptRoot Assets +$assetsPath = Join-Path ($PSScriptRoot | Split-Path) Assets if (-not (Test-Path $assetsPath)) { $null = New-Item -ItemType Directory -Path $assetsPath diff --git a/obs-powershell.build.ps1 b/Build/obs-powershell.build.ps1 similarity index 79% rename from obs-powershell.build.ps1 rename to Build/obs-powershell.build.ps1 index c7c35c494..b75f563ea 100644 --- a/obs-powershell.build.ps1 +++ b/Build/obs-powershell.build.ps1 @@ -1,5 +1,54 @@ #requires -Module PipeScript +[ValidateScript({ + $args -match 'websocket' +})] +param() + +#region Build Condition +$logOutput = git log -n 1 +$checkIfThisIsValid = $logOutput.CommitMessage ? $logOutput.CommitMessage : $logOutput -join [Environment]::Newline +foreach ($myAttribute in $MyInvocation.MyCommand.ScriptBlock.Attributes) { + if ($myAttribute.RegexPattern) { + + if ($env:GITHUB_STEP_SUMMARY) { + @( + "* $($MyInvocation.MyCommand.Name) has a Build Validation Pattern: (``$($myAttribute.RegexPattern)``)." + "* $($MyInvocation.MyCommand.Name) Validating Commit: ``$checkIfThisIsValid``" + ) -join [Environment]::Newline | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + $myRegex = [Regex]::new($myAttribute.RegexPattern, $myAttribute.Options, '00:00:00.1') + if (-not $myRegex.IsMatch($checkIfThisIsValid)) { + if ($env:GITHUB_STEP_SUMMARY) { + "* skipping $($MyInvocation.MyCommand.Name) because $checkIfThisIsValid did not match ($($myAttribute.RegexPattern))" | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + Write-Warning "Skipping $($MyInvocation.MyCommand) :The last commit did not match $($myRegex)" + return + } + } + elseif ($myAttribute -is [ValidateScript]) + { + if ($env:GITHUB_STEP_SUMMARY) { + "* $($MyInvocation.MyCommand.Name) has a Build Validation Script." | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + $validationOutput = . $myAttribute.ScriptBlock $checkIfThisIsValid + if (-not $validationOutput) { + if ($env:GITHUB_STEP_SUMMARY) { + "* Skipping $($MyInvocation.MyCommand.Name) because $($checkIfThisIsValid) did not meet the validation criteria:" | Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + @( + "~~~PowerShell" + "$($myAttribute.ScriptBlock)" + "~~~" + ) -join [Environment]::Newline | + Out-File -Path $env:GITHUB_STEP_SUMMARY -Append + } + Write-Warning "Skipping $($MyInvocation.MyCommand) : The $CheckIfThisIsValid was not valid" + return + } + } +} +#endregion Build Condition + # The WebSocket is nice enough to provide it's documentation in JSON $obsWebSocketProtocol = Invoke-RestMethod https://raw.githubusercontent.com/obsproject/obs-websocket/master/docs/generated/protocol.json @@ -40,9 +89,9 @@ $maxRangeRestriction = "\<=\s{0,}(?[\d\.-]+)" $obsFunctions = @() # and files we build. $filesBuilt = @() - +Push-Location ($PSScriptRoot | Split-Path) # And determine where we want to store them -$commandsPath = Join-Path $PSScriptRoot Commands +$commandsPath = Join-Path $pwd Commands $requestsPath = Join-Path $commandsPath Requests # (create the directory if it didn't already exist) @@ -64,6 +113,55 @@ $PostProcess = @{ } } +$AdditionalParameter = @{ + "Set-OBSVideoSettings" = { + param( + [ValidateScript({ + $resolutionPresets = "4K", "1080p","720p" + if ($_ -notin $resolutionPresets -and + $_ -notmatch "\d+x\d+") { + throw "Resolution must be '$($resolutionPresets -join "','")' or WidthxHeight" + } + })] + $Resolution + ) + } +} + +$PreProcess = @{ + "Set-OBSVideoSettings" = { + if ($Resolution) { + $resolutionPresets = "4K", "1080p","720p" + $width, $height = + switch ($resolution) { + 4K { + 3840 + 2160 + } + 1080p { + 1920 + 1080 + } + 720p { + 1280 + 720 + } + default { + $_ -split 'x' + } + } + + $BaseWidth = $OutputWidth = + $PSBoundParameters["BaseWidth"] = $PSBoundParameters["OutputWidth"] = + $width + + $BaseHeight = $OutputHeight = + $PSBoundParameters["BaseHeight"] = $PSBoundParameters["OutputHeight"] = + $height + } + } +} + # Declare the process block for all commands now $obsFunctionProcessBlock = { @@ -351,4 +449,7 @@ $filesBuilt | Add-Member NoteProperty OBSRequestInfo $file.obsRequestInfo -Force -PassThru | Add-Member NoteProperty Contents $file.Contents -Force -PassThru } - } \ No newline at end of file + } + + +Pop-Location \ No newline at end of file diff --git a/obs-powershell.ezout.ps1 b/Build/obs-powershell.ezout.ps1 similarity index 90% rename from obs-powershell.ezout.ps1 rename to Build/obs-powershell.ezout.ps1 index 165b3dac6..41c09d034 100644 --- a/obs-powershell.ezout.ps1 +++ b/Build/obs-powershell.ezout.ps1 @@ -2,12 +2,12 @@ # Install-Module EZOut or https://github.com/StartAutomating/EZOut $myFile = $MyInvocation.MyCommand.ScriptBlock.File $myModuleName = 'obs-powershell' -$myRoot = $myFile | Split-Path +$myRoot = $myFile | Split-Path | Split-Path Push-Location $myRoot $formatting = @( # Add your own Write-FormatView here, # or put them in a Formatting or Views directory - foreach ($potentialDirectory in 'Formatting','Views') { + foreach ($potentialDirectory in 'Formatting','Views','Types') { Join-Path $myRoot $potentialDirectory | Get-ChildItem -ea ignore | Import-FormatView -FilePath {$_.Fullname} diff --git a/CHANGELOG.md b/CHANGELOG.md index 67f0e453b..9afa9b2b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,70 @@ +> Like It? [Star It](https://github.com/StartAutomating/obs-powershell) +> Love It? [Support It](https://github.com/sponsors/StartAutomating) + +## obs-powershell 0.2: + +* So Many Shaders! +* @exeldro makes some excellent obs plugins + * Every PixelShader from [obs-shaderfilter](https://github.com/exeldro/obs-shaderfilter) has an auto-generated function: + * As of this build, there are 142 Shader functions! + * Flip Shader ( #200 ) + * Zoom XY Shader ( #199 ) + * RGBA Percent Shader ( #198 ) + * Reflect Shader ( #197 ) + * Shader Commands now support -Force +* Drastically improved start time on Windows (#214) +* OBS Sources: + * New Sources: + * OBSSoundCloudSource ( #179 ) + * OBSSwitchSource (#142) + * OBSMarkdownSource (#143) + * OBSWaveformSource (#141) + * All existing sources are now implemented in a `Get`, and aliased to `Set`,`Add` + * Making Set also Get-OBSWindowSource (#152) + * Making Set also Get-OBSVLCSource (#151) + * Making Set also Get-OBSMediaSource (#150) + * Making Set also Get-OBSColorSource (#148) + * Making Set also Get-OBSBrowserSource (#147) + * Making Set also Get-OBSAudioOutputSource (#146) +* New Effects: + * Zoom In / Out Effect ( #164 ) + * Start-OBSEffect - Adding -Reverse (Fixes #121) +* Exporting `$obs` (#157, #158, #159) and drastically expanding pseudo types +* Pseudo Types + * GetCurrentProgramScene.ToString() ( Fixes #202, Fixes #166 ) + * OBS.Beat ( #195 ) + * OBS.Beat.Timer + * OBS.Beat.TapBPM ( #191) + * Stopping OBS.Beat.Timer on Unload + * OBS.Beat.get_Sine ( #192 ) + * OBS.Beat.get_Cosine ( #193 ) + * OBS.Beat.Angle ( #194 ) + * OBS.Beat.Duration ( #189 ) + * OBS.Beat.BeatCount ( #190 ) + * OBS.Beat.BeatStart ( #188 ) + * OBS.Beat.BPM ( #187 ) + * $obs.Beat ( #186 ) + * OBS.Input + * OBS.Input.Disable/EnableAllFilter(s) ( #183 ) + * OBS.SceneItem.Animate Permissiveness ( #182 ) + * OBS.Filter.Disable PassThru support ( #181 ) + * OBS.Statistics ( #178 ) + * OBS.Input ( #174 ) + * OBS.Filter ( #175 ) + * OBS.SceneItem ( #173 ) + * OBS.GetSceneItemList.Response.Stretch() ( #172 ) + * OBS.GetSceneItemList.Response.Center() ( #171 ) + * OBS.GetInputList .SourceName alias ( #170 ) + * Adding .SceneItem to OBS.Inputs (Fixes #154) +* Minor Fixes: + * Watch-OBS -BufferSize: Defaulting to 64kb ( Fixes #212, Fixes #213 ) + * Fixing -Scene parameter defaults ( Fixes #210 ) + * Updating Build Conditions + * obs-powershell now mounts itself ( #180 ) + * obs-powershell supporting module profiles (#155) + +--- + ## obs-powershell 0.1.9: * New Filters! diff --git a/Commands/Effects/Import-OBSEffect.ps1 b/Commands/Effects/Import-OBSEffect.ps1 index 91e1b8d91..ad1d681a8 100644 --- a/Commands/Effects/Import-OBSEffect.ps1 +++ b/Commands/Effects/Import-OBSEffect.ps1 @@ -1,4 +1,5 @@ function Import-OBSEffect { + <# .SYNOPSIS Imports Effects @@ -24,6 +25,7 @@ function Import-OBSEffect { )] [ValidateScript({ $validTypeList = [System.String],[System.IO.FileInfo],[System.IO.DirectoryInfo],[System.Management.Automation.CommandInfo],[System.Management.Automation.PSModuleInfo] + $thisType = $_.GetType() $IsTypeOk = $(@( foreach ($validType in $validTypeList) { @@ -31,6 +33,7 @@ function Import-OBSEffect { $true;break } })) + if (-not $isTypeOk) { throw "Unexpected type '$(@($thisType)[0])'. Must be 'string','System.IO.FileInfo','System.IO.DirectoryInfo','System.Management.Automation.CommandInfo','psmoduleinfo'." } @@ -39,10 +42,12 @@ function Import-OBSEffect { $From ) + begin { if (-not $script:OBSFX) { $script:OBSFX = [Ordered]@{} } + $newEffects = @() $obsEffectsPattern = [Regex]::new(' (?> @@ -54,10 +59,12 @@ function Import-OBSEffect { ) ','IgnoreCase,IgnorePatternWhitespace') } + process { # Since -From can be many things, but a metric has to be a command, # the purpose of this function is to essentially resolve many things to a command, # and then cache that command. + # If -From was a string if ($From -is [string]) { # It could be a module, so check those first. @@ -78,6 +85,7 @@ function Import-OBSEffect { } } while ($false) } + # If -From is a module if ($from -is [Management.Automation.PSModuleInfo]) { # recursively call ourselves with all matching commands @@ -98,6 +106,7 @@ function Import-OBSEffect { Import-OBSEffect return } + # If -From is a file if ($from -is [IO.FileInfo]) { # and it matches the naming convention @@ -105,12 +114,14 @@ function Import-OBSEffect { # make -From a command. $from = $ExecutionContext.SessionState.InvokeCommand.GetCommand($from.FullName, 'ExternalScript,Application') } + # If -From is a command if ($from -is [Management.Automation.CommandInfo]) { # decorate the command if ($from.pstypenames -notcontains 'OBS.PowerShell.Effect') { $from.pstypenames.insert(0,'OBS.PowerShell.Effect') } + if ($from -is [Management.Automation.ApplicationInfo]) { $effectName = $from.Name -replace '\.obs\.(?>fx|effects?).(?>ps1|json)$' $newEffect = [PSCustomObject][Ordered]@{ @@ -133,5 +144,8 @@ function Import-OBSEffect { } } } + + + } diff --git a/Commands/Effects/Start-OBSEffect.ps1 b/Commands/Effects/Start-OBSEffect.ps1 index 2e0e9280d..eb7fd23f3 100644 --- a/Commands/Effects/Start-OBSEffect.ps1 +++ b/Commands/Effects/Start-OBSEffect.ps1 @@ -86,7 +86,11 @@ function Start-OBSEffect # If set, will bounce the effect (flip it / reverse it) [switch] - $Bounce + $Bounce, + + # If set, will reverse an effect. + [switch] + $Reverse ) process { @@ -110,6 +114,10 @@ function Start-OBSEffect } else { $obsEffect | Add-Member -MemberType NoteProperty Mode "Once" -Force } + + if ($Reverse) { + $obsEffect.Reversed = $true + } if ($obsEffect -isnot [Management.Automation.CommandInfo]) { if ($step -and $obsEffect.Messages) { diff --git a/Commands/Filters/Set-OBS3DFilter.ps1 b/Commands/Filters/Set-OBS3DFilter.ps1 index 080b7de80..5e070339e 100644 --- a/Commands/Filters/Set-OBS3DFilter.ps1 +++ b/Commands/Filters/Set-OBS3DFilter.ps1 @@ -16,46 +16,55 @@ function Set-OBS3DFilter { [ComponentModel.DefaultBindingProperty("fov")] [double] $FieldOfView, + # The Rotation along the X-axis [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("rot_x")] [double] $RotationX, + # The Rotation along the Y-axis [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("rot_y")] [double] $RotationY, + # The Rotation along the Z-axis [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("rot_z")] [double] $RotationZ, + # The Position along the X-axis [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("pos_x")] [double] $PositionX, + # The Position along the Y-axis [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("pos_y")] [double] $PositionY, + # The Position along the Z-axis [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("pos_z")] [double] $PositionZ, + # The scale of the source along the X-axis [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("scale_x")] [double] $ScaleX, + # The scale of the source along the Y-axis [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("scale_y")] [double] $ScaleY, + # If set, will remove a filter if one already exists. # If this is not provided and the filter already exists, the settings of the filter will be changed. [switch] @@ -72,6 +81,8 @@ function Set-OBS3DFilter { } $IncludeParameter = @() $ExcludeParameter = 'FilterKind','FilterSettings' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -94,6 +105,7 @@ function Set-OBS3DFilter { )) } $DynamicParameters + } process { $myParameters = [Ordered]@{} + $PSBoundParameters @@ -104,6 +116,7 @@ function Set-OBS3DFilter { $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -112,6 +125,7 @@ function Set-OBS3DFilter { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] @@ -128,6 +142,7 @@ function Set-OBS3DFilter { filterSettings = $myParameterData NoResponse = $myParameters["NoResponse"] } + if ($MyParameters["PassThru"]) { $addSplat.Passthru = $MyParameters["PassThru"] if ($MyInvocation.InvocationName -like 'Add-*') { @@ -138,9 +153,11 @@ function Set-OBS3DFilter { } return } + # Add the input. $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -161,6 +178,7 @@ function Set-OBS3DFilter { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Filters/Set-OBSColorFilter.ps1 b/Commands/Filters/Set-OBSColorFilter.ps1 index bfd205d91..165adaf69 100644 --- a/Commands/Filters/Set-OBSColorFilter.ps1 +++ b/Commands/Filters/Set-OBSColorFilter.ps1 @@ -28,46 +28,54 @@ function Set-OBSColorFilter { [ComponentModel.DefaultBindingProperty("opacity")] [double] $Opacity, + # The brightness, as a number between -1 and 1. [Parameter(ValueFromPipelineByPropertyName)] [ValidateRange(-1,1)] [ComponentModel.DefaultBindingProperty("brightness")] [double] $Brightness, + # The constrast, as a number between -4 and 4. [Parameter(ValueFromPipelineByPropertyName)] [ValidateRange(-4,4)] [ComponentModel.DefaultBindingProperty("contrast")] [double] $Contrast, + # The gamma correction, as a number between -3 and 3. [Parameter(ValueFromPipelineByPropertyName)] [ValidateRange(-3,3)] [ComponentModel.DefaultBindingProperty("gamma")] [double] $Gamma, + # The saturation, as a number between -1 and 5. [Parameter(ValueFromPipelineByPropertyName)] [ValidateRange(-1,5)] [ComponentModel.DefaultBindingProperty("saturation")] [double] $Saturation, + # The change in hue, as represented in degrees around a color cicrle [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("hue_shift")] [Alias('Spin')] [double] $Hue, + # Multiply this color by all pixels within the source. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("color_multiply")] [string] $MultiplyColor, + # Add all this color to all pixels within the source. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("color_add")] [string] $AddColor, + # If set, will remove a filter if one already exists. # If this is not provided and the filter already exists, the settings of the filter will be changed. [switch] @@ -84,6 +92,8 @@ function Set-OBSColorFilter { } $IncludeParameter = @() $ExcludeParameter = 'FilterKind','FilterSettings' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -106,14 +116,17 @@ function Set-OBSColorFilter { )) } $DynamicParameters + } begin { filter ToOBSColor { + if ($_ -is [uint32]) { $_ } elseif ($_ -is [string]) { if ($_ -match '^\#[a-f0-9]{3,4}$') { $_ = $_ -replace '[a-f0-9]','$0$0' } + if ($_ -match '^#[a-f0-9]{8}$') { $_ -replace '#','0x' -as [UInt32] } @@ -134,6 +147,7 @@ function Set-OBSColorFilter { $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -142,6 +156,7 @@ function Set-OBSColorFilter { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] @@ -154,9 +169,11 @@ function Set-OBSColorFilter { if ($myParameterData.color_add) { $myParameterData.color_add = $myParameterData.color_add | ToOBSColor } + if ($myParameterData.color_multiply) { $myParameterData.color_multiply = $myParameterData.color_multiply | ToOBSColor } + $addSplat = @{ filterName = $myParameters["FilterName"] @@ -176,11 +193,14 @@ function Set-OBSColorFilter { } return } + # Add the input. $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + if ($PassThru) { return $outputAddedResult } + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -201,6 +221,7 @@ function Set-OBSColorFilter { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Filters/Set-OBSEqualizerFilter.ps1 b/Commands/Filters/Set-OBSEqualizerFilter.ps1 index d9f82f6ec..f464aae7a 100644 --- a/Commands/Filters/Set-OBSEqualizerFilter.ps1 +++ b/Commands/Filters/Set-OBSEqualizerFilter.ps1 @@ -16,18 +16,21 @@ function Set-OBSEqualizerFilter { [ValidateRange(-20,20)] [double] $Low, + # The change in mid frequencies. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("mid")] [ValidateRange(-20,20)] [double] $Mid, + # The change in high frequencies. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("high")] [ValidateRange(-20,20)] [double] $High, + # If set, will remove a filter if one already exists. # If this is not provided and the filter already exists, the settings of the filter will be changed. [switch] @@ -44,6 +47,8 @@ function Set-OBSEqualizerFilter { } $IncludeParameter = @() $ExcludeParameter = 'FilterKind','FilterSettings' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -66,6 +71,7 @@ function Set-OBSEqualizerFilter { )) } $DynamicParameters + } process { $myParameters = [Ordered]@{} + $PSBoundParameters @@ -76,6 +82,7 @@ function Set-OBSEqualizerFilter { $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -84,6 +91,7 @@ function Set-OBSEqualizerFilter { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] @@ -99,6 +107,7 @@ function Set-OBSEqualizerFilter { filterKind = "basic_eq_filter" filterSettings = $myParameterData } + if ($MyParameters["PassThru"]) { $addSplat.Passthru = $MyParameters["PassThru"] if ($MyInvocation.InvocationName -like 'Add-*') { @@ -109,9 +118,11 @@ function Set-OBSEqualizerFilter { } return } + # Add the input. $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -132,6 +143,7 @@ function Set-OBSEqualizerFilter { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Filters/Set-OBSGainFilter.ps1 b/Commands/Filters/Set-OBSGainFilter.ps1 index d0e352ef3..49c273e07 100644 --- a/Commands/Filters/Set-OBSGainFilter.ps1 +++ b/Commands/Filters/Set-OBSGainFilter.ps1 @@ -19,6 +19,7 @@ function Set-OBSGainFilter { [ComponentModel.DefaultBindingProperty("db")] [double] $Gain, + # If set, will remove a filter if one already exists. # If this is not provided and the filter already exists, the settings of the filter will be changed. [switch] @@ -35,6 +36,8 @@ function Set-OBSGainFilter { } $IncludeParameter = @() $ExcludeParameter = 'FilterKind','FilterSettings' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -57,6 +60,7 @@ function Set-OBSGainFilter { )) } $DynamicParameters + } process { $myParameters = [Ordered]@{} + $PSBoundParameters @@ -83,8 +87,10 @@ function Set-OBSGainFilter { } return } + # Add the input. $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -105,6 +111,7 @@ function Set-OBSGainFilter { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Filters/Set-OBSRenderDelayFilter.ps1 b/Commands/Filters/Set-OBSRenderDelayFilter.ps1 index 14c2c75d0..98cea7cf4 100644 --- a/Commands/Filters/Set-OBSRenderDelayFilter.ps1 +++ b/Commands/Filters/Set-OBSRenderDelayFilter.ps1 @@ -18,6 +18,7 @@ function Set-OBSRenderDelayFilter { [Parameter(ValueFromPipelineByPropertyName)] [timespan] $RenderDelay, + # If set, will remove a filter if one already exists. # If this is not provided and the filter already exists, the settings of the filter will be changed. [switch] @@ -34,6 +35,8 @@ function Set-OBSRenderDelayFilter { } $IncludeParameter = @() $ExcludeParameter = 'FilterKind','FilterSettings' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -56,6 +59,7 @@ function Set-OBSRenderDelayFilter { )) } $DynamicParameters + } process { $myParameters = [Ordered]@{} + $PSBoundParameters @@ -90,8 +94,10 @@ function Set-OBSRenderDelayFilter { } return } + # Add the input. $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -112,6 +118,7 @@ function Set-OBSRenderDelayFilter { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Filters/Set-OBSScaleFilter.ps1 b/Commands/Filters/Set-OBSScaleFilter.ps1 index b6b86d62c..e3e51fe10 100644 --- a/Commands/Filters/Set-OBSScaleFilter.ps1 +++ b/Commands/Filters/Set-OBSScaleFilter.ps1 @@ -20,11 +20,13 @@ function Set-OBSScaleFilter { [Alias('Scale')] [string] $Resolution, + # The sampling method. It will default to "lanczos". [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("sampling")] [string] $Sampling = 'lanczos', + # If set, will keep the aspect ratio when scaling. # This is only valid if the sampling method is set to "lanczos". [Parameter(ValueFromPipelineByPropertyName)] @@ -32,6 +34,7 @@ function Set-OBSScaleFilter { [Alias('Undistort')] [switch] $KeepAspectRatio, + # If set, will remove a filter if one already exists. # If this is not provided and the filter already exists, the settings of the filter will be changed. [switch] @@ -48,6 +51,8 @@ function Set-OBSScaleFilter { } $IncludeParameter = @() $ExcludeParameter = 'FilterKind','FilterSettings' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -70,6 +75,7 @@ function Set-OBSScaleFilter { )) } $DynamicParameters + } process { $myParameters = [Ordered]@{} + $PSBoundParameters @@ -96,8 +102,10 @@ function Set-OBSScaleFilter { } return } + # Add the input. $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -118,6 +126,7 @@ function Set-OBSScaleFilter { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Filters/Set-OBSScrollFilter.ps1 b/Commands/Filters/Set-OBSScrollFilter.ps1 index 784625124..cb783b683 100644 --- a/Commands/Filters/Set-OBSScrollFilter.ps1 +++ b/Commands/Filters/Set-OBSScrollFilter.ps1 @@ -19,17 +19,20 @@ function Set-OBSScrollFilter { [Alias('SpeedX', 'Speed_X','HSpeed')] [double] $HorizontalSpeed, + # The vertical scroll speed. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("speed_y")] [Alias('SpeedY', 'Speed_Y','VSpeed')] [double] $VerticalSpeed, + # If set, will not loop [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("loop")] [switch] $NoLoop, + # If provided, will limit the width. [Parameter(ValueFromPipelineByPropertyName)] [ValidateRange(-500, 500)] @@ -37,6 +40,7 @@ function Set-OBSScrollFilter { [Alias('LimitX', 'Limit_CX','WidthLimit')] [double] $LimitWidth, + # If provided, will limit the height. [Parameter(ValueFromPipelineByPropertyName)] [ValidateRange(-500, 500)] @@ -44,6 +48,7 @@ function Set-OBSScrollFilter { [Alias('LimitY', 'Limit_CY','HeightLimit')] [double] $LimitHeight, + # If set, will remove a filter if one already exists. # If this is not provided and the filter already exists, the settings of the filter will be changed. [switch] @@ -60,6 +65,8 @@ function Set-OBSScrollFilter { } $IncludeParameter = @() $ExcludeParameter = 'FilterKind','FilterSettings' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -82,6 +89,7 @@ function Set-OBSScrollFilter { )) } $DynamicParameters + } process { $myParameters = [Ordered]@{} + $PSBoundParameters @@ -92,6 +100,7 @@ function Set-OBSScrollFilter { $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -100,6 +109,7 @@ function Set-OBSScrollFilter { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] @@ -108,6 +118,7 @@ function Set-OBSScrollFilter { } } } + if ($myParameterData["loop"]) { $myParameterData["loop"] = -not $myParameterData["loop"] } @@ -125,6 +136,7 @@ function Set-OBSScrollFilter { filterSettings = $myParameterData NoResponse = $myParameters["NoResponse"] } + if ($MyParameters["PassThru"]) { $addSplat.Passthru = $MyParameters["PassThru"] if ($MyInvocation.InvocationName -like 'Add-*') { @@ -135,8 +147,10 @@ function Set-OBSScrollFilter { } return } + # Add the input. $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -157,6 +171,7 @@ function Set-OBSScrollFilter { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. 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 = diff --git a/Commands/Filters/Set-OBSShaderFilter.ps1 b/Commands/Filters/Set-OBSShaderFilter.ps1 index 0b35da433..a777e7152 100644 --- a/Commands/Filters/Set-OBSShaderFilter.ps1 +++ b/Commands/Filters/Set-OBSShaderFilter.ps1 @@ -8,10 +8,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 + } #> @@ -20,17 +36,20 @@ function Set-OBSShaderFilter { # The text of the shader [Parameter(ValueFromPipelineByPropertyName)] [string]$ShaderText, + # The file path to the shader, or the short file name of the shader. [Parameter(ValueFromPipelineByPropertyName)] [Alias('ShaderName')] [string] $ShaderFile, + # Any other settings for the shader. # To see what the name of a shader setting is, change it in the user interface and then get the input's filters. [Parameter(ValueFromPipelineByPropertyName)] [Alias('ShaderSettings')] [PSObject] $ShaderSetting, + # If set, will remove a filter if one already exists. # If this is not provided and the filter already exists, the settings of the filter will be changed. [switch] @@ -47,6 +66,8 @@ function Set-OBSShaderFilter { } $IncludeParameter = @() $ExcludeParameter = 'FilterKind','FilterSettings' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -69,6 +90,7 @@ function Set-OBSShaderFilter { )) } $DynamicParameters + } process { $myParameters = [Ordered]@{} + $PSBoundParameters @@ -76,13 +98,14 @@ function Set-OBSShaderFilter { if (-not $myParameters["FilterName"]) { $filterName = $myParameters["FilterName"] = "Shader" } + $shaderSettings = [Ordered]@{} if ($ShaderText) { $shaderSettings.shader_text = $ShaderText } 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 = @@ -93,15 +116,19 @@ function Set-OBSShaderFilter { Get-ChildItem -Filter obs-shaderfilter | Get-ChildItem -Filter examples | Get-ChildItem -File # get all of the files in this directory + } + $foundShaderFile = $script:CachedOBSShaderFilters | Where-Object Name -Like "$shaderFile*" | Select-Object -First 1 + if ($foundShaderFile) { $shaderSettings.shader_file_name = $foundShaderFile.FullName -replace "\\", "/" } } } + if ($shaderSetting) { if ($shaderSetting -is [Collections.IDictionary]) { foreach ($kv in $shaderSetting.GetEnumerator()) { @@ -113,6 +140,7 @@ function Set-OBSShaderFilter { } } } + if ($shaderSettings.shader_file_name) { $shaderSettings.from_file = $true } @@ -125,6 +153,7 @@ function Set-OBSShaderFilter { filterSettings = $shaderSettings NoResponse = $myParameters["NoResponse"] } + if ($MyParameters["PassThru"]) { $addSplat.Passthru = $MyParameters["PassThru"] if ($MyInvocation.InvocationName -like 'Add-*') { @@ -135,8 +164,10 @@ function Set-OBSShaderFilter { } return } + # Add the filter. $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -157,6 +188,7 @@ function Set-OBSShaderFilter { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Filters/Set-OBSSharpnessFilter.ps1 b/Commands/Filters/Set-OBSSharpnessFilter.ps1 index 65d7c3d96..002131920 100644 --- a/Commands/Filters/Set-OBSSharpnessFilter.ps1 +++ b/Commands/Filters/Set-OBSSharpnessFilter.ps1 @@ -20,6 +20,7 @@ function Set-OBSSharpnessFilter { [ValidateRange(0,1)] [double] $Sharpness, + # If set, will remove a filter if one already exists. # If this is not provided and the filter already exists, the settings of the filter will be changed. [switch] @@ -36,6 +37,8 @@ function Set-OBSSharpnessFilter { } $IncludeParameter = @() $ExcludeParameter = 'FilterKind','FilterSettings' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -58,6 +61,7 @@ function Set-OBSSharpnessFilter { )) } $DynamicParameters + } process { $myParameters = [Ordered]@{} + $PSBoundParameters @@ -68,6 +72,7 @@ function Set-OBSSharpnessFilter { $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -76,6 +81,7 @@ function Set-OBSSharpnessFilter { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] @@ -92,6 +98,7 @@ function Set-OBSSharpnessFilter { filterSettings = $myParameterData NoResponse = $myParameters["NoResponse"] } + if ($MyParameters["PassThru"]) { $addSplat.Passthru = $MyParameters["PassThru"] if ($MyInvocation.InvocationName -like 'Add-*') { @@ -102,8 +109,10 @@ function Set-OBSSharpnessFilter { } return } + # Add the input. $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -124,6 +133,7 @@ function Set-OBSSharpnessFilter { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Get-OBS.ps1 b/Commands/Get-OBS.ps1 index 106790dda..e212bf890 100644 --- a/Commands/Get-OBS.ps1 +++ b/Commands/Get-OBS.ps1 @@ -10,23 +10,5 @@ function Get-OBS #> param() - if (-not $script:OBSProcess) { - $script:OBSProcess = Get-Process obs* | Where-Object Name -in 'obs', 'obs64', 'obs32' - } - - if (-not $script:OBSProcess) { - Write-Error "OBS is not running" - return - } - - if (-not $script:ObsConnections) { - Write-Error "Not connected to OBS, use Connect-OBS" - return - } - - [PSCustomObject][Ordered]@{ - PSTypeName = 'OBS.PowerShell' - Process = $script:OBSProcess - Connections = $script:ObsConnections.Values - } + $script:OBS } diff --git a/Commands/Requests/Add-OBSInput.ps1 b/Commands/Requests/Add-OBSInput.ps1 index 076152d1a..d19059674 100644 --- a/Commands/Requests/Add-OBSInput.ps1 +++ b/Commands/Requests/Add-OBSInput.ps1 @@ -1,4 +1,5 @@ function Add-OBSInput { + <# .Synopsis @@ -17,10 +18,15 @@ function Add-OBSInput { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene to add the input to as a scene item #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene to add the input to as a scene item #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Name of the new input to created #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] @@ -53,16 +59,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -82,6 +94,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -115,12 +128,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Add-OBSProfile.ps1 b/Commands/Requests/Add-OBSProfile.ps1 index fb3a48ea3..0ac1b3b79 100644 --- a/Commands/Requests/Add-OBSProfile.ps1 +++ b/Commands/Requests/Add-OBSProfile.ps1 @@ -1,4 +1,5 @@ function Add-OBSProfile { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Add-OBSScene.ps1 b/Commands/Requests/Add-OBSScene.ps1 index 7e52aa9e4..c1e3a5867 100644 --- a/Commands/Requests/Add-OBSScene.ps1 +++ b/Commands/Requests/Add-OBSScene.ps1 @@ -1,4 +1,5 @@ function Add-OBSScene { + <# .Synopsis @@ -14,6 +15,7 @@ function Add-OBSScene { #> [Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'CreateScene')] [Alias('obs.powershell.websocket.CreateScene')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name for the new scene #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] @@ -32,16 +34,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +69,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +103,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Add-OBSSceneCollection.ps1 b/Commands/Requests/Add-OBSSceneCollection.ps1 index 9a12a5bb0..dce086f7c 100644 --- a/Commands/Requests/Add-OBSSceneCollection.ps1 +++ b/Commands/Requests/Add-OBSSceneCollection.ps1 @@ -1,4 +1,5 @@ function Add-OBSSceneCollection { + <# .Synopsis @@ -34,16 +35,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -63,6 +70,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -96,12 +104,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Add-OBSSceneItem.ps1 b/Commands/Requests/Add-OBSSceneItem.ps1 index c6cca7272..5c9727334 100644 --- a/Commands/Requests/Add-OBSSceneItem.ps1 +++ b/Commands/Requests/Add-OBSSceneItem.ps1 @@ -1,4 +1,5 @@ function Add-OBSSceneItem { + <# .Synopsis @@ -20,15 +21,25 @@ function Add-OBSSceneItem { [Alias('Add-OBSSceneSource')] param( <# Name of the scene to create the new item in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene to create the new item in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Name of the source to add to the scene #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source to add to the scene #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Enable state to apply to the scene item on creation #> [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemEnabled')] @@ -46,16 +57,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -75,6 +92,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -108,12 +126,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Add-OBSSourceFilter.ps1 b/Commands/Requests/Add-OBSSourceFilter.ps1 index 9324ff70b..7b30839f4 100644 --- a/Commands/Requests/Add-OBSSourceFilter.ps1 +++ b/Commands/Requests/Add-OBSSourceFilter.ps1 @@ -1,4 +1,5 @@ function Add-OBSSourceFilter { + <# .Synopsis @@ -16,10 +17,15 @@ function Add-OBSSourceFilter { [Alias('obs.powershell.websocket.CreateSourceFilter')] param( <# Name of the source to add the filter to #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source to add the filter to #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Name of the new filter to be created #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('filterName')] @@ -47,16 +53,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -76,6 +88,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -109,12 +122,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Copy-OBSSceneItem.ps1 b/Commands/Requests/Copy-OBSSceneItem.ps1 index 39a8cfd19..1fcc1ba24 100644 --- a/Commands/Requests/Copy-OBSSceneItem.ps1 +++ b/Commands/Requests/Copy-OBSSceneItem.ps1 @@ -1,4 +1,5 @@ function Copy-OBSSceneItem { + <# .Synopsis @@ -19,10 +20,15 @@ function Copy-OBSSceneItem { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -34,6 +40,11 @@ $SceneItemId, [ComponentModel.DefaultBindingProperty('destinationSceneName')] [string] $DestinationSceneName, +<# UUID of the scene to create the duplicated item in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('destinationSceneUuid')] +[string] +$DestinationSceneUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -46,16 +57,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -75,6 +92,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -108,12 +126,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSCurrentPreviewScene.ps1 b/Commands/Requests/Get-OBSCurrentPreviewScene.ps1 index 77f9fdaa4..afb6cd41f 100644 --- a/Commands/Requests/Get-OBSCurrentPreviewScene.ps1 +++ b/Commands/Requests/Get-OBSCurrentPreviewScene.ps1 @@ -1,4 +1,5 @@ function Get-OBSCurrentPreviewScene { + <# .Synopsis @@ -9,6 +10,8 @@ function Get-OBSCurrentPreviewScene { Only available when studio mode is enabled. + Note: This request is slated to have the `currentPreview`-prefixed fields removed from in an upcoming RPC version. + Get-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type GetCurrentPreviewScene. .Example @@ -32,16 +35,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +70,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +104,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSCurrentProgramScene.ps1 b/Commands/Requests/Get-OBSCurrentProgramScene.ps1 index dd13335a6..81b4de499 100644 --- a/Commands/Requests/Get-OBSCurrentProgramScene.ps1 +++ b/Commands/Requests/Get-OBSCurrentProgramScene.ps1 @@ -1,4 +1,5 @@ function Get-OBSCurrentProgramScene { + <# .Synopsis @@ -7,6 +8,8 @@ function Get-OBSCurrentProgramScene { .Description Gets the current program scene. + Note: This request is slated to have the `currentProgram`-prefixed fields removed from in an upcoming RPC version. + Get-OBSCurrentProgramScene calls the OBS WebSocket with a request of type GetCurrentProgramScene. .Example @@ -30,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSCurrentSceneTransition.ps1 b/Commands/Requests/Get-OBSCurrentSceneTransition.ps1 index 857c93acc..a82662bc3 100644 --- a/Commands/Requests/Get-OBSCurrentSceneTransition.ps1 +++ b/Commands/Requests/Get-OBSCurrentSceneTransition.ps1 @@ -1,4 +1,5 @@ function Get-OBSCurrentSceneTransition { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSCurrentSceneTransitionCursor.ps1 b/Commands/Requests/Get-OBSCurrentSceneTransitionCursor.ps1 index cb1164644..ab59237a3 100644 --- a/Commands/Requests/Get-OBSCurrentSceneTransitionCursor.ps1 +++ b/Commands/Requests/Get-OBSCurrentSceneTransitionCursor.ps1 @@ -1,4 +1,5 @@ function Get-OBSCurrentSceneTransitionCursor { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSGroup.ps1 b/Commands/Requests/Get-OBSGroup.ps1 index 81fb77c04..6a691d6f0 100644 --- a/Commands/Requests/Get-OBSGroup.ps1 +++ b/Commands/Requests/Get-OBSGroup.ps1 @@ -1,4 +1,5 @@ function Get-OBSGroup { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSGroupSceneItem.ps1 b/Commands/Requests/Get-OBSGroupSceneItem.ps1 index 41624a6d3..50ba259c2 100644 --- a/Commands/Requests/Get-OBSGroupSceneItem.ps1 +++ b/Commands/Requests/Get-OBSGroupSceneItem.ps1 @@ -1,4 +1,5 @@ function Get-OBSGroupSceneItem { + <# .Synopsis @@ -21,10 +22,15 @@ function Get-OBSGroupSceneItem { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the group to get the items of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the group to get the items of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -37,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSHotkey.ps1 b/Commands/Requests/Get-OBSHotkey.ps1 index 4bcd10544..107fb9c84 100644 --- a/Commands/Requests/Get-OBSHotkey.ps1 +++ b/Commands/Requests/Get-OBSHotkey.ps1 @@ -1,11 +1,14 @@ function Get-OBSHotkey { + <# .Synopsis Get-OBSHotkey : GetHotkeyList .Description - Gets an array of all hotkey names in OBS + Gets an array of all hotkey names in OBS. + + Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. Get-OBSHotkey calls the OBS WebSocket with a request of type GetHotkeyList. @@ -30,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInput.ps1 b/Commands/Requests/Get-OBSInput.ps1 index 3648c9121..7d8d5233f 100644 --- a/Commands/Requests/Get-OBSInput.ps1 +++ b/Commands/Requests/Get-OBSInput.ps1 @@ -1,4 +1,5 @@ function Get-OBSInput { + <# .Synopsis @@ -33,16 +34,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +69,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +103,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputAudioBalance.ps1 b/Commands/Requests/Get-OBSInputAudioBalance.ps1 index c61943ebb..aba03c388 100644 --- a/Commands/Requests/Get-OBSInputAudioBalance.ps1 +++ b/Commands/Requests/Get-OBSInputAudioBalance.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputAudioBalance { + <# .Synopsis @@ -17,10 +18,15 @@ function Get-OBSInputAudioBalance { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the input to get the audio balance of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to get the audio balance of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -33,16 +39,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +74,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +108,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputAudioMonitorType.ps1 b/Commands/Requests/Get-OBSInputAudioMonitorType.ps1 index 243f3dc75..a85c54484 100644 --- a/Commands/Requests/Get-OBSInputAudioMonitorType.ps1 +++ b/Commands/Requests/Get-OBSInputAudioMonitorType.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputAudioMonitorType { + <# .Synopsis @@ -23,10 +24,15 @@ function Get-OBSInputAudioMonitorType { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the input to get the audio monitor type of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to get the audio monitor type of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -39,16 +45,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -68,6 +80,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -101,12 +114,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputAudioSyncOffset.ps1 b/Commands/Requests/Get-OBSInputAudioSyncOffset.ps1 index 08c6952a1..56ad3f317 100644 --- a/Commands/Requests/Get-OBSInputAudioSyncOffset.ps1 +++ b/Commands/Requests/Get-OBSInputAudioSyncOffset.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputAudioSyncOffset { + <# .Synopsis @@ -19,10 +20,15 @@ function Get-OBSInputAudioSyncOffset { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the input to get the audio sync offset of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to get the audio sync offset of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -35,16 +41,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -64,6 +76,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -97,12 +110,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputAudioTracks.ps1 b/Commands/Requests/Get-OBSInputAudioTracks.ps1 index f9d423969..e1b15421d 100644 --- a/Commands/Requests/Get-OBSInputAudioTracks.ps1 +++ b/Commands/Requests/Get-OBSInputAudioTracks.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputAudioTracks { + <# .Synopsis @@ -17,10 +18,15 @@ function Get-OBSInputAudioTracks { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the input #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -33,16 +39,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +74,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +108,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputDefaultSettings.ps1 b/Commands/Requests/Get-OBSInputDefaultSettings.ps1 index 08ca06088..869d20e29 100644 --- a/Commands/Requests/Get-OBSInputDefaultSettings.ps1 +++ b/Commands/Requests/Get-OBSInputDefaultSettings.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputDefaultSettings { + <# .Synopsis @@ -33,16 +34,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +69,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +103,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputKind.ps1 b/Commands/Requests/Get-OBSInputKind.ps1 index 755a042fa..8168a4b78 100644 --- a/Commands/Requests/Get-OBSInputKind.ps1 +++ b/Commands/Requests/Get-OBSInputKind.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputKind { + <# .Synopsis @@ -33,16 +34,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +69,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +103,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputMute.ps1 b/Commands/Requests/Get-OBSInputMute.ps1 index 5f806b3a3..0e24c310b 100644 --- a/Commands/Requests/Get-OBSInputMute.ps1 +++ b/Commands/Requests/Get-OBSInputMute.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputMute { + <# .Synopsis @@ -17,10 +18,15 @@ function Get-OBSInputMute { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of input to get the mute state of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of input to get the mute state of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -33,16 +39,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +74,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +108,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputPropertiesListPropertyItems.ps1 b/Commands/Requests/Get-OBSInputPropertiesListPropertyItems.ps1 index bda30a9e1..fa28406dd 100644 --- a/Commands/Requests/Get-OBSInputPropertiesListPropertyItems.ps1 +++ b/Commands/Requests/Get-OBSInputPropertiesListPropertyItems.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputPropertiesListPropertyItems { + <# .Synopsis @@ -19,10 +20,15 @@ function Get-OBSInputPropertiesListPropertyItems { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the input #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# Name of the list property to get the items of #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('propertyName')] @@ -40,16 +46,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -69,6 +81,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -102,12 +115,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputSettings.ps1 b/Commands/Requests/Get-OBSInputSettings.ps1 index 8b5736d95..be880a69f 100644 --- a/Commands/Requests/Get-OBSInputSettings.ps1 +++ b/Commands/Requests/Get-OBSInputSettings.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputSettings { + <# .Synopsis @@ -19,10 +20,15 @@ function Get-OBSInputSettings { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the input to get the settings of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to get the settings of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -35,16 +41,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -64,6 +76,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -97,12 +110,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSInputVolume.ps1 b/Commands/Requests/Get-OBSInputVolume.ps1 index 18b89fedb..37230b6a9 100644 --- a/Commands/Requests/Get-OBSInputVolume.ps1 +++ b/Commands/Requests/Get-OBSInputVolume.ps1 @@ -1,4 +1,5 @@ function Get-OBSInputVolume { + <# .Synopsis @@ -17,10 +18,15 @@ function Get-OBSInputVolume { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the input to get the volume of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to get the volume of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -33,16 +39,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +74,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +108,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSLastReplayBufferReplay.ps1 b/Commands/Requests/Get-OBSLastReplayBufferReplay.ps1 index 450995f34..4cf3f9ddf 100644 --- a/Commands/Requests/Get-OBSLastReplayBufferReplay.ps1 +++ b/Commands/Requests/Get-OBSLastReplayBufferReplay.ps1 @@ -1,4 +1,5 @@ function Get-OBSLastReplayBufferReplay { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSMediaInputStatus.ps1 b/Commands/Requests/Get-OBSMediaInputStatus.ps1 index cf98e1f8a..e205174a3 100644 --- a/Commands/Requests/Get-OBSMediaInputStatus.ps1 +++ b/Commands/Requests/Get-OBSMediaInputStatus.ps1 @@ -1,4 +1,5 @@ function Get-OBSMediaInputStatus { + <# .Synopsis @@ -28,10 +29,15 @@ function Get-OBSMediaInputStatus { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the media input #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the media input #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -44,16 +50,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -73,6 +85,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -106,12 +119,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSMonitor.ps1 b/Commands/Requests/Get-OBSMonitor.ps1 index a8f1ff222..347d3d75f 100644 --- a/Commands/Requests/Get-OBSMonitor.ps1 +++ b/Commands/Requests/Get-OBSMonitor.ps1 @@ -1,4 +1,5 @@ function Get-OBSMonitor { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSOutput.ps1 b/Commands/Requests/Get-OBSOutput.ps1 index ee45dadc7..8cde0c6a3 100644 --- a/Commands/Requests/Get-OBSOutput.ps1 +++ b/Commands/Requests/Get-OBSOutput.ps1 @@ -1,4 +1,5 @@ function Get-OBSOutput { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSOutputSettings.ps1 b/Commands/Requests/Get-OBSOutputSettings.ps1 index b2231f136..5a84e90df 100644 --- a/Commands/Requests/Get-OBSOutputSettings.ps1 +++ b/Commands/Requests/Get-OBSOutputSettings.ps1 @@ -1,4 +1,5 @@ function Get-OBSOutputSettings { + <# .Synopsis @@ -33,16 +34,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +69,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +103,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSOutputStatus.ps1 b/Commands/Requests/Get-OBSOutputStatus.ps1 index c6e0d3597..77e5eeb88 100644 --- a/Commands/Requests/Get-OBSOutputStatus.ps1 +++ b/Commands/Requests/Get-OBSOutputStatus.ps1 @@ -1,4 +1,5 @@ function Get-OBSOutputStatus { + <# .Synopsis @@ -33,16 +34,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +69,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +103,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSPersistentData.ps1 b/Commands/Requests/Get-OBSPersistentData.ps1 index 9c2cda444..07ec620db 100644 --- a/Commands/Requests/Get-OBSPersistentData.ps1 +++ b/Commands/Requests/Get-OBSPersistentData.ps1 @@ -1,4 +1,5 @@ function Get-OBSPersistentData { + <# .Synopsis @@ -38,16 +39,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -67,6 +74,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -100,12 +108,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSProfile.ps1 b/Commands/Requests/Get-OBSProfile.ps1 index a323b938d..c80a5618f 100644 --- a/Commands/Requests/Get-OBSProfile.ps1 +++ b/Commands/Requests/Get-OBSProfile.ps1 @@ -1,4 +1,5 @@ function Get-OBSProfile { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSProfileParameter.ps1 b/Commands/Requests/Get-OBSProfileParameter.ps1 index aa5f65265..529b14316 100644 --- a/Commands/Requests/Get-OBSProfileParameter.ps1 +++ b/Commands/Requests/Get-OBSProfileParameter.ps1 @@ -1,4 +1,5 @@ function Get-OBSProfileParameter { + <# .Synopsis @@ -38,16 +39,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -67,6 +74,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -100,12 +108,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSRecordDirectory.ps1 b/Commands/Requests/Get-OBSRecordDirectory.ps1 index 230b4821c..816050643 100644 --- a/Commands/Requests/Get-OBSRecordDirectory.ps1 +++ b/Commands/Requests/Get-OBSRecordDirectory.ps1 @@ -1,4 +1,5 @@ function Get-OBSRecordDirectory { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSRecordStatus.ps1 b/Commands/Requests/Get-OBSRecordStatus.ps1 index 99d19b212..4833beb1f 100644 --- a/Commands/Requests/Get-OBSRecordStatus.ps1 +++ b/Commands/Requests/Get-OBSRecordStatus.ps1 @@ -1,4 +1,5 @@ function Get-OBSRecordStatus { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSReplayBufferStatus.ps1 b/Commands/Requests/Get-OBSReplayBufferStatus.ps1 index 7a4358033..26066d7d5 100644 --- a/Commands/Requests/Get-OBSReplayBufferStatus.ps1 +++ b/Commands/Requests/Get-OBSReplayBufferStatus.ps1 @@ -1,4 +1,5 @@ function Get-OBSReplayBufferStatus { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSScene.ps1 b/Commands/Requests/Get-OBSScene.ps1 index 206a14753..b725d03fa 100644 --- a/Commands/Requests/Get-OBSScene.ps1 +++ b/Commands/Requests/Get-OBSScene.ps1 @@ -1,4 +1,5 @@ function Get-OBSScene { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneCollection.ps1 b/Commands/Requests/Get-OBSSceneCollection.ps1 index d8bbd1f37..304445c34 100644 --- a/Commands/Requests/Get-OBSSceneCollection.ps1 +++ b/Commands/Requests/Get-OBSSceneCollection.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneCollection { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneItem.ps1 b/Commands/Requests/Get-OBSSceneItem.ps1 index 8abd46d4c..e9e8c19b5 100644 --- a/Commands/Requests/Get-OBSSceneItem.ps1 +++ b/Commands/Requests/Get-OBSSceneItem.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneItem { + <# .Synopsis @@ -19,10 +20,15 @@ function Get-OBSSceneItem { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene to get the items of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene to get the items of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -35,16 +41,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -64,6 +76,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -97,12 +110,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneItemBlendMode.ps1 b/Commands/Requests/Get-OBSSceneItemBlendMode.ps1 index a580607c2..fe813050b 100644 --- a/Commands/Requests/Get-OBSSceneItemBlendMode.ps1 +++ b/Commands/Requests/Get-OBSSceneItemBlendMode.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneItemBlendMode { + <# .Synopsis @@ -29,10 +30,15 @@ function Get-OBSSceneItemBlendMode { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -51,16 +57,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -80,6 +92,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -113,12 +126,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneItemEnabled.ps1 b/Commands/Requests/Get-OBSSceneItemEnabled.ps1 index 6043058f0..a56391d5f 100644 --- a/Commands/Requests/Get-OBSSceneItemEnabled.ps1 +++ b/Commands/Requests/Get-OBSSceneItemEnabled.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneItemEnabled { + <# .Synopsis @@ -19,10 +20,15 @@ function Get-OBSSceneItemEnabled { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -41,16 +47,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -70,6 +82,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -103,12 +116,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneItemId.ps1 b/Commands/Requests/Get-OBSSceneItemId.ps1 index 2b6e96af3..0ebae3fc6 100644 --- a/Commands/Requests/Get-OBSSceneItemId.ps1 +++ b/Commands/Requests/Get-OBSSceneItemId.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneItemId { + <# .Synopsis @@ -19,10 +20,15 @@ function Get-OBSSceneItemId { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene or group to search in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene or group to search in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Name of the source to find #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] @@ -46,16 +52,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -75,6 +87,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -108,12 +121,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneItemIndex.ps1 b/Commands/Requests/Get-OBSSceneItemIndex.ps1 index 8c0b462dc..1e40ee985 100644 --- a/Commands/Requests/Get-OBSSceneItemIndex.ps1 +++ b/Commands/Requests/Get-OBSSceneItemIndex.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneItemIndex { + <# .Synopsis @@ -21,10 +22,15 @@ function Get-OBSSceneItemIndex { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -43,16 +49,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -72,6 +84,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -105,12 +118,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneItemLocked.ps1 b/Commands/Requests/Get-OBSSceneItemLocked.ps1 index a93baf63a..9bb27b9ac 100644 --- a/Commands/Requests/Get-OBSSceneItemLocked.ps1 +++ b/Commands/Requests/Get-OBSSceneItemLocked.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneItemLocked { + <# .Synopsis @@ -19,10 +20,15 @@ function Get-OBSSceneItemLocked { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -41,16 +47,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -70,6 +82,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -103,12 +116,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneItemSource.ps1 b/Commands/Requests/Get-OBSSceneItemSource.ps1 new file mode 100644 index 000000000..11c33da04 --- /dev/null +++ b/Commands/Requests/Get-OBSSceneItemSource.ps1 @@ -0,0 +1,129 @@ +function Get-OBSSceneItemSource { + +<# +.Synopsis + + Get-OBSSceneItemSource : GetSceneItemSource + +.Description + Gets the source associated with a scene item. + + + Get-OBSSceneItemSource calls the OBS WebSocket with a request of type GetSceneItemSource. +.Link + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource +#> +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneItemSource')] +[Alias('obs.powershell.websocket.GetSceneItemSource')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +<# Name of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, +<# Numeric ID of the scene item #> +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + diff --git a/Commands/Requests/Get-OBSSceneItemTransform.ps1 b/Commands/Requests/Get-OBSSceneItemTransform.ps1 index a6fdff268..d76d3721a 100644 --- a/Commands/Requests/Get-OBSSceneItemTransform.ps1 +++ b/Commands/Requests/Get-OBSSceneItemTransform.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneItemTransform { + <# .Synopsis @@ -19,10 +20,15 @@ function Get-OBSSceneItemTransform { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -41,16 +47,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -70,6 +82,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -103,12 +116,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneSceneTransitionOverride.ps1 b/Commands/Requests/Get-OBSSceneSceneTransitionOverride.ps1 index a826f3f15..765f55dd6 100644 --- a/Commands/Requests/Get-OBSSceneSceneTransitionOverride.ps1 +++ b/Commands/Requests/Get-OBSSceneSceneTransitionOverride.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneSceneTransitionOverride { + <# .Synopsis @@ -7,6 +8,8 @@ function Get-OBSSceneSceneTransitionOverride { .Description Gets the scene transition overridden for a scene. + Note: A transition UUID response field is not currently able to be implemented as of 2024-1-18. + Get-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type GetSceneSceneTransitionOverride. .Link @@ -17,10 +20,15 @@ function Get-OBSSceneSceneTransitionOverride { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the scene #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -33,16 +41,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +76,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +110,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSceneTransition.ps1 b/Commands/Requests/Get-OBSSceneTransition.ps1 index b06dfb467..01dec7d4d 100644 --- a/Commands/Requests/Get-OBSSceneTransition.ps1 +++ b/Commands/Requests/Get-OBSSceneTransition.ps1 @@ -1,4 +1,5 @@ function Get-OBSSceneTransition { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSourceActive.ps1 b/Commands/Requests/Get-OBSSourceActive.ps1 index 1f148cd23..7ce31c9fd 100644 --- a/Commands/Requests/Get-OBSSourceActive.ps1 +++ b/Commands/Requests/Get-OBSSourceActive.ps1 @@ -1,4 +1,5 @@ function Get-OBSSourceActive { + <# .Synopsis @@ -19,10 +20,15 @@ function Get-OBSSourceActive { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the source to get the active state of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source to get the active state of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -35,16 +41,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -64,6 +76,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -97,12 +110,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSourceFilter.ps1 b/Commands/Requests/Get-OBSSourceFilter.ps1 index 327dd556d..d98fd21c5 100644 --- a/Commands/Requests/Get-OBSSourceFilter.ps1 +++ b/Commands/Requests/Get-OBSSourceFilter.ps1 @@ -1,4 +1,5 @@ function Get-OBSSourceFilter { + <# .Synopsis @@ -17,10 +18,15 @@ function Get-OBSSourceFilter { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the source #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Name of the filter #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('filterName')] @@ -38,16 +44,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -67,6 +79,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -100,12 +113,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSourceFilterDefaultSettings.ps1 b/Commands/Requests/Get-OBSSourceFilterDefaultSettings.ps1 index 3bf83c600..46d3dae6d 100644 --- a/Commands/Requests/Get-OBSSourceFilterDefaultSettings.ps1 +++ b/Commands/Requests/Get-OBSSourceFilterDefaultSettings.ps1 @@ -1,4 +1,5 @@ function Get-OBSSourceFilterDefaultSettings { + <# .Synopsis @@ -33,16 +34,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +69,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +103,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSourceFilterKind.ps1 b/Commands/Requests/Get-OBSSourceFilterKind.ps1 new file mode 100644 index 000000000..dcef4c53e --- /dev/null +++ b/Commands/Requests/Get-OBSSourceFilterKind.ps1 @@ -0,0 +1,117 @@ +function Get-OBSSourceFilterKind { + +<# +.Synopsis + + Get-OBSSourceFilterKind : GetSourceFilterKindList + +.Description + Gets an array of all available source filter kinds. + + Similar to `GetInputKindList` + + + Get-OBSSourceFilterKind calls the OBS WebSocket with a request of type GetSourceFilterKindList. +.Example + Get-OBSSourceFilterKind +.Link + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist +#> +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSourceFilterKindList')] +[Alias('obs.powershell.websocket.GetSourceFilterKindList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + diff --git a/Commands/Requests/Get-OBSSourceFilterList.ps1 b/Commands/Requests/Get-OBSSourceFilterList.ps1 index 5539ede90..87f55f5d5 100644 --- a/Commands/Requests/Get-OBSSourceFilterList.ps1 +++ b/Commands/Requests/Get-OBSSourceFilterList.ps1 @@ -1,4 +1,5 @@ function Get-OBSSourceFilterList { + <# .Synopsis @@ -17,10 +18,15 @@ function Get-OBSSourceFilterList { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the source #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -33,16 +39,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +74,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +108,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSourceScreenshot.ps1 b/Commands/Requests/Get-OBSSourceScreenshot.ps1 index 5bd6fe849..d80b3acd7 100644 --- a/Commands/Requests/Get-OBSSourceScreenshot.ps1 +++ b/Commands/Requests/Get-OBSSourceScreenshot.ps1 @@ -1,4 +1,5 @@ function Get-OBSSourceScreenshot { + <# .Synopsis @@ -22,10 +23,15 @@ function Get-OBSSourceScreenshot { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the source to take a screenshot of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source to take a screenshot of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Image compression format to use. Use `GetVersion` to get compatible image formats #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('imageFormat')] @@ -61,16 +67,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -90,6 +102,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -123,12 +136,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSSpecialInputs.ps1 b/Commands/Requests/Get-OBSSpecialInputs.ps1 index 4898b2525..66bc721b6 100644 --- a/Commands/Requests/Get-OBSSpecialInputs.ps1 +++ b/Commands/Requests/Get-OBSSpecialInputs.ps1 @@ -1,4 +1,5 @@ function Get-OBSSpecialInputs { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSStats.ps1 b/Commands/Requests/Get-OBSStats.ps1 index 5988e5e2f..18aaebee2 100644 --- a/Commands/Requests/Get-OBSStats.ps1 +++ b/Commands/Requests/Get-OBSStats.ps1 @@ -1,4 +1,5 @@ function Get-OBSStats { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSStreamServiceSettings.ps1 b/Commands/Requests/Get-OBSStreamServiceSettings.ps1 index c682b8b3a..c33007df9 100644 --- a/Commands/Requests/Get-OBSStreamServiceSettings.ps1 +++ b/Commands/Requests/Get-OBSStreamServiceSettings.ps1 @@ -1,4 +1,5 @@ function Get-OBSStreamServiceSettings { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSStreamStatus.ps1 b/Commands/Requests/Get-OBSStreamStatus.ps1 index 2e2335af3..e84ec4090 100644 --- a/Commands/Requests/Get-OBSStreamStatus.ps1 +++ b/Commands/Requests/Get-OBSStreamStatus.ps1 @@ -1,4 +1,5 @@ function Get-OBSStreamStatus { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSStudioModeEnabled.ps1 b/Commands/Requests/Get-OBSStudioModeEnabled.ps1 index d284352be..ce7b6afaa 100644 --- a/Commands/Requests/Get-OBSStudioModeEnabled.ps1 +++ b/Commands/Requests/Get-OBSStudioModeEnabled.ps1 @@ -1,4 +1,5 @@ function Get-OBSStudioModeEnabled { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSTransitionKind.ps1 b/Commands/Requests/Get-OBSTransitionKind.ps1 index b0fae32b7..3cf734378 100644 --- a/Commands/Requests/Get-OBSTransitionKind.ps1 +++ b/Commands/Requests/Get-OBSTransitionKind.ps1 @@ -1,4 +1,5 @@ function Get-OBSTransitionKind { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSVersion.ps1 b/Commands/Requests/Get-OBSVersion.ps1 index 8d60cd154..4b9a92c56 100644 --- a/Commands/Requests/Get-OBSVersion.ps1 +++ b/Commands/Requests/Get-OBSVersion.ps1 @@ -1,4 +1,5 @@ function Get-OBSVersion { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSVideoSettings.ps1 b/Commands/Requests/Get-OBSVideoSettings.ps1 index 0c88e9dba..d18d70652 100644 --- a/Commands/Requests/Get-OBSVideoSettings.ps1 +++ b/Commands/Requests/Get-OBSVideoSettings.ps1 @@ -1,4 +1,5 @@ function Get-OBSVideoSettings { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Get-OBSVirtualCamStatus.ps1 b/Commands/Requests/Get-OBSVirtualCamStatus.ps1 index b7d3271e3..ba7b3aaba 100644 --- a/Commands/Requests/Get-OBSVirtualCamStatus.ps1 +++ b/Commands/Requests/Get-OBSVirtualCamStatus.ps1 @@ -1,4 +1,5 @@ function Get-OBSVirtualCamStatus { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Open-OBSInputFiltersDialog.ps1 b/Commands/Requests/Open-OBSInputFiltersDialog.ps1 index 9f3656c26..d9cb23027 100644 --- a/Commands/Requests/Open-OBSInputFiltersDialog.ps1 +++ b/Commands/Requests/Open-OBSInputFiltersDialog.ps1 @@ -1,4 +1,5 @@ function Open-OBSInputFiltersDialog { + <# .Synopsis @@ -16,10 +17,15 @@ function Open-OBSInputFiltersDialog { [Alias('obs.powershell.websocket.OpenInputFiltersDialog')] param( <# Name of the input to open the dialog of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to open the dialog of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -32,16 +38,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +73,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +107,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Open-OBSInputInteractDialog.ps1 b/Commands/Requests/Open-OBSInputInteractDialog.ps1 index 01bfffe27..3ddf11a58 100644 --- a/Commands/Requests/Open-OBSInputInteractDialog.ps1 +++ b/Commands/Requests/Open-OBSInputInteractDialog.ps1 @@ -1,4 +1,5 @@ function Open-OBSInputInteractDialog { + <# .Synopsis @@ -16,10 +17,15 @@ function Open-OBSInputInteractDialog { [Alias('obs.powershell.websocket.OpenInputInteractDialog')] param( <# Name of the input to open the dialog of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to open the dialog of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -32,16 +38,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +73,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +107,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Open-OBSInputPropertiesDialog.ps1 b/Commands/Requests/Open-OBSInputPropertiesDialog.ps1 index 03a0e7c3c..f914a2ba6 100644 --- a/Commands/Requests/Open-OBSInputPropertiesDialog.ps1 +++ b/Commands/Requests/Open-OBSInputPropertiesDialog.ps1 @@ -1,4 +1,5 @@ function Open-OBSInputPropertiesDialog { + <# .Synopsis @@ -16,10 +17,15 @@ function Open-OBSInputPropertiesDialog { [Alias('obs.powershell.websocket.OpenInputPropertiesDialog')] param( <# Name of the input to open the dialog of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to open the dialog of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -32,16 +38,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +73,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +107,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Open-OBSSourceProjector.ps1 b/Commands/Requests/Open-OBSSourceProjector.ps1 index df5c1dd76..251d5c12e 100644 --- a/Commands/Requests/Open-OBSSourceProjector.ps1 +++ b/Commands/Requests/Open-OBSSourceProjector.ps1 @@ -1,4 +1,5 @@ function Open-OBSSourceProjector { + <# .Synopsis @@ -18,10 +19,15 @@ function Open-OBSSourceProjector { [Alias('obs.powershell.websocket.OpenSourceProjector')] param( <# Name of the source to open a projector for #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source to open a projector for #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Monitor index, use `GetMonitorList` to obtain index #> [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('monitorIndex')] @@ -44,16 +50,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -73,6 +85,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -106,12 +119,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Open-OBSVideoMixProjector.ps1 b/Commands/Requests/Open-OBSVideoMixProjector.ps1 index 6f12e0534..39e9fdec5 100644 --- a/Commands/Requests/Open-OBSVideoMixProjector.ps1 +++ b/Commands/Requests/Open-OBSVideoMixProjector.ps1 @@ -1,4 +1,5 @@ function Open-OBSVideoMixProjector { + <# .Synopsis @@ -50,16 +51,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -79,6 +86,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -112,12 +120,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Remove-OBSInput.ps1 b/Commands/Requests/Remove-OBSInput.ps1 index 90e2c61a1..6a10c9c7e 100644 --- a/Commands/Requests/Remove-OBSInput.ps1 +++ b/Commands/Requests/Remove-OBSInput.ps1 @@ -1,4 +1,5 @@ function Remove-OBSInput { + <# .Synopsis @@ -18,10 +19,15 @@ function Remove-OBSInput { [Alias('obs.powershell.websocket.RemoveInput')] param( <# Name of the input to remove #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to remove #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -34,16 +40,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -63,6 +75,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -96,12 +109,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Remove-OBSProfile.ps1 b/Commands/Requests/Remove-OBSProfile.ps1 index b82a3e2a9..c525593ee 100644 --- a/Commands/Requests/Remove-OBSProfile.ps1 +++ b/Commands/Requests/Remove-OBSProfile.ps1 @@ -1,4 +1,5 @@ function Remove-OBSProfile { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Remove-OBSScene.ps1 b/Commands/Requests/Remove-OBSScene.ps1 index f7c41b164..78aa7ea9f 100644 --- a/Commands/Requests/Remove-OBSScene.ps1 +++ b/Commands/Requests/Remove-OBSScene.ps1 @@ -1,4 +1,5 @@ function Remove-OBSScene { + <# .Synopsis @@ -16,10 +17,15 @@ function Remove-OBSScene { [Alias('obs.powershell.websocket.RemoveScene')] param( <# Name of the scene to remove #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene to remove #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -32,16 +38,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +73,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +107,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Remove-OBSSceneItem.ps1 b/Commands/Requests/Remove-OBSSceneItem.ps1 index d14f8b685..93554da63 100644 --- a/Commands/Requests/Remove-OBSSceneItem.ps1 +++ b/Commands/Requests/Remove-OBSSceneItem.ps1 @@ -1,4 +1,5 @@ function Remove-OBSSceneItem { + <# .Synopsis @@ -18,10 +19,15 @@ function Remove-OBSSceneItem { [Alias('obs.powershell.websocket.RemoveSceneItem')] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -40,16 +46,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -69,6 +81,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -102,12 +115,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Remove-OBSSourceFilter.ps1 b/Commands/Requests/Remove-OBSSourceFilter.ps1 index fa4cfee9b..afc9951da 100644 --- a/Commands/Requests/Remove-OBSSourceFilter.ps1 +++ b/Commands/Requests/Remove-OBSSourceFilter.ps1 @@ -1,4 +1,5 @@ function Remove-OBSSourceFilter { + <# .Synopsis @@ -16,10 +17,15 @@ function Remove-OBSSourceFilter { [Alias('obs.powershell.websocket.RemoveSourceFilter')] param( <# Name of the source the filter is on #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source the filter is on #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Name of the filter to remove #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('filterName')] @@ -37,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Resume-OBSRecord.ps1 b/Commands/Requests/Resume-OBSRecord.ps1 index b6119ec68..74ebf1dc7 100644 --- a/Commands/Requests/Resume-OBSRecord.ps1 +++ b/Commands/Requests/Resume-OBSRecord.ps1 @@ -1,4 +1,5 @@ function Resume-OBSRecord { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Save-OBSReplayBuffer.ps1 b/Commands/Requests/Save-OBSReplayBuffer.ps1 index acce9fac6..a5b3f3a5c 100644 --- a/Commands/Requests/Save-OBSReplayBuffer.ps1 +++ b/Commands/Requests/Save-OBSReplayBuffer.ps1 @@ -1,4 +1,5 @@ function Save-OBSReplayBuffer { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Save-OBSSourceScreenshot.ps1 b/Commands/Requests/Save-OBSSourceScreenshot.ps1 index 4a60128f8..0057342d1 100644 --- a/Commands/Requests/Save-OBSSourceScreenshot.ps1 +++ b/Commands/Requests/Save-OBSSourceScreenshot.ps1 @@ -1,4 +1,5 @@ function Save-OBSSourceScreenshot { + <# .Synopsis @@ -19,13 +20,17 @@ function Save-OBSSourceScreenshot { #> [Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SaveSourceScreenshot')] [Alias('obs.powershell.websocket.SaveSourceScreenshot')] -[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the source to take a screenshot of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source to take a screenshot of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Image compression format to use. Use `GetVersion` to get compatible image formats #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('imageFormat')] @@ -66,16 +71,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -95,6 +106,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -128,12 +140,15 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + + Get-Item $paramCopy["imageFilePath"] | Add-Member NoteProperty InputName $paramCopy["SourceName"] -Force -PassThru | Add-Member NoteProperty SourceName $paramCopy["SourceName"] -Force -PassThru | @@ -141,5 +156,7 @@ process { Add-Member NoteProperty ImageHeight $paramCopy["ImageHeight"] -Force -PassThru } + + } diff --git a/Commands/Requests/Send-OBSCallVendorRequest.ps1 b/Commands/Requests/Send-OBSCallVendorRequest.ps1 index 482d7a7d8..c87e5284d 100644 --- a/Commands/Requests/Send-OBSCallVendorRequest.ps1 +++ b/Commands/Requests/Send-OBSCallVendorRequest.ps1 @@ -1,4 +1,5 @@ function Send-OBSCallVendorRequest { + <# .Synopsis @@ -46,16 +47,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -75,6 +82,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -108,12 +116,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSCustomEvent.ps1 b/Commands/Requests/Send-OBSCustomEvent.ps1 index be27a6f12..480147717 100644 --- a/Commands/Requests/Send-OBSCustomEvent.ps1 +++ b/Commands/Requests/Send-OBSCustomEvent.ps1 @@ -1,4 +1,5 @@ function Send-OBSCustomEvent { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSOffsetMediaInputCursor.ps1 b/Commands/Requests/Send-OBSOffsetMediaInputCursor.ps1 index 89893f887..c40ba5910 100644 --- a/Commands/Requests/Send-OBSOffsetMediaInputCursor.ps1 +++ b/Commands/Requests/Send-OBSOffsetMediaInputCursor.ps1 @@ -1,4 +1,5 @@ function Send-OBSOffsetMediaInputCursor { + <# .Synopsis @@ -18,10 +19,15 @@ function Send-OBSOffsetMediaInputCursor { [Alias('obs.powershell.websocket.OffsetMediaInputCursor')] param( <# Name of the media input #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the media input #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# Value to offset the current cursor position by #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('mediaCursorOffset')] @@ -39,16 +45,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -68,6 +80,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -101,12 +114,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSPauseRecord.ps1 b/Commands/Requests/Send-OBSPauseRecord.ps1 index a461030fa..cffc8f6da 100644 --- a/Commands/Requests/Send-OBSPauseRecord.ps1 +++ b/Commands/Requests/Send-OBSPauseRecord.ps1 @@ -1,4 +1,5 @@ function Send-OBSPauseRecord { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSPressInputPropertiesButton.ps1 b/Commands/Requests/Send-OBSPressInputPropertiesButton.ps1 index bd7e70674..426dca3bf 100644 --- a/Commands/Requests/Send-OBSPressInputPropertiesButton.ps1 +++ b/Commands/Requests/Send-OBSPressInputPropertiesButton.ps1 @@ -1,4 +1,5 @@ function Send-OBSPressInputPropertiesButton { + <# .Synopsis @@ -22,10 +23,15 @@ function Send-OBSPressInputPropertiesButton { [Alias('obs.powershell.websocket.PressInputPropertiesButton')] param( <# Name of the input #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# Name of the button property to press #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('propertyName')] @@ -43,16 +49,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -72,6 +84,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -105,12 +118,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSSleep.ps1 b/Commands/Requests/Send-OBSSleep.ps1 index 6a358cd9a..f0eb91174 100644 --- a/Commands/Requests/Send-OBSSleep.ps1 +++ b/Commands/Requests/Send-OBSSleep.ps1 @@ -1,4 +1,5 @@ function Send-OBSSleep { + <# .Synopsis @@ -39,16 +40,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -68,6 +75,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -101,12 +109,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSStreamCaption.ps1 b/Commands/Requests/Send-OBSStreamCaption.ps1 index 4b8bd856e..d9312a2e2 100644 --- a/Commands/Requests/Send-OBSStreamCaption.ps1 +++ b/Commands/Requests/Send-OBSStreamCaption.ps1 @@ -1,4 +1,5 @@ function Send-OBSStreamCaption { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSTriggerHotkeyByKeySequence.ps1 b/Commands/Requests/Send-OBSTriggerHotkeyByKeySequence.ps1 index c60fe5f51..b03bd5a85 100644 --- a/Commands/Requests/Send-OBSTriggerHotkeyByKeySequence.ps1 +++ b/Commands/Requests/Send-OBSTriggerHotkeyByKeySequence.ps1 @@ -1,4 +1,5 @@ function Send-OBSTriggerHotkeyByKeySequence { + <# .Synopsis @@ -7,6 +8,8 @@ function Send-OBSTriggerHotkeyByKeySequence { .Description Triggers a hotkey using a sequence of keys. + Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. + Send-OBSTriggerHotkeyByKeySequence calls the OBS WebSocket with a request of type TriggerHotkeyByKeySequence. .Link @@ -57,16 +60,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -86,6 +95,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -119,12 +129,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSTriggerHotkeyByName.ps1 b/Commands/Requests/Send-OBSTriggerHotkeyByName.ps1 index 4a4dbc0fe..1e12b2f2c 100644 --- a/Commands/Requests/Send-OBSTriggerHotkeyByName.ps1 +++ b/Commands/Requests/Send-OBSTriggerHotkeyByName.ps1 @@ -1,11 +1,14 @@ function Send-OBSTriggerHotkeyByName { + <# .Synopsis Send-OBSTriggerHotkeyByName : TriggerHotkeyByName .Description - Triggers a hotkey using its name. See `GetHotkeyList` + Triggers a hotkey using its name. See `GetHotkeyList`. + + Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. Send-OBSTriggerHotkeyByName calls the OBS WebSocket with a request of type TriggerHotkeyByName. @@ -20,6 +23,11 @@ param( [ComponentModel.DefaultBindingProperty('hotkeyName')] [string] $HotkeyName, +<# Name of context of the hotkey to trigger #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('contextName')] +[string] +$ContextName, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -32,16 +40,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +75,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +109,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSTriggerMediaInputAction.ps1 b/Commands/Requests/Send-OBSTriggerMediaInputAction.ps1 index 53c90590b..445ce6089 100644 --- a/Commands/Requests/Send-OBSTriggerMediaInputAction.ps1 +++ b/Commands/Requests/Send-OBSTriggerMediaInputAction.ps1 @@ -1,4 +1,5 @@ function Send-OBSTriggerMediaInputAction { + <# .Synopsis @@ -16,10 +17,15 @@ function Send-OBSTriggerMediaInputAction { [Alias('obs.powershell.websocket.TriggerMediaInputAction')] param( <# Name of the media input #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the media input #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# Identifier of the `ObsMediaInputAction` enum #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('mediaAction')] @@ -37,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Send-OBSTriggerStudioModeTransition.ps1 b/Commands/Requests/Send-OBSTriggerStudioModeTransition.ps1 index e6592275b..b416c1460 100644 --- a/Commands/Requests/Send-OBSTriggerStudioModeTransition.ps1 +++ b/Commands/Requests/Send-OBSTriggerStudioModeTransition.ps1 @@ -1,4 +1,5 @@ function Send-OBSTriggerStudioModeTransition { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSCurrentPreviewScene.ps1 b/Commands/Requests/Set-OBSCurrentPreviewScene.ps1 index 914d4c72b..01885cd86 100644 --- a/Commands/Requests/Set-OBSCurrentPreviewScene.ps1 +++ b/Commands/Requests/Set-OBSCurrentPreviewScene.ps1 @@ -1,4 +1,5 @@ function Set-OBSCurrentPreviewScene { + <# .Synopsis @@ -17,11 +18,16 @@ function Set-OBSCurrentPreviewScene { [Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetCurrentPreviewScene')] [Alias('obs.powershell.websocket.SetCurrentPreviewScene')] param( -<# Scene to set as the current preview scene #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +<# Scene name to set as the current preview scene #> +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# Scene UUID to set as the current preview scene #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -34,16 +40,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -63,6 +75,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -96,12 +109,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSCurrentProfile.ps1 b/Commands/Requests/Set-OBSCurrentProfile.ps1 index 3d7634015..41edd37f1 100644 --- a/Commands/Requests/Set-OBSCurrentProfile.ps1 +++ b/Commands/Requests/Set-OBSCurrentProfile.ps1 @@ -1,4 +1,5 @@ function Set-OBSCurrentProfile { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSCurrentProgramScene.ps1 b/Commands/Requests/Set-OBSCurrentProgramScene.ps1 index ae9a459bf..719ec13ce 100644 --- a/Commands/Requests/Set-OBSCurrentProgramScene.ps1 +++ b/Commands/Requests/Set-OBSCurrentProgramScene.ps1 @@ -1,4 +1,5 @@ function Set-OBSCurrentProgramScene { + <# .Synopsis @@ -15,11 +16,16 @@ function Set-OBSCurrentProgramScene { [Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetCurrentProgramScene')] [Alias('obs.powershell.websocket.SetCurrentProgramScene')] param( -<# Scene to set as the current program scene #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +<# Scene name to set as the current program scene #> +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# Scene UUID to set as the current program scene #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -32,16 +38,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +73,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +107,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSCurrentSceneCollection.ps1 b/Commands/Requests/Set-OBSCurrentSceneCollection.ps1 index 9a4cb686e..89f58975d 100644 --- a/Commands/Requests/Set-OBSCurrentSceneCollection.ps1 +++ b/Commands/Requests/Set-OBSCurrentSceneCollection.ps1 @@ -1,4 +1,5 @@ function Set-OBSCurrentSceneCollection { + <# .Synopsis @@ -34,16 +35,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -63,6 +70,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -96,12 +104,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSCurrentSceneTransition.ps1 b/Commands/Requests/Set-OBSCurrentSceneTransition.ps1 index 2ebe22b0f..087fc9c86 100644 --- a/Commands/Requests/Set-OBSCurrentSceneTransition.ps1 +++ b/Commands/Requests/Set-OBSCurrentSceneTransition.ps1 @@ -1,4 +1,5 @@ function Set-OBSCurrentSceneTransition { + <# .Synopsis @@ -34,16 +35,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -63,6 +70,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -96,12 +104,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSCurrentSceneTransitionDuration.ps1 b/Commands/Requests/Set-OBSCurrentSceneTransitionDuration.ps1 index 491837017..b8aa5756f 100644 --- a/Commands/Requests/Set-OBSCurrentSceneTransitionDuration.ps1 +++ b/Commands/Requests/Set-OBSCurrentSceneTransitionDuration.ps1 @@ -1,4 +1,5 @@ function Set-OBSCurrentSceneTransitionDuration { + <# .Synopsis @@ -33,16 +34,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +69,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +103,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSCurrentSceneTransitionSettings.ps1 b/Commands/Requests/Set-OBSCurrentSceneTransitionSettings.ps1 index 4bb31d179..299f257d7 100644 --- a/Commands/Requests/Set-OBSCurrentSceneTransitionSettings.ps1 +++ b/Commands/Requests/Set-OBSCurrentSceneTransitionSettings.ps1 @@ -1,4 +1,5 @@ function Set-OBSCurrentSceneTransitionSettings { + <# .Synopsis @@ -37,16 +38,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +73,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +107,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSInputAudioBalance.ps1 b/Commands/Requests/Set-OBSInputAudioBalance.ps1 index 799f1ac1d..ca24efddb 100644 --- a/Commands/Requests/Set-OBSInputAudioBalance.ps1 +++ b/Commands/Requests/Set-OBSInputAudioBalance.ps1 @@ -1,4 +1,5 @@ function Set-OBSInputAudioBalance { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSInputAudioBalance { [Alias('obs.powershell.websocket.SetInputAudioBalance')] param( <# Name of the input to set the audio balance of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to set the audio balance of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# New audio balance value #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputAudioBalance')] @@ -38,16 +44,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -67,6 +79,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -100,12 +113,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSInputAudioMonitorType.ps1 b/Commands/Requests/Set-OBSInputAudioMonitorType.ps1 index 870fbe57b..85e077a05 100644 --- a/Commands/Requests/Set-OBSInputAudioMonitorType.ps1 +++ b/Commands/Requests/Set-OBSInputAudioMonitorType.ps1 @@ -1,4 +1,5 @@ function Set-OBSInputAudioMonitorType { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSInputAudioMonitorType { [Alias('obs.powershell.websocket.SetInputAudioMonitorType')] param( <# Name of the input to set the audio monitor type of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to set the audio monitor type of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# Audio monitor type #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('monitorType')] @@ -37,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSInputAudioSyncOffset.ps1 b/Commands/Requests/Set-OBSInputAudioSyncOffset.ps1 index ebbf2dcc4..8de01c20d 100644 --- a/Commands/Requests/Set-OBSInputAudioSyncOffset.ps1 +++ b/Commands/Requests/Set-OBSInputAudioSyncOffset.ps1 @@ -1,4 +1,5 @@ function Set-OBSInputAudioSyncOffset { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSInputAudioSyncOffset { [Alias('obs.powershell.websocket.SetInputAudioSyncOffset')] param( <# Name of the input to set the audio sync offset of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to set the audio sync offset of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# New audio sync offset in milliseconds #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputAudioSyncOffset')] @@ -38,16 +44,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -67,6 +79,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -100,12 +113,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSInputAudioTracks.ps1 b/Commands/Requests/Set-OBSInputAudioTracks.ps1 index eac9444fc..5fc97f2b4 100644 --- a/Commands/Requests/Set-OBSInputAudioTracks.ps1 +++ b/Commands/Requests/Set-OBSInputAudioTracks.ps1 @@ -1,4 +1,5 @@ function Set-OBSInputAudioTracks { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSInputAudioTracks { [Alias('obs.powershell.websocket.SetInputAudioTracks')] param( <# Name of the input #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# Track settings to apply #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputAudioTracks')] @@ -37,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSInputMute.ps1 b/Commands/Requests/Set-OBSInputMute.ps1 index bc82e7a34..a2cbc3d01 100644 --- a/Commands/Requests/Set-OBSInputMute.ps1 +++ b/Commands/Requests/Set-OBSInputMute.ps1 @@ -1,4 +1,5 @@ function Set-OBSInputMute { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSInputMute { [Alias('obs.powershell.websocket.SetInputMute')] param( <# Name of the input to set the mute state of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to set the mute state of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# Whether to mute the input or not #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputMuted')] @@ -37,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSInputName.ps1 b/Commands/Requests/Set-OBSInputName.ps1 index 35c5ebae0..7fc00f3d8 100644 --- a/Commands/Requests/Set-OBSInputName.ps1 +++ b/Commands/Requests/Set-OBSInputName.ps1 @@ -1,4 +1,5 @@ function Set-OBSInputName { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSInputName { [Alias('obs.powershell.websocket.SetInputName')] param( <# Current input name #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# Current input UUID #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# New name for the input #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('newInputName')] @@ -37,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSInputSettings.ps1 b/Commands/Requests/Set-OBSInputSettings.ps1 index d6a4d093e..4ea358c5f 100644 --- a/Commands/Requests/Set-OBSInputSettings.ps1 +++ b/Commands/Requests/Set-OBSInputSettings.ps1 @@ -1,4 +1,5 @@ function Set-OBSInputSettings { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSInputSettings { [Alias('obs.powershell.websocket.SetInputSettings')] param( <# Name of the input to set the settings of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to set the settings of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# Object of settings to apply #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputSettings')] @@ -42,16 +48,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -71,6 +83,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -104,12 +117,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSInputVolume.ps1 b/Commands/Requests/Set-OBSInputVolume.ps1 index 5645479cd..dd0f00dc7 100644 --- a/Commands/Requests/Set-OBSInputVolume.ps1 +++ b/Commands/Requests/Set-OBSInputVolume.ps1 @@ -1,4 +1,5 @@ function Set-OBSInputVolume { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSInputVolume { [Alias('obs.powershell.websocket.SetInputVolume')] param( <# Name of the input to set the volume of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to set the volume of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# Volume setting in mul #> [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputVolumeMul')] @@ -44,16 +50,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -73,6 +85,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -106,12 +119,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSMediaInputCursor.ps1 b/Commands/Requests/Set-OBSMediaInputCursor.ps1 index e5f747de4..29f99d6cc 100644 --- a/Commands/Requests/Set-OBSMediaInputCursor.ps1 +++ b/Commands/Requests/Set-OBSMediaInputCursor.ps1 @@ -1,4 +1,5 @@ function Set-OBSMediaInputCursor { + <# .Synopsis @@ -18,10 +19,15 @@ function Set-OBSMediaInputCursor { [Alias('obs.powershell.websocket.SetMediaInputCursor')] param( <# Name of the media input #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the media input #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, <# New cursor position to set #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('mediaCursor')] @@ -40,16 +46,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -69,6 +81,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -102,12 +115,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSOutputSettings.ps1 b/Commands/Requests/Set-OBSOutputSettings.ps1 index b4f923140..37c760f75 100644 --- a/Commands/Requests/Set-OBSOutputSettings.ps1 +++ b/Commands/Requests/Set-OBSOutputSettings.ps1 @@ -1,4 +1,5 @@ function Set-OBSOutputSettings { + <# .Synopsis @@ -37,16 +38,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +73,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +107,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSPersistentData.ps1 b/Commands/Requests/Set-OBSPersistentData.ps1 index 2ae10ebd3..08ec5ae9a 100644 --- a/Commands/Requests/Set-OBSPersistentData.ps1 +++ b/Commands/Requests/Set-OBSPersistentData.ps1 @@ -1,4 +1,5 @@ function Set-OBSPersistentData { + <# .Synopsis @@ -42,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -71,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -104,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSProfileParameter.ps1 b/Commands/Requests/Set-OBSProfileParameter.ps1 index a9da26ea6..1ae972835 100644 --- a/Commands/Requests/Set-OBSProfileParameter.ps1 +++ b/Commands/Requests/Set-OBSProfileParameter.ps1 @@ -1,4 +1,5 @@ function Set-OBSProfileParameter { + <# .Synopsis @@ -42,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -71,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -104,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSRecordDirectory.ps1 b/Commands/Requests/Set-OBSRecordDirectory.ps1 index 4cde52ac0..0dd15e3c2 100644 --- a/Commands/Requests/Set-OBSRecordDirectory.ps1 +++ b/Commands/Requests/Set-OBSRecordDirectory.ps1 @@ -1,4 +1,5 @@ function Set-OBSRecordDirectory { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSceneItemBlendMode.ps1 b/Commands/Requests/Set-OBSSceneItemBlendMode.ps1 index 55a36a9d0..328ff40d5 100644 --- a/Commands/Requests/Set-OBSSceneItemBlendMode.ps1 +++ b/Commands/Requests/Set-OBSSceneItemBlendMode.ps1 @@ -1,4 +1,5 @@ function Set-OBSSceneItemBlendMode { + <# .Synopsis @@ -18,10 +19,15 @@ function Set-OBSSceneItemBlendMode { [Alias('obs.powershell.websocket.SetSceneItemBlendMode')] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -45,16 +51,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -74,6 +86,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -107,12 +120,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSceneItemEnabled.ps1 b/Commands/Requests/Set-OBSSceneItemEnabled.ps1 index 7e937522a..7fdda137a 100644 --- a/Commands/Requests/Set-OBSSceneItemEnabled.ps1 +++ b/Commands/Requests/Set-OBSSceneItemEnabled.ps1 @@ -1,4 +1,5 @@ function Set-OBSSceneItemEnabled { + <# .Synopsis @@ -18,10 +19,15 @@ function Set-OBSSceneItemEnabled { [Alias('obs.powershell.websocket.SetSceneItemEnabled')] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -45,16 +51,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -74,6 +86,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -107,12 +120,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSceneItemIndex.ps1 b/Commands/Requests/Set-OBSSceneItemIndex.ps1 index 3079a2bdd..896d86912 100644 --- a/Commands/Requests/Set-OBSSceneItemIndex.ps1 +++ b/Commands/Requests/Set-OBSSceneItemIndex.ps1 @@ -1,4 +1,5 @@ function Set-OBSSceneItemIndex { + <# .Synopsis @@ -18,10 +19,15 @@ function Set-OBSSceneItemIndex { [Alias('obs.powershell.websocket.SetSceneItemIndex')] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -46,16 +52,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -75,6 +87,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -108,12 +121,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSceneItemLocked.ps1 b/Commands/Requests/Set-OBSSceneItemLocked.ps1 index 2cdf1bc00..7c00d7d14 100644 --- a/Commands/Requests/Set-OBSSceneItemLocked.ps1 +++ b/Commands/Requests/Set-OBSSceneItemLocked.ps1 @@ -1,4 +1,5 @@ function Set-OBSSceneItemLocked { + <# .Synopsis @@ -18,10 +19,15 @@ function Set-OBSSceneItemLocked { [Alias('obs.powershell.websocket.SetSceneItemLocked')] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -45,16 +51,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -74,6 +86,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -107,12 +120,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSceneItemTransform.ps1 b/Commands/Requests/Set-OBSSceneItemTransform.ps1 index 56abd787c..014b8884d 100644 --- a/Commands/Requests/Set-OBSSceneItemTransform.ps1 +++ b/Commands/Requests/Set-OBSSceneItemTransform.ps1 @@ -1,4 +1,5 @@ function Set-OBSSceneItemTransform { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSSceneItemTransform { [Alias('obs.powershell.websocket.SetSceneItemTransform')] param( <# Name of the scene the item is in #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene the item is in #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Numeric ID of the scene item #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneItemId')] @@ -43,16 +49,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -72,6 +84,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -105,12 +118,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSceneName.ps1 b/Commands/Requests/Set-OBSSceneName.ps1 index 5c961f0f2..335d82aed 100644 --- a/Commands/Requests/Set-OBSSceneName.ps1 +++ b/Commands/Requests/Set-OBSSceneName.ps1 @@ -1,4 +1,5 @@ function Set-OBSSceneName { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSSceneName { [Alias('obs.powershell.websocket.SetSceneName')] param( <# Name of the scene to be renamed #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene to be renamed #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# New name for the scene #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('newSceneName')] @@ -37,16 +43,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -66,6 +78,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -99,12 +112,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSceneSceneTransitionOverride.ps1 b/Commands/Requests/Set-OBSSceneSceneTransitionOverride.ps1 index ef910cc64..8598a3ddb 100644 --- a/Commands/Requests/Set-OBSSceneSceneTransitionOverride.ps1 +++ b/Commands/Requests/Set-OBSSceneSceneTransitionOverride.ps1 @@ -1,11 +1,12 @@ function Set-OBSSceneSceneTransitionOverride { + <# .Synopsis Set-OBSSceneSceneTransitionOverride : SetSceneSceneTransitionOverride .Description - Gets the scene transition overridden for a scene. + Sets the scene transition overridden for a scene. Set-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type SetSceneSceneTransitionOverride. @@ -16,10 +17,15 @@ function Set-OBSSceneSceneTransitionOverride { [Alias('obs.powershell.websocket.SetSceneSceneTransitionOverride')] param( <# Name of the scene #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sceneName')] [string] $SceneName, +<# UUID of the scene #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, <# Name of the scene transition to use as override. Specify `null` to remove #> [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('transitionName')] @@ -43,16 +49,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -72,6 +84,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -105,12 +118,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSourceFilterEnabled.ps1 b/Commands/Requests/Set-OBSSourceFilterEnabled.ps1 index 2c2776985..194e41eee 100644 --- a/Commands/Requests/Set-OBSSourceFilterEnabled.ps1 +++ b/Commands/Requests/Set-OBSSourceFilterEnabled.ps1 @@ -1,4 +1,5 @@ function Set-OBSSourceFilterEnabled { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSSourceFilterEnabled { [Alias('obs.powershell.websocket.SetSourceFilterEnabled')] param( <# Name of the source the filter is on #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source the filter is on #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Name of the filter #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('filterName')] @@ -42,16 +48,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -71,6 +83,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -104,12 +117,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSourceFilterIndex.ps1 b/Commands/Requests/Set-OBSSourceFilterIndex.ps1 index 52bb46dda..acc18f626 100644 --- a/Commands/Requests/Set-OBSSourceFilterIndex.ps1 +++ b/Commands/Requests/Set-OBSSourceFilterIndex.ps1 @@ -1,4 +1,5 @@ function Set-OBSSourceFilterIndex { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSSourceFilterIndex { [Alias('obs.powershell.websocket.SetSourceFilterIndex')] param( <# Name of the source the filter is on #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source the filter is on #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Name of the filter #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('filterName')] @@ -43,16 +49,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -72,6 +84,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -105,12 +118,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSourceFilterName.ps1 b/Commands/Requests/Set-OBSSourceFilterName.ps1 index 095fdf1f0..4b572b161 100644 --- a/Commands/Requests/Set-OBSSourceFilterName.ps1 +++ b/Commands/Requests/Set-OBSSourceFilterName.ps1 @@ -1,4 +1,5 @@ function Set-OBSSourceFilterName { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSSourceFilterName { [Alias('obs.powershell.websocket.SetSourceFilterName')] param( <# Name of the source the filter is on #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source the filter is on #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Current name of the filter #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('filterName')] @@ -42,16 +48,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -71,6 +83,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -104,12 +117,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSSourceFilterSettings.ps1 b/Commands/Requests/Set-OBSSourceFilterSettings.ps1 index 351328408..b26f4025d 100644 --- a/Commands/Requests/Set-OBSSourceFilterSettings.ps1 +++ b/Commands/Requests/Set-OBSSourceFilterSettings.ps1 @@ -1,4 +1,5 @@ function Set-OBSSourceFilterSettings { + <# .Synopsis @@ -16,10 +17,15 @@ function Set-OBSSourceFilterSettings { [Alias('obs.powershell.websocket.SetSourceFilterSettings')] param( <# Name of the source the filter is on #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('sourceName')] [string] $SourceName, +<# UUID of the source the filter is on #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, <# Name of the filter to set the settings of #> [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('filterName')] @@ -47,16 +53,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -76,6 +88,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -109,12 +122,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSStreamServiceSettings.ps1 b/Commands/Requests/Set-OBSStreamServiceSettings.ps1 index ee230cb9b..43551d8fc 100644 --- a/Commands/Requests/Set-OBSStreamServiceSettings.ps1 +++ b/Commands/Requests/Set-OBSStreamServiceSettings.ps1 @@ -1,4 +1,5 @@ function Set-OBSStreamServiceSettings { + <# .Synopsis @@ -39,16 +40,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -68,6 +75,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -101,12 +109,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSStudioModeEnabled.ps1 b/Commands/Requests/Set-OBSStudioModeEnabled.ps1 index a4de575fa..e6073992b 100644 --- a/Commands/Requests/Set-OBSStudioModeEnabled.ps1 +++ b/Commands/Requests/Set-OBSStudioModeEnabled.ps1 @@ -1,4 +1,5 @@ function Set-OBSStudioModeEnabled { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSTBarPosition.ps1 b/Commands/Requests/Set-OBSTBarPosition.ps1 index f7421a9b0..9a828f53d 100644 --- a/Commands/Requests/Set-OBSTBarPosition.ps1 +++ b/Commands/Requests/Set-OBSTBarPosition.ps1 @@ -1,4 +1,5 @@ function Set-OBSTBarPosition { + <# .Synopsis @@ -40,16 +41,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -69,6 +76,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -102,12 +110,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Set-OBSVideoSettings.ps1 b/Commands/Requests/Set-OBSVideoSettings.ps1 index 8a5d189da..473bdc2ab 100644 --- a/Commands/Requests/Set-OBSVideoSettings.ps1 +++ b/Commands/Requests/Set-OBSVideoSettings.ps1 @@ -1,4 +1,5 @@ function Set-OBSVideoSettings { + <# .Synopsis @@ -65,16 +66,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -94,6 +101,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -127,12 +135,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Start-OBSOutput.ps1 b/Commands/Requests/Start-OBSOutput.ps1 index c4078da8d..5f0af6346 100644 --- a/Commands/Requests/Start-OBSOutput.ps1 +++ b/Commands/Requests/Start-OBSOutput.ps1 @@ -1,4 +1,5 @@ function Start-OBSOutput { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Start-OBSRecord.ps1 b/Commands/Requests/Start-OBSRecord.ps1 index 4e18a3cb8..52ad2d5b9 100644 --- a/Commands/Requests/Start-OBSRecord.ps1 +++ b/Commands/Requests/Start-OBSRecord.ps1 @@ -1,4 +1,5 @@ function Start-OBSRecord { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Start-OBSReplayBuffer.ps1 b/Commands/Requests/Start-OBSReplayBuffer.ps1 index 5284cc348..5772ebd5f 100644 --- a/Commands/Requests/Start-OBSReplayBuffer.ps1 +++ b/Commands/Requests/Start-OBSReplayBuffer.ps1 @@ -1,4 +1,5 @@ function Start-OBSReplayBuffer { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Start-OBSStream.ps1 b/Commands/Requests/Start-OBSStream.ps1 index 14649e39b..7735467ae 100644 --- a/Commands/Requests/Start-OBSStream.ps1 +++ b/Commands/Requests/Start-OBSStream.ps1 @@ -1,4 +1,5 @@ function Start-OBSStream { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Start-OBSVirtualCam.ps1 b/Commands/Requests/Start-OBSVirtualCam.ps1 index 1fba99073..b640300ce 100644 --- a/Commands/Requests/Start-OBSVirtualCam.ps1 +++ b/Commands/Requests/Start-OBSVirtualCam.ps1 @@ -1,4 +1,5 @@ function Start-OBSVirtualCam { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Stop-OBSOutput.ps1 b/Commands/Requests/Stop-OBSOutput.ps1 index 70db6f76e..fbf2374d0 100644 --- a/Commands/Requests/Stop-OBSOutput.ps1 +++ b/Commands/Requests/Stop-OBSOutput.ps1 @@ -1,4 +1,5 @@ function Stop-OBSOutput { + <# .Synopsis @@ -32,16 +33,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -61,6 +68,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -94,12 +102,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Stop-OBSRecord.ps1 b/Commands/Requests/Stop-OBSRecord.ps1 index 521307a8d..57c06821f 100644 --- a/Commands/Requests/Stop-OBSRecord.ps1 +++ b/Commands/Requests/Stop-OBSRecord.ps1 @@ -1,4 +1,5 @@ function Stop-OBSRecord { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Stop-OBSReplayBuffer.ps1 b/Commands/Requests/Stop-OBSReplayBuffer.ps1 index 821819145..014141b7a 100644 --- a/Commands/Requests/Stop-OBSReplayBuffer.ps1 +++ b/Commands/Requests/Stop-OBSReplayBuffer.ps1 @@ -1,4 +1,5 @@ function Stop-OBSReplayBuffer { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Stop-OBSStream.ps1 b/Commands/Requests/Stop-OBSStream.ps1 index 1a9bf7b03..fe9883581 100644 --- a/Commands/Requests/Stop-OBSStream.ps1 +++ b/Commands/Requests/Stop-OBSStream.ps1 @@ -1,4 +1,5 @@ function Stop-OBSStream { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Stop-OBSVirtualCam.ps1 b/Commands/Requests/Stop-OBSVirtualCam.ps1 index 8c016941d..6a3a42785 100644 --- a/Commands/Requests/Stop-OBSVirtualCam.ps1 +++ b/Commands/Requests/Stop-OBSVirtualCam.ps1 @@ -1,4 +1,5 @@ function Stop-OBSVirtualCam { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Switch-OBSInputMute.ps1 b/Commands/Requests/Switch-OBSInputMute.ps1 index 60a7f3cdc..268e2aed9 100644 --- a/Commands/Requests/Switch-OBSInputMute.ps1 +++ b/Commands/Requests/Switch-OBSInputMute.ps1 @@ -1,4 +1,5 @@ function Switch-OBSInputMute { + <# .Synopsis @@ -17,10 +18,15 @@ function Switch-OBSInputMute { [Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( <# Name of the input to toggle the mute state of #> -[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty('inputName')] [string] $InputName, +<# UUID of the input to toggle the mute state of #> +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] [Alias('OutputRequest','OutputInput')] @@ -33,16 +39,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +74,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +108,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Switch-OBSOutput.ps1 b/Commands/Requests/Switch-OBSOutput.ps1 index cd5b2392a..f22edf64b 100644 --- a/Commands/Requests/Switch-OBSOutput.ps1 +++ b/Commands/Requests/Switch-OBSOutput.ps1 @@ -1,4 +1,5 @@ function Switch-OBSOutput { + <# .Synopsis @@ -33,16 +34,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -62,6 +69,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -95,12 +103,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Switch-OBSRecord.ps1 b/Commands/Requests/Switch-OBSRecord.ps1 index 596fed18a..39921e06e 100644 --- a/Commands/Requests/Switch-OBSRecord.ps1 +++ b/Commands/Requests/Switch-OBSRecord.ps1 @@ -1,4 +1,5 @@ function Switch-OBSRecord { + <# .Synopsis @@ -16,6 +17,7 @@ function Switch-OBSRecord { #> [Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'ToggleRecord')] [Alias('obs.powershell.websocket.ToggleRecord')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] param( # If set, will return the information that would otherwise be sent to OBS. [Parameter(ValueFromPipelineByPropertyName)] @@ -29,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Switch-OBSRecordPause.ps1 b/Commands/Requests/Switch-OBSRecordPause.ps1 index 2d7222ff6..6e8256105 100644 --- a/Commands/Requests/Switch-OBSRecordPause.ps1 +++ b/Commands/Requests/Switch-OBSRecordPause.ps1 @@ -1,4 +1,5 @@ function Switch-OBSRecordPause { + <# .Synopsis @@ -29,16 +30,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -58,6 +65,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -91,12 +99,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Switch-OBSReplayBuffer.ps1 b/Commands/Requests/Switch-OBSReplayBuffer.ps1 index f664fce5f..b16e82040 100644 --- a/Commands/Requests/Switch-OBSReplayBuffer.ps1 +++ b/Commands/Requests/Switch-OBSReplayBuffer.ps1 @@ -1,4 +1,5 @@ function Switch-OBSReplayBuffer { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Switch-OBSStream.ps1 b/Commands/Requests/Switch-OBSStream.ps1 index cc39f6306..2dafd2ed3 100644 --- a/Commands/Requests/Switch-OBSStream.ps1 +++ b/Commands/Requests/Switch-OBSStream.ps1 @@ -1,4 +1,5 @@ function Switch-OBSStream { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Requests/Switch-OBSVirtualCam.ps1 b/Commands/Requests/Switch-OBSVirtualCam.ps1 index 1d7132df0..3f00f7871 100644 --- a/Commands/Requests/Switch-OBSVirtualCam.ps1 +++ b/Commands/Requests/Switch-OBSVirtualCam.ps1 @@ -1,4 +1,5 @@ function Switch-OBSVirtualCam { + <# .Synopsis @@ -30,16 +31,22 @@ $PassThru, [switch] $NoResponse ) + + process { + + # Create a copy of the parameters (that are part of the payload) $paramCopy = [Ordered]@{} # get a reference to this command $myCmd = $MyInvocation.MyCommand + # Keep track of how many requests we have done of a given type # (this makes creating RequestIDs easy) if (-not $script:ObsRequestsCounts) { $script:ObsRequestsCounts = @{} } + # Set my requestType to blank $myRequestType = '' # and indicate we are not expecting a response @@ -59,6 +66,7 @@ process { } } } + # Walk over each parameter :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { # and walk over each of it's attributes to see if it part of the payload @@ -92,12 +100,16 @@ process { # and optional data requestData = $paramCopy } + if ($PassThru) { [PSCustomObject]$requestPayload } else { [PSCustomObject]$requestPayload | Send-OBS -NoResponse:$NoResponse } + } + + } diff --git a/Commands/Shaders/Get-OBS3dSwapTransitionShader.ps1 b/Commands/Shaders/Get-OBS3dSwapTransitionShader.ps1 new file mode 100644 index 000000000..ad6dbac95 --- /dev/null +++ b/Commands/Shaders/Get-OBS3dSwapTransitionShader.ps1 @@ -0,0 +1,269 @@ +function Get-OBS3dSwapTransitionShader { + +[Alias('Set-OBS3dSwapTransitionShader','Add-OBS3dSwapTransitionShader')] +param( +# Set the image_a of OBS3dSwapTransitionShader +[Alias('image_a')] +[ComponentModel.DefaultBindingProperty('image_a')] +[String] +$ImageA, +# Set the image_b of OBS3dSwapTransitionShader +[Alias('image_b')] +[ComponentModel.DefaultBindingProperty('image_b')] +[String] +$ImageB, +# Set the transition_time of OBS3dSwapTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBS3dSwapTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# Set the reflection of OBS3dSwapTransitionShader +[ComponentModel.DefaultBindingProperty('reflection')] +[Single] +$Reflection, +# Set the perspective of OBS3dSwapTransitionShader +[ComponentModel.DefaultBindingProperty('perspective')] +[Single] +$Perspective, +# Set the depth of OBS3dSwapTransitionShader +[ComponentModel.DefaultBindingProperty('depth')] +[Single] +$Depth, +# Set the background_color of OBS3dSwapTransitionShader +[Alias('background_color')] +[ComponentModel.DefaultBindingProperty('background_color')] +[String] +$BackgroundColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = '3d_swap_transition' +$ShaderNoun = 'OBS3dSwapTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/MlXGzf + +uniform texture2d image_a; +uniform texture2d image_b; +uniform float transition_time = 0.5; +uniform bool convert_linear = true; + +uniform float reflection< + string label = "Reflection (0.4)"; + string widget_type = "slider"; + float minimum = 0.00; + float maximum = 1.00; + float step = 0.01; +> = 0.4; +uniform float perspective< + string label = "Perspective (0.2)"; + string widget_type = "slider"; + float minimum = 0.00; + float maximum = 1.00; + float step = 0.01; +> = .2; +uniform float depth< + string label = "Depth (3.0)"; + string widget_type = "slider"; + float minimum = 1.00; + float maximum = 10.00; + float step = 0.1; +> = 3.; + +#ifndef OPENGL +#define lessThan(a,b) (a < b) +#endif + + +uniform float4 background_color = {0.0, 0.0, 0.0, 1.0}; + +bool inBounds (float2 p) { + return all(lessThan(float2(0.0,0.0), p)) && all(lessThan(p, float2(1.0,1.0))); +} + +float2 project (float2 p) { + return p * float2(1.0, -1.2) + float2(0.0, 2.22); +} + +float4 bgColor (float2 p, float2 pfr, float2 pto) { + float4 c = background_color; + pfr = project(pfr); + if (inBounds(pfr)) { + c += lerp(background_color, image_a.Sample(textureSampler, pfr), reflection * lerp(0.0, 1.0, pfr.y)); + } + pto = project(pto); + if (inBounds(pto)) { + c += lerp(background_color, image_b.Sample(textureSampler, pto), reflection * lerp(0.0, 1.0, pto.y)); + } + return c; +} + +float4 mainImage(VertData v_in) : TARGET { + float2 p = v_in.uv; + float2 pfr = float2(-1.,-1.); + float2 pto = float2(-1.,-1.); + + float progress = transition_time; + float size = lerp(1.0, depth, progress); + float persp = perspective * progress; + pfr = (p + float2(-0.0, -0.5)) * float2(size/(1.0-perspective*progress), size/(1.0-size*persp*p.x)) + float2(0.0, 0.5); + + size = lerp(1.0, depth, 1.-progress); + persp = perspective * (1.-progress); + pto = (p + float2(-1.0, -0.5)) * float2(size/(1.0-perspective*(1.0-progress)), size/(1.0-size*persp*(0.5-p.x))) + float2(1.0, 0.5); + + bool fromOver = progress < 0.5; + float4 rgba = background_color; + if (fromOver) { + if (inBounds(pfr)) { + rgba = image_a.Sample(textureSampler, pfr); + } + else if (inBounds(pto)) { + rgba = image_b.Sample(textureSampler, pto); + } + else { + rgba = bgColor(p, pfr, pto); + } + } + else { + if (inBounds(pto)) { + rgba = image_b.Sample(textureSampler, pto); + } + else if (inBounds(pfr)) { + rgba = image_a.Sample(textureSampler, pfr); + } + else { + rgba = bgColor(p, pfr, pto); + } + } + if (convert_linear) + rgba.rgb = srgb_nonlinear_to_linear(rgba.rgb); + return rgba; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSAddShader.ps1 b/Commands/Shaders/Get-OBSAddShader.ps1 new file mode 100644 index 000000000..a52253255 --- /dev/null +++ b/Commands/Shaders/Get-OBSAddShader.ps1 @@ -0,0 +1,147 @@ +function Get-OBSAddShader { + +[Alias('Set-OBSAddShader','Add-OBSAddShader')] +param( +# Set the other_image of OBSAddShader +[Alias('other_image')] +[ComponentModel.DefaultBindingProperty('other_image')] +[String] +$OtherImage, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Add' +$ShaderNoun = 'OBSAddShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d other_image; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 other = other_image.Sample(textureSampler, v_in.uv); + float4 base = image.Sample(textureSampler, v_in.uv); + return clamp(base + other, 0.0, 1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSAlphaBorderShader.ps1 b/Commands/Shaders/Get-OBSAlphaBorderShader.ps1 new file mode 100644 index 000000000..5afa42147 --- /dev/null +++ b/Commands/Shaders/Get-OBSAlphaBorderShader.ps1 @@ -0,0 +1,182 @@ +function Get-OBSAlphaBorderShader { + +[Alias('Set-OBSAlphaBorderShader','Add-OBSAlphaBorderShader')] +param( +# Set the border_color of OBSAlphaBorderShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_thickness of OBSAlphaBorderShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the alpha_cut_off of OBSAlphaBorderShader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'alpha_border' +$ShaderNoun = 'OBSAlphaBorderShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float4 border_color< + string label = "Border color"; +> = {0.0,0.0,0.0,1.0}; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform float alpha_cut_off< + string label = "Alpha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 pix = image.Sample(textureSampler, v_in.uv); + if (pix.a > alpha_cut_off) + return pix; + [loop] for(int x = -border_thickness;x alpha_cut_off) + return border_color; + } + } + } + return pix; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSAlphaGamingBentCameraShader.ps1 b/Commands/Shaders/Get-OBSAlphaGamingBentCameraShader.ps1 new file mode 100644 index 000000000..d1f2640f1 --- /dev/null +++ b/Commands/Shaders/Get-OBSAlphaGamingBentCameraShader.ps1 @@ -0,0 +1,300 @@ +function Get-OBSAlphaGamingBentCameraShader { + +[Alias('Set-OBSAlphaGamingBentCameraShader','Add-OBSAlphaGamingBentCameraShader')] +param( +# Set the left_side_width of OBSAlphaGamingBentCameraShader +[Alias('left_side_width')] +[ComponentModel.DefaultBindingProperty('left_side_width')] +[Single] +$LeftSideWidth, +# Set the left_side_size of OBSAlphaGamingBentCameraShader +[Alias('left_side_size')] +[ComponentModel.DefaultBindingProperty('left_side_size')] +[Single] +$LeftSideSize, +# Set the left_side_shadow of OBSAlphaGamingBentCameraShader +[Alias('left_side_shadow')] +[ComponentModel.DefaultBindingProperty('left_side_shadow')] +[Single] +$LeftSideShadow, +# Set the left_flip_width of OBSAlphaGamingBentCameraShader +[Alias('left_flip_width')] +[ComponentModel.DefaultBindingProperty('left_flip_width')] +[Single] +$LeftFlipWidth, +# Set the left_flip_shadow of OBSAlphaGamingBentCameraShader +[Alias('left_flip_shadow')] +[ComponentModel.DefaultBindingProperty('left_flip_shadow')] +[Single] +$LeftFlipShadow, +# Set the right_side_width of OBSAlphaGamingBentCameraShader +[Alias('right_side_width')] +[ComponentModel.DefaultBindingProperty('right_side_width')] +[Single] +$RightSideWidth, +# Set the right_side_size of OBSAlphaGamingBentCameraShader +[Alias('right_side_size')] +[ComponentModel.DefaultBindingProperty('right_side_size')] +[Single] +$RightSideSize, +# Set the right_side_shadow of OBSAlphaGamingBentCameraShader +[Alias('right_side_shadow')] +[ComponentModel.DefaultBindingProperty('right_side_shadow')] +[Single] +$RightSideShadow, +# Set the right_flip_width of OBSAlphaGamingBentCameraShader +[Alias('right_flip_width')] +[ComponentModel.DefaultBindingProperty('right_flip_width')] +[Single] +$RightFlipWidth, +# Set the right_flip_shadow of OBSAlphaGamingBentCameraShader +[Alias('right_flip_shadow')] +[ComponentModel.DefaultBindingProperty('right_flip_shadow')] +[Single] +$RightFlipShadow, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'alpha-gaming-bent-camera' +$ShaderNoun = 'OBSAlphaGamingBentCameraShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float left_side_width< + string label = "Left side width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; +uniform float left_side_size< + string label = "Left side size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform float left_side_shadow< + string label = "Left side shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.8; +uniform float left_flip_width< + string label = "Left flip width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.05; +uniform float left_flip_shadow< + string label = "Left flip shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; + +uniform float right_side_width< + string label = "Right side width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; +uniform float right_side_size< + string label = "Right side size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform float right_side_shadow< + string label = "Right side shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.8; +uniform float right_flip_width< + string label = "Right flip width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.05; +uniform float right_flip_shadow< + string label = "Right flip shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos=v_in.uv; + float shadow = 1.0; + if(pos.x < left_side_width){ + pos.y -= 0.5; + pos.y /= left_side_size; + pos.y += 0.5; + pos.x -= left_side_width + left_flip_width; + pos.x /= left_side_size; + pos.x += left_side_width + left_flip_width; + shadow = left_side_shadow; + }else if(pos.x < left_side_width + left_flip_width){ + float factor = 1.0 - ((left_side_width + left_flip_width)-pos.x)/left_flip_width*(1.0 - left_side_size); + pos.y -= 0.5; + pos.y /= factor; + pos.y += 0.5; + pos.x -= left_side_width + left_flip_width; + pos.x /= factor; + pos.x += left_side_width + left_flip_width; + shadow = left_flip_shadow; + } + + if(1.0 - pos.x < right_side_width){ + pos.y -= 0.5; + pos.y /= right_side_size; + pos.y += 0.5; + pos.x -= 1.0 - (right_side_width + right_flip_width); + pos.x /= right_side_size; + pos.x += 1.0 - (right_side_width + right_flip_width); + shadow = right_side_shadow; + }else if(1.0 - pos.x < right_side_width + right_flip_width){ + float factor = 1.0 - ((right_side_width + right_flip_width) - (1.0 - pos.x))/right_flip_width*(1.0 - right_side_size); + pos.y -= 0.5; + pos.y /= factor; + pos.y += 0.5; + pos.x -= 1.0 - (right_side_width + right_flip_width); + pos.x /= factor; + pos.x += 1.0 -(right_side_width + right_flip_width); + shadow = right_flip_shadow; + } + float4 p_color = image.Sample(textureSampler, pos); + p_color.rgb *= shadow; + return p_color; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSAnimatedPathShader.ps1 b/Commands/Shaders/Get-OBSAnimatedPathShader.ps1 new file mode 100644 index 000000000..f1a43bd29 --- /dev/null +++ b/Commands/Shaders/Get-OBSAnimatedPathShader.ps1 @@ -0,0 +1,270 @@ +function Get-OBSAnimatedPathShader { + +[Alias('Set-OBSAnimatedPathShader','Add-OBSAnimatedPathShader')] +param( +# Set the ViewProj of OBSAnimatedPathShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSAnimatedPathShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSAnimatedPathShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSAnimatedPathShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSAnimatedPathShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSAnimatedPathShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSAnimatedPathShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the speed_percent of OBSAnimatedPathShader +[Alias('speed_percent')] +[ComponentModel.DefaultBindingProperty('speed_percent')] +[Int32] +$SpeedPercent, +# Set the path_map of OBSAnimatedPathShader +[Alias('path_map')] +[ComponentModel.DefaultBindingProperty('path_map')] +[String] +$PathMap, +# Set the reverse of OBSAnimatedPathShader +[ComponentModel.DefaultBindingProperty('reverse')] +[Management.Automation.SwitchParameter] +$Reverse, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'animated_path' +$ShaderNoun = 'OBSAnimatedPathShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Path effect By Charles Fettinger (https://github.com/Oncorporation) 3/2019 +//Converted to OpenGL by Q-mii & Exeldro February 24, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; + +uniform int speed_percent = 100; +uniform texture2d path_map; +uniform bool reverse = false; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float4 convert_pmalpha(float4 c) +{ + float4 ret = c; + if (c.a >= 0.001) + ret.xyz /= c.a; + else + ret = float4(0.0, 0.0, 0.0, 0.0); + return ret; +} + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + float3 pos = v_in.pos.xyz; + float3 current_pos; + float speed = speed_percent * 0.01; + //vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + float t = 1.0 + sin(elapsed_time * speed) ; + // combine luma texture and user defined shine color + float luma = path_map.Sample(textureSampler, v_in.uv).x; + if (reverse) + { + luma = 1.0 - luma; + } + + float time = lerp(0.0f, 1.0f , t - 1.0); + + // set current position in time + current_pos.x = 0; + current_pos.y = 0; + + + float2 offset = uv_offset; + if (speed == 0.0f) + { + offset.x = 0.0f; + offset.y = 0.0f; + } + else + { + offset.x = uv_offset.x + time * luma; + offset.y = uv_offset.y + time * luma; + } + + vert_out.pos = mul(float4(current_pos, 1), ViewProj); + vert_out.uv = v_in.uv * uv_scale + offset; + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSAnimatedTextureShader.ps1 b/Commands/Shaders/Get-OBSAnimatedTextureShader.ps1 new file mode 100644 index 000000000..b00869acc --- /dev/null +++ b/Commands/Shaders/Get-OBSAnimatedTextureShader.ps1 @@ -0,0 +1,403 @@ +function Get-OBSAnimatedTextureShader { + +[Alias('Set-OBSAnimatedTextureShader','Add-OBSAnimatedTextureShader')] +param( +# Set the ViewProj of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSAnimatedTextureShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSAnimatedTextureShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSAnimatedTextureShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSAnimatedTextureShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSAnimatedTextureShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSAnimatedTextureShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the notes of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the Animation_Image of OBSAnimatedTextureShader +[Alias('Animation_Image')] +[ComponentModel.DefaultBindingProperty('Animation_Image')] +[String] +$AnimationImage, +# Set the Colorization_Image of OBSAnimatedTextureShader +[Alias('Colorization_Image')] +[ComponentModel.DefaultBindingProperty('Colorization_Image')] +[String] +$ColorizationImage, +# Set the reverse of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('reverse')] +[Management.Automation.SwitchParameter] +$Reverse, +# Set the bounce of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('bounce')] +[Management.Automation.SwitchParameter] +$Bounce, +# Set the center_animation of OBSAnimatedTextureShader +[Alias('center_animation')] +[ComponentModel.DefaultBindingProperty('center_animation')] +[Management.Automation.SwitchParameter] +$CenterAnimation, +# Set the polar_animation of OBSAnimatedTextureShader +[Alias('polar_animation')] +[ComponentModel.DefaultBindingProperty('polar_animation')] +[Management.Automation.SwitchParameter] +$PolarAnimation, +# Set the polar_angle of OBSAnimatedTextureShader +[Alias('polar_angle')] +[ComponentModel.DefaultBindingProperty('polar_angle')] +[Single] +$PolarAngle, +# Set the polar_height of OBSAnimatedTextureShader +[Alias('polar_height')] +[ComponentModel.DefaultBindingProperty('polar_height')] +[Single] +$PolarHeight, +# Set the speed_horizontal_percent of OBSAnimatedTextureShader +[Alias('speed_horizontal_percent')] +[ComponentModel.DefaultBindingProperty('speed_horizontal_percent')] +[Single] +$SpeedHorizontalPercent, +# Set the speed_vertical_percent of OBSAnimatedTextureShader +[Alias('speed_vertical_percent')] +[ComponentModel.DefaultBindingProperty('speed_vertical_percent')] +[Single] +$SpeedVerticalPercent, +# Set the tint_speed_horizontal_percent of OBSAnimatedTextureShader +[Alias('tint_speed_horizontal_percent')] +[ComponentModel.DefaultBindingProperty('tint_speed_horizontal_percent')] +[Single] +$TintSpeedHorizontalPercent, +# Set the tint_speed_vertical_percent of OBSAnimatedTextureShader +[Alias('tint_speed_vertical_percent')] +[ComponentModel.DefaultBindingProperty('tint_speed_vertical_percent')] +[Single] +$TintSpeedVerticalPercent, +# Set the Alpha of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('Alpha')] +[Single] +$Alpha, +# Set the Use_Animation_Image_Color of OBSAnimatedTextureShader +[Alias('Use_Animation_Image_Color')] +[ComponentModel.DefaultBindingProperty('Use_Animation_Image_Color')] +[Management.Automation.SwitchParameter] +$UseAnimationImageColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'animated_texture' +$ShaderNoun = 'OBSAnimatedTextureShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Animated Texture By Charles Fettinger (https://github.com/Oncorporation) 3/2020 +// Animates a texture with polar sizing and color options +// for use with obs-shaderfilter 1.0 +//Converted to OpenGL by Q-mii & Exeldro February 24, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; +uniform string notes; + +uniform texture2d Animation_Image; +uniform texture2d Colorization_Image; +uniform bool reverse = false; +uniform bool bounce = false; +uniform bool center_animation = true; +uniform bool polar_animation = true; +uniform float polar_angle = 90.0; +uniform float polar_height = 1.0; +uniform float speed_horizontal_percent = 50; +uniform float speed_vertical_percent = 5; +uniform float tint_speed_horizontal_percent = 50; +uniform float tint_speed_vertical_percent = 5; +uniform float Alpha = 1.0; +uniform bool Use_Animation_Image_Color = true; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float4 convert_pmalpha(float4 color) +{ + float4 ret = color; + if (color.a >= 0.001) + ret.xyz /= color.a; + else + ret = float4(0.0, 0.0, 0.0, 0.0); + return ret; +} + +float2 time(float2 speed_dir) +{ + float PI = 3.1415926535897932384626433832795; //acos(-1); + + float2 t = (elapsed_time * speed_dir) ; + if (bounce) + { + // coordinates moved from -1.0 to 1.0 to 0.0 to 2.0 then modified to fit screen + t.x = sin(elapsed_time * speed_dir.x * PI * 0.6667) + 1.0; + t.y = cos(elapsed_time * speed_dir.y * PI) + 1.0; + t *= -0.5; + } + + if (reverse) + t = t * -1; + return t; +} + +VertData mainTransform(VertData v_in) +{ + float2 speed_dir = float2(speed_horizontal_percent * 0.01, speed_vertical_percent * 0.01); + + VertData vert_out; + //float2 direction = abs(sin((elapsed_time - 0.001) * speed_dir)); + + float2 offset = uv_offset; + + if (center_animation) + { + vert_out.uv = v_in.uv - 0.5f; + } + else + { + offset += time(speed_dir); + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + offset; + } + + return vert_out; +} + + +float4 mainImage(VertData v_in) : TARGET +{ + float PI = 3.1415926535897932384626433832795; //acos(-1); + float PI180th = 0.0174532925; //PI divided by 180 + + float2 speed_dir = float2(speed_horizontal_percent * 0.01, speed_vertical_percent * 0.01); + float2 tint_speed_dir = float2(tint_speed_horizontal_percent * 0.01, tint_speed_vertical_percent * 0.01); + + //compensate for background vertex shader values + float2 background_offset = float2(-.5,-.5); + if (!center_animation) + background_offset = time(speed_dir); + float4 rgba = image.Sample(textureSampler, v_in.uv - background_offset); //float4(0.0,0.0,0.0,0.01); + + // Convert our texture coordinates to polar form: + if (polar_animation) { + + float2 polar = float2( + atan2(v_in.uv.y, v_in.uv.x) / (polar_angle * PI180th * 4), // angle + log(dot(v_in.uv, v_in.uv)) * -1 * (polar_height * PI180th * PI) // log-radius + ); + + // Check how much our texture sampling point changes between + // neighbouring pixels to the sides (ddx) and above/below (ddy) + ///float4 gradient = float4(ddx(polar), ddy(polar)); + + // If our angle wraps around between adjacent samples, + // discard one full rotation from its value and keep the fraction. + ///gradient.xz = frac(gradient.xz + 1.5f) - 0.5f; + + float2 tintUVs = polar * 4; + tintUVs += time(tint_speed_dir); + + // Apply texture scale + polar *= 4; + // Scroll the texture over time. + polar += time(speed_dir); + float4 animation = Animation_Image.Sample(textureSampler, frac(polar)); + + + float keyAmount = distance(animation.rgb,float3(0.0,0.0,0.0)); + float intensity = dot(animation.rgb ,float3(0.299,0.587,0.114)); + //animation.a = clamp((intensity),0.0,1.0); + if (Use_Animation_Image_Color) + { + animation.rgb *= Colorization_Image.Sample(textureSampler, frac(tintUVs)).rgb; + } + else + { + animation.rgb = Colorization_Image.Sample(textureSampler, frac(tintUVs)).rgb; + } + //if (keyAmount > 0.5f) + rgba = lerp(rgba, animation, animation.a * Alpha); + } + + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSAsciiShader.ps1 b/Commands/Shaders/Get-OBSAsciiShader.ps1 new file mode 100644 index 000000000..867c0cbc5 --- /dev/null +++ b/Commands/Shaders/Get-OBSAsciiShader.ps1 @@ -0,0 +1,256 @@ +function Get-OBSAsciiShader { + +[Alias('Set-OBSAsciiShader','Add-OBSAsciiShader')] +param( +# Set the scale of OBSAsciiShader +[ComponentModel.DefaultBindingProperty('scale')] +[Int32] +$Scale, +# Set the base_color of OBSAsciiShader +[Alias('base_color')] +[ComponentModel.DefaultBindingProperty('base_color')] +[String] +$BaseColor, +# Set the monochrome of OBSAsciiShader +[ComponentModel.DefaultBindingProperty('monochrome')] +[Management.Automation.SwitchParameter] +$Monochrome, +# Set the character_set of OBSAsciiShader +[Alias('character_set')] +[ComponentModel.DefaultBindingProperty('character_set')] +[Int32] +$CharacterSet, +# Set the note of OBSAsciiShader +[ComponentModel.DefaultBindingProperty('note')] +[String] +$Note, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'ascii' +$ShaderNoun = 'OBSAsciiShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// ASCII shader for use with obs-shaderfilter 7/2020 v1.0 +// https://github.com/Oncorporation/obs-shaderfilter +// Based on the following shaders: +// https://www.shadertoy.com/view/3dtXD8 - Created by DSWebber in 2019-10-24 +// https://www.shadertoy.com/view/lssGDj - Created by movAX13h in 2013-09-22 + +// Modifications of original shaders include: +// - Porting from GLSL to HLSL +// - Combining characters sets from both source shaders +// - Adding support for parameters from OBS for monochrome rendering, scaling and dynamic character set +// +// Add Additional Characters with this tool: http://thrill-project.com/archiv/coding/bitmap/ +// converts a bitmap into int then decodes it to look like text + +uniform int scale< + string label = "Scale"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 1; // Size of characters +uniform float4 base_color< + string label = "Base color"; +> = {0.0,1.0,0.0,1.0}; // Monochrome base color +uniform bool monochrome< + string label = "Monochrome"; +> = false; +uniform int character_set< + string label = "Character set"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Large set of non-letters"; + int option_1_value = 1; + string option_1_label = "Small set of capital letters"; +> = 0; +uniform string note< + string widget_type = "info"; +> = "Base color is used as monochrome base color."; + +float character(int n, float2 p) +{ + p = floor(p*float2(4.0, 4.0) + 2.5); + if (clamp(p.x, 0.0, 4.0) == p.x) + { + if (clamp(p.y, 0.0, 4.0) == p.y) + { + int a = int(round(p.x) + 5.0 * round(p.y)); + if (((n >> a) & 1) == 1) return 1.0; + } + } + return 0.0; +} + +float2 mod(float2 x, float2 y) +{ + return x - y * floor(x/y); +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 iResolution = uv_size*uv_scale; + float2 pix = v_in.pos.xy; + float4 c = image.Sample(textureSampler, floor(pix/float2(scale*8.0,scale*8.0))*float2(scale*8.0,scale*8.0)/iResolution.xy); + + float gray = 0.3 * c.r + 0.59 * c.g + 0.11 * c.b; + + int n; + int charset = clamp(character_set, 0, 1); + + if (charset==0) + { + if (gray <= 0.2) n = 4096; // . + if (gray > 0.2) n = 65600; // : + if (gray > 0.3) n = 332772; // * + if (gray > 0.4) n = 15255086; // o + if (gray > 0.5) n = 23385164; // & + if (gray > 0.6) n = 15252014; // 8 + if (gray > 0.7) n = 13199452; // @ + if (gray > 0.8) n = 11512810; // # + } + else if (charset==1) + { + if (gray <= 0.1) n = 0; + if (gray > 0.1) n = 9616687; // R + if (gray > 0.3) n = 32012382; // S + if (gray > 0.5) n = 16303663; // D + if (gray > 0.7) n = 15255086; // O + if (gray > 0.8) n = 16301615; // B + } + + float2 p = mod(pix/float2(scale*4.0,scale*4.0),float2(2.0,2.0)) - float2(1.0,1.0); + + if (monochrome) + { + c.rgb = base_color.rgb; + } + c = c*character(n, p); + + return c; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSAspectRatioShader.ps1 b/Commands/Shaders/Get-OBSAspectRatioShader.ps1 new file mode 100644 index 000000000..ef4045687 --- /dev/null +++ b/Commands/Shaders/Get-OBSAspectRatioShader.ps1 @@ -0,0 +1,272 @@ +function Get-OBSAspectRatioShader { + +[Alias('Set-OBSAspectRatioShader','Add-OBSAspectRatioShader')] +param( +# Set the ViewProj of OBSAspectRatioShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSAspectRatioShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSAspectRatioShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSAspectRatioShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSAspectRatioShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSAspectRatioShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSAspectRatioShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSAspectRatioShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the borderColor of OBSAspectRatioShader +[ComponentModel.DefaultBindingProperty('borderColor')] +[String] +$BorderColor, +# Set the notes of OBSAspectRatioShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'aspect_ratio' +$ShaderNoun = 'OBSAspectRatioShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro March 8, 2022 - DO NOT USE THIS IT WAS NEVER COMPLETED +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + + +// variables +uniform float4 borderColor = {0,0,0,0}; +float targetaspect = 1.7777777777777777777777f; //16.0f / 9.0f; +uniform string notes; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + + float2 hw = uv_scale; + // determine the game window''s current aspect ratio + float windowaspect = hw.x / hw.y; + + // current viewport height should be scaled by this amount + float scaleheight = windowaspect / targetaspect; + + + // if scaled height is less than current height, add letterbox + if (scaleheight < 1.0f) + { + Rect rect = camera.rect; + + rect.width = 1.0f; + rect.height = scaleheight; + rect.x = 0; + rect.y = (1.0f - scaleheight) / 2.0f; + + camera.rect = rect; + } + else // add pillarbox + { + float scalewidth = 1.0f / scaleheight; + + Rect rect = camera.rect; + + rect.width = scalewidth; + rect.height = 1.0f; + rect.x = (1.0f - scalewidth) / 2.0f; + rect.y = 0; + + camera.rect = rect; + } + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + if (v_in.uv.x < 0 || v_in.uv.x > 1 || v_in.uv.y < 0 || v_in.uv.y > 1) + { + return borderColor; + } + else + { + return image.Sample(textureSampler, v_in.uv); + } +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSBackgroundRemovalShader.ps1 b/Commands/Shaders/Get-OBSBackgroundRemovalShader.ps1 new file mode 100644 index 000000000..a185f2bea --- /dev/null +++ b/Commands/Shaders/Get-OBSBackgroundRemovalShader.ps1 @@ -0,0 +1,315 @@ +function Get-OBSBackgroundRemovalShader { + +[Alias('Set-OBSBackgroundRemovalShader','Add-OBSBackgroundRemovalShader')] +param( +# Set the ViewProj of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSBackgroundRemovalShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSBackgroundRemovalShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSBackgroundRemovalShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSBackgroundRemovalShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSBackgroundRemovalShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSBackgroundRemovalShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the notes of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the target of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('target')] +[String] +$Target, +# Set the color of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('color')] +[String] +$Color, +# Set the opacity of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('opacity')] +[Single] +$Opacity, +# Set the invert of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('invert')] +[Management.Automation.SwitchParameter] +$Invert, +# Set the Convert_709to601 of OBSBackgroundRemovalShader +[Alias('Convert_709to601')] +[ComponentModel.DefaultBindingProperty('Convert_709to601')] +[Management.Automation.SwitchParameter] +$Convert709to601, +# Set the Convert_601to709 of OBSBackgroundRemovalShader +[Alias('Convert_601to709')] +[ComponentModel.DefaultBindingProperty('Convert_601to709')] +[Management.Automation.SwitchParameter] +$Convert601to709, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'background_removal' +$ShaderNoun = 'OBSBackgroundRemovalShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// background removal effect By Charles Fettinger (https://github.com/Oncorporation) 4/2019 +//Converted to OpenGL by Exeldro February 19, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; +uniform string notes = "Opacity between 10 and 20 works. Adjust `Color` from white to fix environmental changes.\r\r\nUsage:\r\n1) Disable `Auto` settings like focus, white balance, etc.\r\n2) Take a video of just the background. \r\n3) Take a frame and use it as the background image. Windows Snipping Tool (%windir%\\system32\\SnippingTool.exe). \r\r\nThis eliminates differences based upon camera/video settings."; + +uniform texture2d target; +uniform float4 color; +uniform float opacity = 15.0; +uniform bool invert; +uniform bool Convert_709to601; +uniform bool Convert_601to709; + + +sampler_state textureSampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +struct VertDataIn { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +struct VertDataOut { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + float2 uv2 : TEXCOORD1; +}; + +float dot(float3 a,float3 b){ + return a.x*b.x+a.y*b.y+a.z*b.z; +} + +//BT.601 to BT.709 +// Correct video colorspace BT.601 [SD] to BT.709 [HD] for HD video input +// Use this shader only if BT.709 [HD] encoded video is incorrectly matrixed to full range RGB with the BT.601 [SD] colorspace. +float4 Convert601to709(float4 rgba) +{ + float3 s1 = rgba.rgb; + s1 = s1.rrr * float3(0.299, -0.1495 / 0.886, 0.5) + s1.ggg * float3(0.587, -0.2935 / 0.886, -0.2935 / 0.701) + s1.bbb * float3(0.114, 0.5, -0.057 / 0.701); // RGB to Y''CbCr, BT.601 [SD] colorspace + return (s1.rrr + float3(0, -0.1674679 / 0.894, 1.8556) * s1.ggg + float3(1.5748, -0.4185031 / 0.894, 0) * s1.bbb).rgbb; // Y''CbCr to RGB output, BT.709 [HD] colorspace +} + +//BT.709 to BT.601 +float4 Convert709to601(float4 rgba) +{ + float3 s1 = rgba.rgb; + s1 = float3(dot(float3(.2126, .7152, .0722), s1), dot(float3(-.1063 / .9278, -.3576 / .9278, .5), s1), dot(float3(.5, -.3576 / .7874, -.0361 / .7874), s1)); + return float3(s1.x + 1.402*s1.z, dot(s1, float3(1, -.202008 / .587, -.419198 / .587)), s1.x + 1.772*s1.y).rgbb; +} + +VertDataOut VSDefault(VertDataIn v_in) +{ + VertDataOut vert_out; + vert_out.pos = mul(float4(v_in.pos.x, v_in.pos.y, v_in.pos.z, 1.0), ViewProj); + vert_out.uv = v_in.uv; + vert_out.uv2 = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +float4 PSColorMaskRGBA(VertDataOut v_in) : TARGET +{ + float Tolerance = opacity * 0.01; + float4 rgba = image.Sample(textureSampler, v_in.uv); + + float4 targetRGB = target.Sample(textureSampler, v_in.uv2) * color; + if (invert){ + targetRGB.rgb = 1.0 - targetRGB.rgb; + } + if (Convert_709to601) + { + rgba.rgb = Convert709to601(rgba).rgb; + targetRGB.rgb = Convert709to601(targetRGB).rgb; + } + + if (Convert_601to709) + { + rgba.rgb = Convert601to709(rgba).rgb; + targetRGB.rbg = Convert601to709(targetRGB).rgb; + } + + float4 shadowRGB = targetRGB * targetRGB; + + if ((abs(targetRGB.r - rgba.r) <= Tolerance && + abs(targetRGB.g - rgba.g) <= Tolerance && + abs(targetRGB.b - rgba.b) <= Tolerance) + || (abs(shadowRGB.r - rgba.r) <= Tolerance && + abs(shadowRGB.g - rgba.g) <= Tolerance && + abs(shadowRGB.b - rgba.b) <= Tolerance)) + { + rgba.rgba = float4(0,0,0,0); + } + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(v_in); + pixel_shader = PSColorMaskRGBA(v_in); + } +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSBlendOpacityShader.ps1 b/Commands/Shaders/Get-OBSBlendOpacityShader.ps1 new file mode 100644 index 000000000..c1b66a74a --- /dev/null +++ b/Commands/Shaders/Get-OBSBlendOpacityShader.ps1 @@ -0,0 +1,255 @@ +function Get-OBSBlendOpacityShader { + +[Alias('Set-OBSBlendOpacityShader','Add-OBSBlendOpacityShader')] +param( +# Set the Vertical of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# Set the Rotational of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Rotational')] +[Management.Automation.SwitchParameter] +$Rotational, +# Set the Rotation_Offset of OBSBlendOpacityShader +[Alias('Rotation_Offset')] +[ComponentModel.DefaultBindingProperty('Rotation_Offset')] +[Single] +$RotationOffset, +# Set the Opacity_Start_Percent of OBSBlendOpacityShader +[Alias('Opacity_Start_Percent')] +[ComponentModel.DefaultBindingProperty('Opacity_Start_Percent')] +[Single] +$OpacityStartPercent, +# Set the Opacity_End_Percent of OBSBlendOpacityShader +[Alias('Opacity_End_Percent')] +[ComponentModel.DefaultBindingProperty('Opacity_End_Percent')] +[Single] +$OpacityEndPercent, +# Set the Spread of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Spread')] +[Single] +$Spread, +# Set the Speed of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Apply_To_Alpha_Layer of OBSBlendOpacityShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the Notes of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'blend_opacity' +$ShaderNoun = 'OBSBlendOpacityShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// opacity blend shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 14, 2022 +uniform bool Vertical; +uniform bool Rotational; +uniform float Rotation_Offset< + string label = "Rotation Offset"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 6.28318531; + float step = 0.01; +> = 0.0; +uniform float Opacity_Start_Percent< + string label = "Opacity Start Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 0.0; +uniform float Opacity_End_Percent< + string label = "Opacity End Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 100.0; +uniform float Spread< + string label = "Spread"; + string widget_type = "slider"; + float minimum = 0.25; + float maximum = 10.0; + float step = 0.01; +> = 0.5; +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.0; +uniform bool Apply_To_Alpha_Layer = true; +uniform string Notes< + string widget_type = "info"; +> = "Spread is wideness of opacity blend and is limited between .25 and 10. Edit at your own risk. Invert Start and End to Reverse effect."; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 point_color = image.Sample(textureSampler, v_in.uv); + float luminance = 0.299*point_color.r+0.587*point_color.g+0.114*point_color.b; + float4 gray = float4(luminance,luminance,luminance, 1); + + float2 lPos = (v_in.uv * uv_scale + uv_offset) / clamp(Spread, 0.25, 10.0); + float time = (elapsed_time * clamp(Speed, -5.0, 5.0)) / clamp(Spread, 0.25, 10.0); + float dist = distance(v_in.uv , (float2(0.99, 0.99) * uv_scale + uv_offset)); + + if (point_color.a > 0.0 || Apply_To_Alpha_Layer == false) + { + //set opacity and direction + float opacity = (-1 * lPos.x) * 0.5; + + if (Rotational && (Vertical == false)) + { + float timeWithOffset = time + Rotation_Offset; + float sine = sin(timeWithOffset); + float cosine = cos(timeWithOffset); + opacity = (lPos.x * cosine + lPos.y * sine) * 0.5; + } + + if (Vertical && (Rotational == false)) + { + opacity = (-1 * lPos.y) * 0.5; + } + + opacity += time; + opacity = frac(opacity); + point_color.a = lerp(Opacity_Start_Percent * 0.01, Opacity_End_Percent * 0.01, clamp(opacity, 0.0, 1.0)); + } + return point_color; +} + + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSBlinkShader.ps1 b/Commands/Shaders/Get-OBSBlinkShader.ps1 new file mode 100644 index 000000000..94acf8492 --- /dev/null +++ b/Commands/Shaders/Get-OBSBlinkShader.ps1 @@ -0,0 +1,152 @@ +function Get-OBSBlinkShader { + +[Alias('Set-OBSBlinkShader','Add-OBSBlinkShader')] +param( +# Set the speed of OBSBlinkShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'blink' +$ShaderNoun = 'OBSBlinkShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 color = image.Sample(textureSampler, v_in.uv); + float t = elapsed_time * speed; + return float4(color.r, color.g, color.b, color.a * (1 + sin(t)) / 2); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSBloomShader.ps1 b/Commands/Shaders/Get-OBSBloomShader.ps1 new file mode 100644 index 000000000..4d5ad0abd --- /dev/null +++ b/Commands/Shaders/Get-OBSBloomShader.ps1 @@ -0,0 +1,218 @@ +function Get-OBSBloomShader { + +[Alias('Set-OBSBloomShader','Add-OBSBloomShader')] +param( +# Set the Angle_Steps of OBSBloomShader +[Alias('Angle_Steps')] +[ComponentModel.DefaultBindingProperty('Angle_Steps')] +[Int32] +$AngleSteps, +# Set the Radius_Steps of OBSBloomShader +[Alias('Radius_Steps')] +[ComponentModel.DefaultBindingProperty('Radius_Steps')] +[Int32] +$RadiusSteps, +# Set the ampFactor of OBSBloomShader +[ComponentModel.DefaultBindingProperty('ampFactor')] +[Single] +$AmpFactor, +# Set the notes of OBSBloomShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'bloom' +$ShaderNoun = 'OBSBloomShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Bloom shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 15, 2022 +uniform int Angle_Steps< + string label = "Angle Steps"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 5; // +uniform int Radius_Steps< + string label = "Radius Steps"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 20; + int step = 1; +> = 9; // +uniform float ampFactor< + string label = "amp Factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 2.0; +uniform string notes< + string widget_type = "info"; +> = "Steps limited in range from 0 to 20. Edit bloom.shader to remove limits at your own risk."; + +float4 mainImage(VertData v_in) : TARGET +{ + int radiusSteps = clamp(Radius_Steps, 0, 20); + int angleSteps = clamp(Angle_Steps, 1, 20); + float PI = 3.1415926535897932384626433832795;//acos(-1); + float minRadius = (0.0 * uv_pixel_interval.y); + float maxRadius = (10.0 * uv_pixel_interval.y); + + float4 c0 = image.Sample(textureSampler, v_in.uv); + float4 outputPixel = c0; + float4 accumulatedColor = float4(0,0,0,0); + + int totalSteps = radiusSteps * angleSteps; + float angleDelta = (2.0 * PI) / float(angleSteps); + float radiusDelta = (maxRadius - minRadius) / float(radiusSteps); + + for (int radiusStep = 0; radiusStep < radiusSteps; radiusStep++) { + float radius = minRadius + float(radiusStep) * radiusDelta; + + for (float angle=0.0; angle <(2.0*PI); angle += angleDelta) { + float2 currentCoord; + + float xDiff = radius * cos(angle); + float yDiff = radius * sin(angle); + + currentCoord = v_in.uv + float2(xDiff, yDiff); + float4 currentColor =image.Sample(textureSampler, currentCoord); + float currentFraction = float(radiusSteps+1 - radiusStep) / float(radiusSteps + 1); + + accumulatedColor += currentFraction * currentColor / float(totalSteps); + + } + } + + outputPixel += accumulatedColor * ampFactor; + + return outputPixel; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSBorderShader.ps1 b/Commands/Shaders/Get-OBSBorderShader.ps1 new file mode 100644 index 000000000..b94064f52 --- /dev/null +++ b/Commands/Shaders/Get-OBSBorderShader.ps1 @@ -0,0 +1,151 @@ +function Get-OBSBorderShader { + +[Alias('Set-OBSBorderShader','Add-OBSBorderShader')] +param( +# Set the borderColor of OBSBorderShader +[ComponentModel.DefaultBindingProperty('borderColor')] +[String] +$BorderColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'border' +$ShaderNoun = 'OBSBorderShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float4 borderColor; + +float4 mainImage(VertData v_in) : TARGET +{ + if (v_in.uv.x < 0 || v_in.uv.x > 1 || v_in.uv.y < 0 || v_in.uv.y > 1) + { + return borderColor; + } + else + { + return image.Sample(textureSampler, v_in.uv); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSBoxBlurShader.ps1 b/Commands/Shaders/Get-OBSBoxBlurShader.ps1 new file mode 100644 index 000000000..75e4955cf --- /dev/null +++ b/Commands/Shaders/Get-OBSBoxBlurShader.ps1 @@ -0,0 +1,237 @@ +function Get-OBSBoxBlurShader { + +[Alias('Set-OBSBoxBlurShader','Add-OBSBoxBlurShader')] +param( +# Set the Strength of OBSBoxBlurShader +[ComponentModel.DefaultBindingProperty('Strength')] +[Int32] +$Strength, +# Set the Mask_Left of OBSBoxBlurShader +[Alias('Mask_Left')] +[ComponentModel.DefaultBindingProperty('Mask_Left')] +[Single] +$MaskLeft, +# Set the Mask_Right of OBSBoxBlurShader +[Alias('Mask_Right')] +[ComponentModel.DefaultBindingProperty('Mask_Right')] +[Single] +$MaskRight, +# Set the Mask_Top of OBSBoxBlurShader +[Alias('Mask_Top')] +[ComponentModel.DefaultBindingProperty('Mask_Top')] +[Single] +$MaskTop, +# Set the Mask_Bottom of OBSBoxBlurShader +[Alias('Mask_Bottom')] +[ComponentModel.DefaultBindingProperty('Mask_Bottom')] +[Single] +$MaskBottom, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'box-blur' +$ShaderNoun = 'OBSBoxBlurShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int Strength< + string label = "Strength (1)"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 25; + int step = 1; +> = 1; +uniform float Mask_Left< + string label = "Mask left (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Right< + string label = "Mask right (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Top< + string label = "Mask top (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Bottom< + string label = "Mask bottom (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +float4 mainImage(VertData v_in) : TARGET +{ + if(Strength <= 0) + return image.Sample(textureSampler, v_in.uv); + + if(Mask_Left + Mask_Right > 1.0){ + if(v_in.uv.x > Mask_Left || 1.0 - v_in.uv.x > Mask_Right ){ + return image.Sample(textureSampler, v_in.uv); + } + }else{ + if((v_in.uv.x > Mask_Left) && (1.0-v_in.uv.x > Mask_Right)){ + return image.Sample(textureSampler, v_in.uv); + } + } + if(Mask_Top + Mask_Bottom > 1.0){ + if(v_in.uv.y > Mask_Top || 1.0 - v_in.uv.y > Mask_Bottom){ + return image.Sample(textureSampler, v_in.uv); + } + }else { + if((v_in.uv.y > Mask_Top) && (1.0-v_in.uv.y > Mask_Bottom)){ + return image.Sample(textureSampler, v_in.uv); + } + } + float transparent = 0.0; + int count = 1; + float samples = 0.0; + float4 c = float4(0.0, 0.0, 0.0, 0.0); + float Steps = float(Strength); + + [loop] for (int i = -Strength; i <= Strength; i++) { + [loop] for (int k = -Strength; k <= Strength; k++) { + float4 sc = image.Sample(textureSampler, v_in.uv+float2(float(i), float(k))/uv_size*Steps); + transparent += sc.a; + count++; + c += sc * sc.a; + samples += sc.a; + } + } + if(samples > 0.0) + c /= samples; + + c.a = transparent / float(count); + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSBulgePinchShader.ps1 b/Commands/Shaders/Get-OBSBulgePinchShader.ps1 new file mode 100644 index 000000000..8b734c1b2 --- /dev/null +++ b/Commands/Shaders/Get-OBSBulgePinchShader.ps1 @@ -0,0 +1,227 @@ +function Get-OBSBulgePinchShader { + +[Alias('Set-OBSBulgePinchShader','Add-OBSBulgePinchShader')] +param( +# Set the radius of OBSBulgePinchShader +[ComponentModel.DefaultBindingProperty('radius')] +[Single] +$Radius, +# Set the magnitude of OBSBulgePinchShader +[ComponentModel.DefaultBindingProperty('magnitude')] +[Single] +$Magnitude, +# Set the center_x of OBSBulgePinchShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSBulgePinchShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# Set the animate of OBSBulgePinchShader +[ComponentModel.DefaultBindingProperty('animate')] +[Management.Automation.SwitchParameter] +$Animate, +# Set the notes of OBSBulgePinchShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'BulgePinch' +$ShaderNoun = 'OBSBulgePinchShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Created by Radegast Stravinsky for obs-shaderfilter 9/2020 +uniform float radius< + string label = "Radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 0.0; +uniform float magnitude< + string label = "Magnitude"; + string widget_type = "slider"; + float minimum = -1.3333; + float maximum = 1.3333; + float step = 0.01; +> = 0.0; +uniform float center_x< + string label = "Center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.01; +> = 0.25; +uniform float center_y< + string label = "Center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.01; +> = 0.25; +uniform bool animate = false; + +uniform string notes< + string widget_type = "info"; +> = "Distorts the screen, expanding or drawing in pixels around a point." + + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center = float2(center_x, center_y); + VertData v_out; + v_out.pos = v_in.pos; + float2 hw = uv_size; + float ar = 1. * hw.y/hw.x; + v_out.uv = 1. * v_in.uv - center; + + center.x /= ar; + v_out.uv.x /= ar; + + float dist = distance(v_out.uv, center); + if (dist < radius) + { + float anim_mag = (animate ? magnitude * sin(radians(elapsed_time * 20)) : magnitude); + float percent = dist/radius; + if(anim_mag > 0) + v_out.uv = (v_out.uv - center) * lerp(1.0, smoothstep(0.0, radius/dist, percent), anim_mag * 0.75); + else + v_out.uv = (v_out.uv-center) * lerp(1.0, pow(percent, 1.0 + anim_mag * 0.75) * radius/dist, 1.0 - percent); + + v_out.uv += (2 * center); + v_out.uv.x *= ar; + + return image.Sample(textureSampler, v_out.uv); + } + else + { + return image.Sample(textureSampler, v_in.uv); + } +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSBurnShader.ps1 b/Commands/Shaders/Get-OBSBurnShader.ps1 new file mode 100644 index 000000000..d3965d3bd --- /dev/null +++ b/Commands/Shaders/Get-OBSBurnShader.ps1 @@ -0,0 +1,343 @@ +function Get-OBSBurnShader { + +[Alias('Set-OBSBurnShader','Add-OBSBurnShader')] +param( +# Set the Burn_Gradient of OBSBurnShader +[Alias('Burn_Gradient')] +[ComponentModel.DefaultBindingProperty('Burn_Gradient')] +[String] +$BurnGradient, +# Set the Speed of OBSBurnShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Gradient_Adjust of OBSBurnShader +[Alias('Gradient_Adjust')] +[ComponentModel.DefaultBindingProperty('Gradient_Adjust')] +[Single] +$GradientAdjust, +# Set the Dissolve_Value of OBSBurnShader +[Alias('Dissolve_Value')] +[ComponentModel.DefaultBindingProperty('Dissolve_Value')] +[Single] +$DissolveValue, +# Set the Animated of OBSBurnShader +[ComponentModel.DefaultBindingProperty('Animated')] +[Management.Automation.SwitchParameter] +$Animated, +# Set the Apply_to_Channel of OBSBurnShader +[Alias('Apply_to_Channel')] +[ComponentModel.DefaultBindingProperty('Apply_to_Channel')] +[Management.Automation.SwitchParameter] +$ApplyToChannel, +# Set the Apply_Smoke of OBSBurnShader +[Alias('Apply_Smoke')] +[ComponentModel.DefaultBindingProperty('Apply_Smoke')] +[Management.Automation.SwitchParameter] +$ApplySmoke, +# Set the Smoke_Horizonal_Speed of OBSBurnShader +[Alias('Smoke_Horizonal_Speed')] +[ComponentModel.DefaultBindingProperty('Smoke_Horizonal_Speed')] +[Single] +$SmokeHorizonalSpeed, +# Set the Smoke_Vertical_Speed of OBSBurnShader +[Alias('Smoke_Vertical_Speed')] +[ComponentModel.DefaultBindingProperty('Smoke_Vertical_Speed')] +[Single] +$SmokeVerticalSpeed, +# Set the Iterations of OBSBurnShader +[ComponentModel.DefaultBindingProperty('Iterations')] +[Int32] +$Iterations, +# Set the Notes of OBSBurnShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'burn' +$ShaderNoun = 'OBSBurnShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Burn shader by Charles Fettinger (https://github.com/Oncorporation) 4/2019 +//for use with obs-shaderfilter 1.0 +//Converted to OpenGL by Exeldro February 17, 2022 +float4 mod(float4 x, float4 y) +{ + return x - y * floor(x / y); +} +float4 mod289(float4 x) +{ + return x - floor(x / 289.0) * 289.0; +} +float4 permute(float4 x) +{ + return mod289(((x * 34.0) + 1.0) * x); +} +float4 taylorInvSqrt(float4 r) +{ + return 1.79284291400159 - r * 0.85373472095314; +} +float2 fade(float2 t) { + return t * t* t* (t * (t * 6.0 - 15.0) + 10.0); +} + +float dot(float2 a,float2 b){ + return a.x*b.x+a.y*b.y; +} + +// Classic Perlin noise +float cnoise(float2 P) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac(P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + float4 i = permute(permute(ix) + iy); + float4 gx = frac(i / 41.0) * 2.0 - 1.0; + float4 gy = abs(gx) - 0.5; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + float2 g00 = float2(gx.x, gy.x); + float2 g10 = float2(gx.y, gy.y); + float2 g01 = float2(gx.z, gy.z); + float2 g11 = float2(gx.w, gy.w); + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} +// Classic Perlin noise, periodic variant +float pnoise(float2 P, float2 rep) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac(P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod(Pi, rep.xyxy); // To create noise with explicit period + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + float4 i = permute(permute(ix) + iy); + float4 gx = frac(i / 41.0) * 2.0 - 1.0; + float4 gy = abs(gx) - 0.5; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + float2 g00 = float2(gx.x, gy.x); + float2 g10 = float2(gx.y, gy.y); + float2 g01 = float2(gx.z, gy.z); + float2 g11 = float2(gx.w, gy.w); + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} + +uniform texture2d Burn_Gradient = "burngradient.png"; +uniform float Speed = 0.33; +uniform float Gradient_Adjust = 0.85; +uniform float Dissolve_Value = 1.43; +uniform bool Animated; +uniform bool Apply_to_Channel; +uniform bool Apply_Smoke = true; +uniform float Smoke_Horizonal_Speed = 0.3; +uniform float Smoke_Vertical_Speed = 0.17; +uniform int Iterations = 4; +uniform string Notes< + string widget_type = "info"; +> = "Animate refers to the burn effect. Speed is general and is reversed with negative numbers. Gradient Adjust is the width of the burn gradient. Use the burngradient.png. Dissolve Value is important. Apply Smoke adds the scrolling smoke."; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + float4 smoke = float4(1.0,1.0,1.0,1.0); + float4 result = smoke; + float t = elapsed_time * Speed; + float cycle = 1 - max((sin(t) * 2) - 1, 0); //create a negative cycle time as a delay + float2 dir = float2(Smoke_Horizonal_Speed, Smoke_Vertical_Speed); + //float largestDistance = sqrt(pow(uv_size.x, 2) + pow(uv_size.y, 2)); + + float perlin = 0.5; + float smoke_perlin = 0; + float scale = 1; + float w = 0.5; + + for (int i = 0; i < Iterations; i++) { + //float2 coord = v_in.uv * scale;// (v_in.uv + t * dir)* scale; + float2 coord = (v_in.uv + t * (dir * .1)) * scale; + float2 period = scale * dir; + perlin += pnoise(coord, period) * w; + if (Apply_Smoke) + smoke_perlin += cnoise((v_in.uv + t * dir) * scale) * w * .5; + + scale *= 2.0; + w *= 0.5; + } + + //float toPoint = abs(length(v_in.uv - (v_in.uv * .5)) / ((1.0001 - t) * largestDistance)); + if (!Animated) + cycle = 1; + float d = clamp(((Dissolve_Value * cycle + perlin) ) - 1.0, -.01, 0.99); + float overOne = saturate(d * Gradient_Adjust); + float4 burn = Burn_Gradient.Sample(textureSampler, float2(overOne, 0.5)); + + if (Apply_to_Channel) { + result = c * burn; + } + else { + result = float4(perlin, perlin, perlin, 1.0) * burn; + } + + if (smoke_perlin > 0) { + smoke *= smoke_perlin; + if (result.a <= 0.04) + result = float4(smoke.rgb, smoke_perlin); + result += smoke; + } + + return result; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSCartoonShader.ps1 b/Commands/Shaders/Get-OBSCartoonShader.ps1 new file mode 100644 index 000000000..b0c9258fb --- /dev/null +++ b/Commands/Shaders/Get-OBSCartoonShader.ps1 @@ -0,0 +1,286 @@ +function Get-OBSCartoonShader { + +[Alias('Set-OBSCartoonShader','Add-OBSCartoonShader')] +param( +# Set the ViewProj of OBSCartoonShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSCartoonShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSCartoonShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSCartoonShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSCartoonShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSCartoonShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSCartoonShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSCartoonShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the notes of OBSCartoonShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the hue_steps of OBSCartoonShader +[Alias('hue_steps')] +[ComponentModel.DefaultBindingProperty('hue_steps')] +[Int32] +$HueSteps, +# Set the value_steps of OBSCartoonShader +[Alias('value_steps')] +[ComponentModel.DefaultBindingProperty('value_steps')] +[Int32] +$ValueSteps, +# Set the Apply_To_Alpha_Layer of OBSCartoonShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'cartoon' +$ShaderNoun = 'OBSCartoonShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Darklink''s shader modified to by Charles ''Surn'' Fettinger for use with obs-shaderfilter 3/2019 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; +uniform string notes = "5/2 seems reasonable"; + +uniform int hue_steps = 5; +uniform int value_steps = 2; +uniform bool Apply_To_Alpha_Layer = true; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +struct VertDataIn { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +struct VertDataOut { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertDataOut VSDefault(VertDataIn v_in) +{ + VertDataOut vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv; + return vert_out; +} + +float3 rgb2hsv(float3 c) +{ + float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + float4 p = lerp(float4(c.bg, K.wz), float4(c.gb, K.xy), step(c.b, c.g)); + float4 q = lerp(float4(p.xyw, c.r), float4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +float3 hsv2rgb(float3 c) +{ + float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y); +} + +float fit(float v, int factor) +{ + return round(v * factor) / factor; +} + +float hue_wrap(float h) +{ + return fmod(h + 1, 2) - 1; + if(h > 1) + return h - 2; + if(h < -1) + return h + 2; + return h; +} + +float4 PassThrough(VertDataOut v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv); + if (rgba.a > 0.0 || Apply_To_Alpha_Layer == false) + { + float3 hsv = rgb2hsv(rgba.rgb); + hsv = float3(fit(hsv.x, hue_steps), hsv.y, fit(hsv.z, value_steps)); + //hsv = float3(hue_wrap(hsv.x + 0.5), 1, hsv.z); + rgba = float4(hsv2rgb(hsv), rgba.a); + //return float4(fit(rgba.r), fit(rgba.g), fit(rgba.b), rgba.a); + } + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(v_in); + pixel_shader = PassThrough(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSCellShadedShader.ps1 b/Commands/Shaders/Get-OBSCellShadedShader.ps1 new file mode 100644 index 000000000..bdfd8b084 --- /dev/null +++ b/Commands/Shaders/Get-OBSCellShadedShader.ps1 @@ -0,0 +1,217 @@ +function Get-OBSCellShadedShader { + +[Alias('Set-OBSCellShadedShader','Add-OBSCellShadedShader')] +param( +# Set the Angle_Steps of OBSCellShadedShader +[Alias('Angle_Steps')] +[ComponentModel.DefaultBindingProperty('Angle_Steps')] +[Int32] +$AngleSteps, +# Set the Radius_Steps of OBSCellShadedShader +[Alias('Radius_Steps')] +[ComponentModel.DefaultBindingProperty('Radius_Steps')] +[Int32] +$RadiusSteps, +# Set the ampFactor of OBSCellShadedShader +[ComponentModel.DefaultBindingProperty('ampFactor')] +[Single] +$AmpFactor, +# Set the notes of OBSCellShadedShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'cell_shaded' +$ShaderNoun = 'OBSCellShadedShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Cell Shaded shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int Angle_Steps< + string label = "Angle Steps"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 5; +uniform int Radius_Steps< + string label = "Radius Steps"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 20; + int step = 1; +> = 9; +uniform float ampFactor< + string label = "amp Factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 2.0; +uniform string notes< + string widget_type = "info"; +> = "Steps limited in range from 0 to 20. Edit cell_shaded.shader to remove limits at your own risk."; + +float4 mainImage(VertData v_in) : TARGET +{ + float radiusSteps = clamp(Radius_Steps, 0, 20); + float angleSteps = clamp(Angle_Steps, 1, 20); + float PI = 3.1415926535897932384626433832795;//acos(-1); + int totalSteps = int(radiusSteps * angleSteps); + float minRadius = (3 * uv_pixel_interval.y); + float maxRadius = (24 * uv_pixel_interval.y); + + float angleDelta = ((2 * PI) / angleSteps); + float radiusDelta = ((maxRadius - minRadius) / radiusSteps); + + float4 c0 = image.Sample(textureSampler, v_in.uv); + float4 origColor = c0; + float4 accumulatedColor = float4(0,0,0,0); + + for (int radiusStep = 0; radiusStep < radiusSteps; radiusStep++) { + float radius = minRadius + radiusStep * radiusDelta; + + for (float angle=0; angle <(2*PI); angle += angleDelta) { + float2 currentCoord; + + float xDiff = radius * cos(angle); + float yDiff = radius * sin(angle); + + currentCoord = v_in.uv + float2(xDiff, yDiff); + float4 currentColor = image.Sample(textureSampler, currentCoord); + float4 colorDiff = abs(c0 - currentColor); + float currentFraction = (radiusSteps + 1 - radiusStep) / (radiusSteps + 1); + accumulatedColor += currentFraction * colorDiff / totalSteps; + + } + } + accumulatedColor *= ampFactor; + + return c0 - accumulatedColor; // Cell shaded style +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSChromaUVDistortionShader.ps1 b/Commands/Shaders/Get-OBSChromaUVDistortionShader.ps1 new file mode 100644 index 000000000..b18e89371 --- /dev/null +++ b/Commands/Shaders/Get-OBSChromaUVDistortionShader.ps1 @@ -0,0 +1,205 @@ +function Get-OBSChromaUVDistortionShader { + +[Alias('Set-OBSChromaUVDistortionShader','Add-OBSChromaUVDistortionShader')] +param( +# Set the distortion of OBSChromaUVDistortionShader +[ComponentModel.DefaultBindingProperty('distortion')] +[Single] +$Distortion, +# Set the amplitude of OBSChromaUVDistortionShader +[ComponentModel.DefaultBindingProperty('amplitude')] +[Single] +$Amplitude, +# Set the chroma of OBSChromaUVDistortionShader +[ComponentModel.DefaultBindingProperty('chroma')] +[Single] +$Chroma, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Chroma+UV-Distortion' +$ShaderNoun = 'OBSChromaUVDistortionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/WsdyRN + +//Higher values = less distortion +uniform float distortion< + string label = "Distortion"; + string widget_type = "slider"; + float minimum = 5.0; + float maximum = 1000.0; + float step = 0.01; +> = 75.; +//Higher values = tighter distortion +uniform float amplitude< + string label = "Amplitude"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 10.; +//Higher values = more color distortion +uniform float chroma< + string label = "Chroma"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 6.28318531; + float step = 0.01; +> = .5; + +float2 zoomUv(float2 uv, float zoom) { + float2 uv1 = uv; + uv1 += .5; + uv1 += zoom/2.-1.; + uv1 /= zoom; + return uv1; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uvt = v_in.uv; + + float2 uvtR = uvt; + float2 uvtG = uvt; + float2 uvtB = uvt; + + //Uncomment the following line to get varying chroma distortion + //chroma = sin(elapsed_time)/2.+.5; + + uvtR += float2(sin(uvt.y*amplitude+elapsed_time)/distortion, cos(uvt.x*amplitude+elapsed_time)/distortion); + uvtG += float2(sin(uvt.y*amplitude+elapsed_time+chroma)/distortion, cos(uvt.x*amplitude+elapsed_time+chroma)/distortion); + uvtB += float2(sin(uvt.y*amplitude+elapsed_time+(chroma*2.))/distortion, cos(uvt.x*amplitude+elapsed_time+(chroma*2.))/distortion); + + float2 uvR = zoomUv(uvtR, 1.1); + float2 uvG = zoomUv(uvtG, 1.1); + float2 uvB = zoomUv(uvtB, 1.1); + + float4 colR = image.Sample(textureSampler, uvR); + float4 colG = image.Sample(textureSampler, uvG); + float4 colB = image.Sample(textureSampler, uvB); + + return float4(colR.r, colG.g, colB.b, (colR.a + colG.a + colB.a) / 3.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSChromaticAberrationShader.ps1 b/Commands/Shaders/Get-OBSChromaticAberrationShader.ps1 new file mode 100644 index 000000000..0d8eef7c4 --- /dev/null +++ b/Commands/Shaders/Get-OBSChromaticAberrationShader.ps1 @@ -0,0 +1,376 @@ +function Get-OBSChromaticAberrationShader { + +[Alias('Set-OBSChromaticAberrationShader','Add-OBSChromaticAberrationShader')] +param( +# Set the power of OBSChromaticAberrationShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# Set the gamma of OBSChromaticAberrationShader +[ComponentModel.DefaultBindingProperty('gamma')] +[Single] +$Gamma, +# Set the num_iter of OBSChromaticAberrationShader +[Alias('num_iter')] +[ComponentModel.DefaultBindingProperty('num_iter')] +[Int32] +$NumIter, +# Set the distort_radial of OBSChromaticAberrationShader +[Alias('distort_radial')] +[ComponentModel.DefaultBindingProperty('distort_radial')] +[Management.Automation.SwitchParameter] +$DistortRadial, +# Set the distort_barrel of OBSChromaticAberrationShader +[Alias('distort_barrel')] +[ComponentModel.DefaultBindingProperty('distort_barrel')] +[Management.Automation.SwitchParameter] +$DistortBarrel, +# Set the offset_spectrum_ycgco of OBSChromaticAberrationShader +[Alias('offset_spectrum_ycgco')] +[ComponentModel.DefaultBindingProperty('offset_spectrum_ycgco')] +[Management.Automation.SwitchParameter] +$OffsetSpectrumYcgco, +# Set the offset_spectrum_yuv of OBSChromaticAberrationShader +[Alias('offset_spectrum_yuv')] +[ComponentModel.DefaultBindingProperty('offset_spectrum_yuv')] +[Management.Automation.SwitchParameter] +$OffsetSpectrumYuv, +# Set the use_random of OBSChromaticAberrationShader +[Alias('use_random')] +[ComponentModel.DefaultBindingProperty('use_random')] +[Management.Automation.SwitchParameter] +$UseRandom, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'chromatic-aberration' +$ShaderNoun = 'OBSChromaticAberrationShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/XssGz8 +//Converted to OpenGL by Exeldro February 14, 2022 + black background removed February 23, 2022 +uniform float power< + string label = "Power"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 0.01; +uniform float gamma< + string label = "Gamma"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 3.0; + float step = 0.01; +> = 2.2; +uniform int num_iter< + string label = "Number iterations"; + string widget_type = "slider"; + int minimum = 3; + int maximum = 25; + int step = 1; +> = 7; +uniform bool distort_radial = false; +uniform bool distort_barrel = false; +uniform bool offset_spectrum_ycgco = false; +uniform bool offset_spectrum_yuv = false; +uniform bool use_random = true; + +float2 remap( float2 t, float2 a, float2 b ) { + return clamp( (t - a) / (b - a), 0.0, 1.0 ); +} + +float3 spectrum_offset_rgb( float t ) +{ + float t0 = 3.0 * t - 1.5; + float3 ret = clamp( float3( -t0, 1.0-abs(t0), t0), 0.0, 1.0); + return ret; +} + + +float3 lin2srgb( float3 c ) +{ + return pow( c, float3(gamma, gamma, gamma) ); +} +float3 srgb2lin( float3 c ) +{ + return pow( c, float3(1.0/gamma, 1.0/gamma, 1.0/gamma)); +} + +float3 yCgCo2rgb(float3 ycc) +{ + float R = ycc.x - ycc.y + ycc.z; + float G = ycc.x + ycc.y; + float B = ycc.x - ycc.y - ycc.z; + return float3(R,G,B); +} + +float3 spectrum_offset_ycgco( float t ) +{ + //float3 ygo = float3( 1.0, 1.5*t, 0.0 ); //green-pink + //float3 ygo = float3( 1.0, -1.5*t, 0.0 ); //green-purple + float3 ygo = float3( 1.0, 0.0, -1.25*t ); //cyan-orange + //float3 ygo = float3( 1.0, 0.0, 1.5*t ); //brownyello-blue + return yCgCo2rgb( ygo ); +} + +float3 yuv2rgb( float3 yuv ) +{ + float3 rgb; + rgb.r = yuv.x + yuv.z * 1.13983; + rgb.g = yuv.x + dot( float2(-0.39465, -0.58060), yuv.yz ); + rgb.b = yuv.x + yuv.y * 2.03211; + return rgb; +} + +float2 radialdistort(float2 coord, float2 amt) +{ + float2 cc = coord - 0.5; + return coord + 2.0 * cc * amt; +} + +float2 barrelDistortion( float2 p, float2 amt ) +{ + p = 2.0 * p - 1.0; + + /* + const float maxBarrelPower = 5.0; + //note: http://glsl.heroku.com/e#3290.7 , copied from Little Grasshopper + float theta = atan(p.y, p.x); + float2 radius = float2( length(p) ); + radius = pow(radius, 1.0 + maxBarrelPower * amt); + p.x = radius.x * cos(theta); + p.y = radius.y * sin(theta); + + /*/ + // much faster version + //const float maxBarrelPower = 5.0; + //float radius = length(p); + float maxBarrelPower = sqrt(5.0); + float radius = dot(p,p); //faster but doesn''t match above accurately + p *= pow(float2(radius, radius), maxBarrelPower * amt); + /* */ + + return p * 0.5 + 0.5; +} + +float2 brownConradyDistortion(float2 uv, float dist) +{ + uv = uv * 2.0 - 1.0; + // positive values of K1 give barrel distortion, negative give pincushion + float barrelDistortion1 = 0.1 * dist; // K1 in text books + float barrelDistortion2 = -0.025 * dist; // K2 in text books + + float r2 = dot(uv,uv); + uv *= 1.0 + barrelDistortion1 * r2 + barrelDistortion2 * r2 * r2; + //uv *= 1.0 + barrelDistortion1 * r2; + + // tangential distortion (due to off center lens elements) + // is not modeled in this function, but if it was, the terms would go here + return uv * 0.5 + 0.5; +} + +float2 distort( float2 uv, float t, float2 min_distort, float2 max_distort ) +{ + float2 dist = float2(min_distort.x * (1.0-t) +max_distort.x * t, min_distort.y * (1.0-t) +max_distort.y * t); + //float2 dist = mix( min_distort, max_distort, t ); + if (distort_radial) + return radialdistort( uv, 2.0 * dist ); + + if(distort_barrel) + return barrelDistortion( uv, 1.75 * dist ); //distortion at center + return brownConradyDistortion( uv, 75.0 * dist.x ); +} + +// ==== + +float3 spectrum_offset_yuv( float t ) +{ + //float3 yuv = float3( 1.0, 3.0*t, 0.0 ); //purple-green + //float3 yuv = float3( 1.0, 0.0, 2.0*t ); //purple-green + float3 yuv = float3( 1.0, 0.0, -1.0*t ); //cyan-orange + //float3 yuv = float3( 1.0, -0.75*t, 0.0 ); //brownyello-blue + return yuv2rgb( yuv ); +} + +float3 spectrum_offset( float t ) +{ + if(offset_spectrum_ycgco) + return spectrum_offset_ycgco( t ); + if(offset_spectrum_yuv) + return spectrum_offset_yuv( t ); + return spectrum_offset_rgb( t ); + //return srgb2lin( spectrum_offset_rgb( t ) ); + //return lin2srgb( spectrum_offset_rgb( t ) ); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 max_distort = float2(power, power); + float2 min_distort = 0.5 * max_distort; + + float2 oversiz = distort(float2(1.0, 1.0), 1.0, min_distort, max_distort); + + float2 uv = remap( v_in.uv, 1.0-oversiz, oversiz ); + + //debug oversiz + //float2 distuv = distort( uv, 1.0, max_distort ); + //if ( abs(distuv.x-0.5)>0.5 || abs(distuv.y-0.5)>0.5) + //{ + // fragColor = float4( 1.0, 0.0, 0.0, 1.0 ); return; + //} + + + float stepsiz = 1.0 / (float(num_iter)-1.0); + float rnd = 0.0; + if(use_random) + rnd = rand_f; + + float t = rnd * stepsiz; + + float3 sumcol = float3(0.0, 0.0, 0.0); + float3 sumw = float3(0.0, 0.0, 0.0); + float colA = 0.0; + + for ( int i=0; iAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSCircleMaskFilterShader.ps1 b/Commands/Shaders/Get-OBSCircleMaskFilterShader.ps1 new file mode 100644 index 000000000..7b9dc2887 --- /dev/null +++ b/Commands/Shaders/Get-OBSCircleMaskFilterShader.ps1 @@ -0,0 +1,238 @@ +function Get-OBSCircleMaskFilterShader { + +[Alias('Set-OBSCircleMaskFilterShader','Add-OBSCircleMaskFilterShader')] +param( +# Set the Radius of OBSCircleMaskFilterShader +[ComponentModel.DefaultBindingProperty('Radius')] +[Single] +$Radius, +# Set the Circle_Offset_X of OBSCircleMaskFilterShader +[Alias('Circle_Offset_X')] +[ComponentModel.DefaultBindingProperty('Circle_Offset_X')] +[Int32] +$CircleOffsetX, +# Set the Circle_Offset_Y of OBSCircleMaskFilterShader +[Alias('Circle_Offset_Y')] +[ComponentModel.DefaultBindingProperty('Circle_Offset_Y')] +[Int32] +$CircleOffsetY, +# Set the Source_Offset_X of OBSCircleMaskFilterShader +[Alias('Source_Offset_X')] +[ComponentModel.DefaultBindingProperty('Source_Offset_X')] +[Int32] +$SourceOffsetX, +# Set the Source_Offset_Y of OBSCircleMaskFilterShader +[Alias('Source_Offset_Y')] +[ComponentModel.DefaultBindingProperty('Source_Offset_Y')] +[Int32] +$SourceOffsetY, +# Set the Antialiasing of OBSCircleMaskFilterShader +[ComponentModel.DefaultBindingProperty('Antialiasing')] +[Management.Automation.SwitchParameter] +$Antialiasing, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'circle-mask-filter' +$ShaderNoun = 'OBSCircleMaskFilterShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Circle Mask Filter version 1.01, for OBS Shaderfilter +// Copyright 2022 by SkeletonBow +// Twitter: +// Twitch: +// License: GNU GPLv2 +// +// Changelog: +// 1.01 - Don''t saturate() Radius parameter to allow oversizing to cover entire input texture. +// 1.0 - Initial release + +uniform float Radius< + string label = "Radius"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform int Circle_Offset_X< + string label = "Circle Offset X"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +> = 0; +uniform int Circle_Offset_Y< + string label = "Circle Offset X"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +> = 0; +uniform int Source_Offset_X< + string label = "Source Offset X"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +> = 0.0; +uniform int Source_Offset_Y< + string label = "Source Offset Y"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +> = 0.0; + +uniform bool Antialiasing = true; +#define Smoothness 100.00 +#define AAwidth 4 + +#define uv_pi uv_pixel_interval + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float2 coffset = float2(Circle_Offset_X, Circle_Offset_Y)/uv_size; + float2 soffset = float2( Source_Offset_X, Source_Offset_Y )/uv_size; + + float radius = Radius * 0.01; + float smwidth = radius * Smoothness * 0.01; + + float4 obstex = image.Sample( textureSampler, uv - soffset); + float4 color = obstex; + // Account for aspect ratio + uv.x = (uv.x - 0.5) * uv_size.x / uv_size.y + 0.5; + float2 cuv = 0.5 + coffset; + float dist = distance(cuv,uv); + // Anti-aliased or pixelated edge + if( Antialiasing ) { + color.a = smoothstep( radius, (radius+(uv_pi.x)) - (uv_pi.x * AAwidth), dist); + } else { + color.a = step( dist, radius ); + } + + return float4(color.rgb, color.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSClockAnalogShader.ps1 b/Commands/Shaders/Get-OBSClockAnalogShader.ps1 new file mode 100644 index 000000000..135318e79 --- /dev/null +++ b/Commands/Shaders/Get-OBSClockAnalogShader.ps1 @@ -0,0 +1,346 @@ +function Get-OBSClockAnalogShader { + +[Alias('Set-OBSClockAnalogShader','Add-OBSClockAnalogShader')] +param( +# Set the current_time_ms of OBSClockAnalogShader +[Alias('current_time_ms')] +[ComponentModel.DefaultBindingProperty('current_time_ms')] +[Int32] +$CurrentTimeMs, +# Set the current_time_sec of OBSClockAnalogShader +[Alias('current_time_sec')] +[ComponentModel.DefaultBindingProperty('current_time_sec')] +[Int32] +$CurrentTimeSec, +# Set the current_time_min of OBSClockAnalogShader +[Alias('current_time_min')] +[ComponentModel.DefaultBindingProperty('current_time_min')] +[Int32] +$CurrentTimeMin, +# Set the current_time_hour of OBSClockAnalogShader +[Alias('current_time_hour')] +[ComponentModel.DefaultBindingProperty('current_time_hour')] +[Int32] +$CurrentTimeHour, +# Set the hour_handle_color of OBSClockAnalogShader +[Alias('hour_handle_color')] +[ComponentModel.DefaultBindingProperty('hour_handle_color')] +[Single[]] +$HourHandleColor, +# Set the minute_handle_color of OBSClockAnalogShader +[Alias('minute_handle_color')] +[ComponentModel.DefaultBindingProperty('minute_handle_color')] +[Single[]] +$MinuteHandleColor, +# Set the second_handle_color of OBSClockAnalogShader +[Alias('second_handle_color')] +[ComponentModel.DefaultBindingProperty('second_handle_color')] +[Single[]] +$SecondHandleColor, +# Set the outline_color of OBSClockAnalogShader +[Alias('outline_color')] +[ComponentModel.DefaultBindingProperty('outline_color')] +[Single[]] +$OutlineColor, +# Set the top_line_color of OBSClockAnalogShader +[Alias('top_line_color')] +[ComponentModel.DefaultBindingProperty('top_line_color')] +[Single[]] +$TopLineColor, +# Set the background_color of OBSClockAnalogShader +[Alias('background_color')] +[ComponentModel.DefaultBindingProperty('background_color')] +[Single[]] +$BackgroundColor, +# Set the time_offset_hours of OBSClockAnalogShader +[Alias('time_offset_hours')] +[ComponentModel.DefaultBindingProperty('time_offset_hours')] +[Int32] +$TimeOffsetHours, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'clock_analog' +$ShaderNoun = 'OBSClockAnalogShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Based on https://www.shadertoy.com/view/XdKXzy +uniform int current_time_ms; +uniform int current_time_sec; +uniform int current_time_min; +uniform int current_time_hour; +uniform float3 hour_handle_color = {1.0,1.0,1.0}; +uniform float3 minute_handle_color = {1.0,1.0,1.0}; +uniform float3 second_handle_color = {1.0,0.0,0.0}; +uniform float3 outline_color = {1.0,1.0,1.0}; +uniform float3 top_line_color = {1.0,0.0,0.0}; +uniform float3 background_color = {.5,.5,.5}; +uniform int time_offset_hours = 0; + +#ifndef OPENGL +#define mod(x,y) (x - y * floor(x / y)) +#endif +// this is my first try to actually use glsl almost from scratch +// so far all i''ve done is learning by doing / reading glsl docs. +// this is inspired by my non glsl „elapsed_time“ projects +// especially this one: https://www.gottz.de/analoguhr.htm + +// i will most likely use a buffer in future to calculate the elapsed_time +// aswell as to draw the background of the clock only once. +// tell me if thats a bad idea. + +// update: +// screenshot: http://i.imgur.com/dF0nHDk.png +// as soon as i think its in a usefull state i''ll release the source +// of that particular c++ application on github. +// i hope sommeone might find it usefull :D + +#define PI 3.141592653589793238462643383 + +// from https://www.shadertoy.com/view/4s3XDn <3 +float ln(float2 p, float2 a, float2 b) +{ + float2 pa = p - a; + float2 ba = b - a; + float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0); + return length(pa - ba * h); +} + +// i think i should spend some elapsed_time reading docs in order to minimize this. +// hints apreciated +// (Rotated LiNe) +float rln(float2 uv, float start, float end, float perc) { + float inp = perc * PI * 2.0; + float2 coord = float2(sin(inp), cos(inp)); + return ln(uv, coord * start, coord * end); +} + +// i need this to have an alphachannel in the output +// i intend to use an optimized version of this shader for a transparent desktop widget experiment +float4 mixer(float4 c1, float4 c2) { + // please tell me if you think this would boost performance. + // the elapsed_time i implemented mix myself it sure did reduce + // the amount of operations but i''m not sure now + // if (c2.a <= 0.0) return c1; + // if (c2.a >= 1.0) return c2; + return float4(lerp(c1.rgb, c2.rgb, c2.a), c1.a + c2.a); + // in case you are curious how you could implement mix yourself: + // return float4(c2.rgb * c2.a + c1.rgb * (1.0-c2.a), c1.a+c2.a); +} + +float4 styleHandle(float4 color, float px, float dist, float3 handleColor, float width, float shadow) { + if (dist <= width + shadow) { + // lets draw the shadow + color = mixer(color, float4(0.0, 0.0, 0.0, + (1.0-pow(smoothstep(width, width + shadow, dist),0.2))*0.2)); + // now lets draw the antialiased handle + color = mixer(color, float4(handleColor, smoothstep(width, max(width - 3.0 * px, 0.0), dist))); + } + return color; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 R = uv_size; + // calculate the size of a pixel + float px = 1.0 / R.y; + // create percentages of the coordinate system + float2 p = (v_in.uv * uv_size).xy / R; + // center the scene and add perspective + float2 uv = (2.0 * (float2(v_in.uv.x,1.0-v_in.uv.y) * uv_size) - R) / min(R.x, R.y); + + /*float2 uv = -1.0 + 2.0 * p.xy; + // lets add perspective for mobile device support + if (uv_size.x > uv_size.y) + uv.x *= uv_size.x / uv_size.y; + else + uv.y *= uv_size.y / uv_size.x;*/ + + // lets scale the scene a bit down: + uv *= 1.1; + px *= 0.9; + + float width = 0.015; + float dist = 1.0; + float centerdist = length(uv); + + float4 color = image.Sample(textureSampler, v_in.uv); + + // background of the clock + if (centerdist < 1.0 - width) color = mixer(color, float4(background_color, 0.4*(1.8-length(uv)))); + + float isRed = 1.0; + + if (centerdist > 1.0 - 12.0 * width && centerdist <= 1.1) { + // minute bars + for (float i = 0.0; i <= 15.0; i += 1.0) { + if (mod(i, 5.0) == 0.0) { + dist = min(dist, rln(abs(uv), 1.0 - 10.0 * width, 1.0 - 2.0 * width, i / 60.0)); + // draw first bar red + if (i == 0.0 && uv.y > 0.0) { + isRed = dist; + dist = smoothstep(width, max(width - 3.0 * px, 0.0), dist); + color = mixer(color, float4(top_line_color, dist)); + dist = 1.0; + } + } + else { + dist = min(dist, rln(abs(uv), 1.0 - 10.0 * width, 1.0 - 7.0 * width, i / 60.0)); + } + } + + // outline circle + dist = min(dist, abs(1.0-width-length(uv))); + // draw clock shadow + if (centerdist > 1.0) + color = mixer(color, float4(0.0,0.0,0.0, 0.3*smoothstep(1.0 + width*2.0, 1.0, centerdist))); + + // draw outline + minute bars in white + color = mixer(color, float4(0.0, 0.0, 0.0, + (1.0 - pow(smoothstep(width, width + 0.02, min(isRed, dist)), 0.4))*0.2)); + color = mixer(color, float4(outline_color, smoothstep(width, max(width - 3.0 * px, 0.0), dist))); + } + + if (centerdist < 1.0) { + float elapsed_time = float((time_offset_hours+current_time_hour)*3600+current_time_min*60+current_time_sec) + pow(float(current_time_ms)/1000.0,16.0); + // hour + color = styleHandle(color, px, + rln(uv, -0.05, 0.5, elapsed_time / 3600.0 / 12.0), + hour_handle_color, 0.03, 0.02); + + // minute + color = styleHandle(color, px, + rln(uv, -0.075, 0.7, elapsed_time / 3600.0), + minute_handle_color, 0.02, 0.02); + + // second + color = styleHandle(color, px, + min(rln(uv, -0.1, 0.9, elapsed_time / 60.0), length(uv)-0.01), + second_handle_color, 0.01, 0.02); + } + + + return color; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSClockDigitalLedShader.ps1 b/Commands/Shaders/Get-OBSClockDigitalLedShader.ps1 new file mode 100644 index 000000000..53a8981ef --- /dev/null +++ b/Commands/Shaders/Get-OBSClockDigitalLedShader.ps1 @@ -0,0 +1,381 @@ +function Get-OBSClockDigitalLedShader { + +[Alias('Set-OBSClockDigitalLedShader','Add-OBSClockDigitalLedShader')] +param( +# Set the current_time_sec of OBSClockDigitalLedShader +[Alias('current_time_sec')] +[ComponentModel.DefaultBindingProperty('current_time_sec')] +[Int32] +$CurrentTimeSec, +# Set the current_time_min of OBSClockDigitalLedShader +[Alias('current_time_min')] +[ComponentModel.DefaultBindingProperty('current_time_min')] +[Int32] +$CurrentTimeMin, +# Set the current_time_hour of OBSClockDigitalLedShader +[Alias('current_time_hour')] +[ComponentModel.DefaultBindingProperty('current_time_hour')] +[Int32] +$CurrentTimeHour, +# Set the timeMode of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('timeMode')] +[Int32] +$TimeMode, +# Set the showMatrix of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('showMatrix')] +[Management.Automation.SwitchParameter] +$ShowMatrix, +# Set the showOff of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('showOff')] +[Management.Automation.SwitchParameter] +$ShowOff, +# Set the ampm of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('ampm')] +[Management.Automation.SwitchParameter] +$Ampm, +# Set the ledColor of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('ledColor')] +[String] +$LedColor, +# Set the offsetHours of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('offsetHours')] +[Int32] +$OffsetHours, +# Set the offsetSeconds of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('offsetSeconds')] +[Int32] +$OffsetSeconds, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'clock_digital_led' +$ShaderNoun = 'OBSClockDigitalLedShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// based on https://www.shadertoy.com/view/MdfGzf +// cmarangu has linked all 7 segments in his comments +// https://www.shadertoy.com/view/3dtSRj + +#ifndef OPENGL +#define mod(x,y) (x - y * floor(x / y)) +#endif + +uniform int current_time_sec; +uniform int current_time_min; +uniform int current_time_hour; + +uniform int timeMode< + string label = "Time mode"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Time"; + int option_1_value = 1; + string option_1_label = "Enable duration"; + int option_2_value = 2; + string option_2_label = "Active duration"; + int option_3_value = 3; + string option_3_label = "Show duration"; + int option_4_value = 4; + string option_4_label = "Load duration"; +> = 0; + +uniform bool showMatrix = false; +uniform bool showOff = false; +uniform bool ampm = false; +uniform float4 ledColor = {1.0,0,0,1.0}; +uniform int offsetHours = 0; +uniform int offsetSeconds = 0; + +float segment(float2 uv, bool On) +{ + if (!On && !showOff) + return 0.0; + + float seg = (1.0-smoothstep(0.08,0.09+float(On)*0.02,abs(uv.x)))* + (1.0-smoothstep(0.46,0.47+float(On)*0.02,abs(uv.y)+abs(uv.x))); + + //Fiddle with lights and matrix + //uv.x += sin(elapsed_time*60.0*6.26)/14.0; + //uv.y += cos(elapsed_time*60.0*6.26)/14.0; + + //led like brightness + if (On){ + seg *= (1.0-length(uv*float2(3.8,0.9)));//-sin(elapsed_time*25.0*6.26)*0.04; + } else { + seg *= -(0.05+length(uv*float2(0.2,0.1))); + } + return seg; +} + +float sevenSegment(float2 uv,int num) +{ + float seg= 0.0; + seg += segment(uv.yx+float2(-1.0, 0.0),num!=-1 && num!=1 && num!=4 ); + seg += segment(uv.xy+float2(-0.5,-0.5),num!=-1 && num!=1 && num!=2 && num!=3 && num!=7); + seg += segment(uv.xy+float2( 0.5,-0.5),num!=-1 && num!=5 && num!=6 ); + seg += segment(uv.yx+float2( 0.0, 0.0),num!=-1 && num!=0 && num!=1 && num!=7 ); + seg += segment(uv.xy+float2(-0.5, 0.5),num==0 || num==2 || num==6 || num==8 ); + seg += segment(uv.xy+float2( 0.5, 0.5),num!=-1 && num!=2 ); + seg += segment(uv.yx+float2( 1.0, 0.0),num!=-1 && num!=1 && num!=4 && num!=7 ); + + return seg; +} + +float showNum(float2 uv,int nr, bool zeroTrim) +{ + //Speed optimization, leave if pixel is not in segment + if (abs(uv.x)>1.5 || abs(uv.y)>1.2) + return 0.0; + + float seg= 0.0; + if (uv.x>0.0) + { + nr /= 10; + if (nr==0 && zeroTrim) + nr = -1; + seg += sevenSegment(uv+float2(-0.75,0.0),nr); + } else { + seg += sevenSegment(uv+float2( 0.75,0.0),int(mod(float(nr),10.0))); + } + + return seg; +} + +float dots(float2 uv) +{ + float seg = 0.0; + uv.y -= 0.5; + seg += (1.0-smoothstep(0.11,0.13,length(uv))) * (1.0-length(uv)*2.0); + uv.y += 1.0; + seg += (1.0-smoothstep(0.11,0.13,length(uv))) * (1.0-length(uv)*2.0); + return seg; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = ((float2(v_in.uv.x, 1.0-v_in.uv.y) * uv_size).xy-0.5*uv_size) / + min(uv_size.x,uv_size.y); + + if (uv_size.x>uv_size.y) + { + uv *= 6.0; + } + else + { + uv *= 12.0; + } + + uv.x *= -1.0; + uv.x += uv.y/12.0; + //wobble + //uv.x += sin(uv.y*3.0+elapsed_time*14.0)/25.0; + //uv.y += cos(uv.x*3.0+elapsed_time*14.0)/25.0; + uv.x += 3.5; + float seg = 0.0; + + if(timeMode == 0){ + seg += showNum(uv,current_time_sec,false); + uv.x -= 1.75; + seg += dots(uv); + uv.x -= 1.75; + seg += showNum(uv,current_time_min,false); + uv.x -= 1.75; + seg += dots(uv); + uv.x -= 1.75; + if (ampm) { + if(current_time_hour == 0){ + seg += showNum(uv,12,true); + }else if(current_time_hour > 12){ + seg += showNum(uv,current_time_hour-12,true); + }else{ + seg += showNum(uv,current_time_hour,true); + } + } else { + seg += showNum(uv,current_time_hour,true); + } + }else{ + float timeSecs = 0.0; + if(timeMode == 1){ + timeSecs = elapsed_time_enable; + }else if(timeMode == 2){ + timeSecs = elapsed_time_active; + }else if(timeMode == 3){ + timeSecs = elapsed_time_show; + }else if(timeMode == 4){ + timeSecs = elapsed_time_start; + } + + timeSecs += offsetSeconds + offsetHours*3600; + if(timeSecs < 0) + timeSecs = 0.9999-timeSecs; + seg += showNum(uv,int(mod(timeSecs,60.0)),false); + + timeSecs = floor(timeSecs/60.0); + + uv.x -= 1.75; + + seg += dots(uv); + + uv.x -= 1.75; + + seg += showNum(uv,int(mod(timeSecs,60.0)),false); + + timeSecs = floor(timeSecs/60.0); + if (ampm) + { + if(timeSecs == 0.0){ + timeSecs = 12.0; + }else if (timeSecs > 12.0){ + timeSecs = mod(timeSecs,12.0); + } + }else if (timeSecs > 24.0) { + timeSecs = mod(timeSecs,24.0); + } + + uv.x -= 1.75; + + seg += dots(uv); + + uv.x -= 1.75; + seg += showNum(uv,int(mod(timeSecs,60.0)),true); + } + + + if (seg==0.0){ + return image.Sample(textureSampler, v_in.uv); + } + // matrix over segment + if (showMatrix) + { + seg *= 0.8+0.2*smoothstep(0.02,0.04,mod(uv.y+uv.x,0.06025)); + //seg *= 0.8+0.2*smoothstep(0.02,0.04,mod(uv.y-uv.x,0.06025)); + } + if (seg<0.0) + { + seg = -seg;; + return float4(seg,seg,seg,1.0); + } + return float4(ledColor.rgb * seg, ledColor.a); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSClockDigitalNixieShader.ps1 b/Commands/Shaders/Get-OBSClockDigitalNixieShader.ps1 new file mode 100644 index 000000000..b44a44bec --- /dev/null +++ b/Commands/Shaders/Get-OBSClockDigitalNixieShader.ps1 @@ -0,0 +1,658 @@ +function Get-OBSClockDigitalNixieShader { + +[Alias('Set-OBSClockDigitalNixieShader','Add-OBSClockDigitalNixieShader')] +param( +# Set the current_time_ms of OBSClockDigitalNixieShader +[Alias('current_time_ms')] +[ComponentModel.DefaultBindingProperty('current_time_ms')] +[Int32] +$CurrentTimeMs, +# Set the current_time_sec of OBSClockDigitalNixieShader +[Alias('current_time_sec')] +[ComponentModel.DefaultBindingProperty('current_time_sec')] +[Int32] +$CurrentTimeSec, +# Set the current_time_min of OBSClockDigitalNixieShader +[Alias('current_time_min')] +[ComponentModel.DefaultBindingProperty('current_time_min')] +[Int32] +$CurrentTimeMin, +# Set the current_time_hour of OBSClockDigitalNixieShader +[Alias('current_time_hour')] +[ComponentModel.DefaultBindingProperty('current_time_hour')] +[Int32] +$CurrentTimeHour, +# Set the timeMode of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('timeMode')] +[Int32] +$TimeMode, +# Set the offsetHours of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('offsetHours')] +[Int32] +$OffsetHours, +# Set the offsetSeconds of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('offsetSeconds')] +[Int32] +$OffsetSeconds, +# Set the corecolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('corecolor')] +[Single[]] +$Corecolor, +# Set the halocolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('halocolor')] +[Single[]] +$Halocolor, +# Set the flarecolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('flarecolor')] +[Single[]] +$Flarecolor, +# Set the anodecolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('anodecolor')] +[Single[]] +$Anodecolor, +# Set the anodehighlightscolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('anodehighlightscolor')] +[Single[]] +$Anodehighlightscolor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'clock_digital_nixie' +$ShaderNoun = 'OBSClockDigitalNixieShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/fsBcRm +uniform int current_time_ms; +uniform int current_time_sec; +uniform int current_time_min; +uniform int current_time_hour; +uniform int timeMode< + string label = "Time mode"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Time"; + int option_1_value = 1; + string option_1_label = "Enable duration"; + int option_2_value = 2; + string option_2_label = "Active duration"; + int option_3_value = 3; + string option_3_label = "Show duration"; + int option_4_value = 4; + string option_4_label = "Load duration"; +> = 0; + +uniform int offsetHours = 0; +uniform int offsetSeconds = 0; + +// Colors as named variables, if you want to tweak them +uniform float3 corecolor = {1.0,0.7,0.0}; +uniform float3 halocolor = {1.0,0.5,0.0}; +uniform float3 flarecolor = {1.0,0.3,0.0}; +uniform float3 anodecolor = {0.2,0.1,0.1}; +uniform float3 anodehighlightscolor = {1.0,0.5,0.0}; + +#ifndef OPENGL +#define mod(x,y) (x - y * floor(x / y)) +#define lessThan(a,b) (a < b) +#define greaterThan(a,b) (a > b) +#endif + +// psrdnoise (c) Stefan Gustavson and Ian McEwan, +// ver. 2021-12-02, published under the MIT license: +// https://github.com/stegu/psrdnoise/ +float psrdnoise(float2 x, float2 period, float alpha, out float2 gradient) +{ + float2 uv = float2(x.x+x.y*0.5, x.y); + float2 i0 = floor(uv), f0 = frac(uv); + float cmp = step(f0.y, f0.x); + float2 o1 = float2(cmp, 1.0-cmp); + float2 i1 = i0 + o1, i2 = i0 + 1.0; + float2 v0 = float2(i0.x - i0.y*0.5, i0.y); + float2 v1 = float2(v0.x + o1.x - o1.y*0.5, v0.y + o1.y); + float2 v2 = float2(v0.x + 0.5, v0.y + 1.0); + float2 x0 = x - v0, x1 = x - v1, x2 = x - v2; + float3 iu, iv, xw, yw; + if(any(greaterThan(period, float2(0.0,0.0)))) { + xw = float3(v0.x, v1.x, v2.x); + yw = float3(v0.y, v1.y, v2.y); + if(period.x > 0.0) + xw = mod(float3(v0.x, v1.x, v2.x), period.x); + if(period.y > 0.0) + yw = mod(float3(v0.y, v1.y, v2.y), period.y); + iu = floor(xw + 0.5*yw + 0.5); iv = floor(yw + 0.5); + } else { + iu = float3(i0.x, i1.x, i2.x); iv = float3(i0.y, i1.y, i2.y); + } + float3 hash = mod(iu, 289.0); + hash = mod((hash*51.0 + 2.0)*hash + iv, 289.0); + hash = mod((hash*34.0 + 10.0)*hash, 289.0); + float3 psi = hash*0.07482 + alpha; + float3 gx = cos(psi); float3 gy = sin(psi); + float2 g0 = float2(gx.x, gy.x); + float2 g1 = float2(gx.y, gy.y); + float2 g2 = float2(gx.z, gy.z); + float3 w = 0.8 - float3(dot(x0, x0), dot(x1, x1), dot(x2, x2)); + w = max(w, 0.0); float3 w2 = w*w; float3 w4 = w2*w2; + float3 gdotx = float3(dot(g0, x0), dot(g1, x1), dot(g2, x2)); + float n = dot(w4, gdotx); + float3 w3 = w2*w; float3 dw = -8.0*w3*gdotx; + float2 dn0 = w4.x*g0 + dw.x*x0; + float2 dn1 = w4.y*g1 + dw.y*x1; + float2 dn2 = w4.z*g2 + dw.z*x2; + gradient = 10.9*(dn0 + dn1 + dn2); + return 10.9*n; +} + +// Compute the shortest distance from p +// to a line segment from p1 to p2. +float lined(float2 p1, float2 p2, float2 p) { + float2 p1p2 = p2 - p1; + float2 v = normalize(p1p2); + float2 s = p - p1; + float t = dot(v, s); + if (t<0.0) return length(s); + if (t>length(p1p2)) return length(p - p2); + return length(s - t*v); +} + +// Compute the shortest distance from p to a circle +// with center at c and radius r. (Extremely simple.) +float circled(float2 c, float r, float2 p) { + return abs(length(p - c) - r); +} + +// Compute the shortest distance from p to a +// circular arc with center c from p1 to p2. +// p1, p2 are in the +angle direction (ccw), +// to resolve the major/minor arc ambiguity, so +// specifying p1, p2 in the wrong order will +// yield the complement to the arc you wanted. +// If p1 = p2, the entire circle is drawn, but +// you don''t want to use this function to draw +// a circle. Use the simple circled() instead. +// If p1 and p2 have different distances to c, +// the end of the arc will not look right. If +// this is inconvenient, uncomment the 3rd line. +float arcd(float2 c, float2 p1, float2 p2, float2 p) { + + float2 v1 = p1 - c; + float2 v2 = p2 - c; + // Optional: make sure p1, p2 are both on the circle + // v2 = normalize(v2)*length(v1); + float2 v = p - c; + + float2 w = float2(dot(v, -float2(-v1.y, v1.x)), dot(v, float2(-v2.y, v2.x))); + + if(dot(v1, float2(-v2.y, v2.x)) >= 0.0) { // Arc angle <= pi + if(all(lessThan(float2(0.0,0.0), w))) { + return min(length(p1-p), length(p2-p)); // nearest end + } else { + return abs(length(v) - length(v1)); // dist to arc + } + } else { // Arc angle > pi + if(any(lessThan(float2(0.0,0.0), w))) { + return min(length(p1-p), length(p2-p)); + } else { + return abs(length(v) - length(v1)); + } + } +} + +// A convenient anti-aliased step() using auto derivatives +float aastep(float threshold, float value) { + float afwidth = 0.7 * length(float2(ddx(value), ddy(value))); + return smoothstep(threshold-afwidth, threshold+afwidth, value); +} + +// A smoothstep() that blends to an aastep() under minification +float aasmoothstep(float t1, float t2, float v) { + float aw = 0.7 * length(float2(ddx(v), ddy(v))); + float sw = max(0.5*(t2-t1), aw); + float st = 0.5*(t1+t2); + return smoothstep(st-sw, st+sw, v); +} + +// Distance field of a hexagonal (simplex) grid +// The return vector contains the distances to the +// three closest points, sorted by magnitude. +float3 hexgrid(float2 p) { + + const float stretch = 1.0/0.8660; + + // v.y = v.y + 0.0001; // needed if no stretching (rounding errors) + p.y = p.y * stretch; + // Transform to grid space (axis-aligned "simplex" grid) + float2 uv = float2(p.x + p.y*0.5, p.y); + // Determine which simplex we''re in, with i0 being the "base" + float2 i0 = floor(uv); + float2 f0 = frac(uv); + // o1 is the offset in simplex space to the second corner + float cmp = step(f0.y, f0.x); + float2 o1 = float2(cmp, 1.0-cmp); + // Enumerate the remaining simplex corners + float2 i1 = i0 + o1; + float2 i2 = i0 + float2(1.0, 1.0); + // Transform corners back to texture space + float2 p0 = float2(i0.x - i0.y * 0.5, i0.y); + float2 p1 = float2(p0.x + o1.x - o1.y * 0.5, p0.y + o1.y); + float2 p2 = float2(p0.x + 0.5, p0.y + 1.0); + float3 d = float3(length(p-p0), length(p-p1), length(p-p2)); + // Only three values - bubble sort is just fine. + d.yz = (d.y < d.z) ? d.yz : d.zy; + d.xy = (d.x < d.y) ? d.xy : d.yx; + d.yz = (d.y < d.z) ? d.yz : d.zy; + return d; +} + +// The digits. Simple functions, only a lot of them. + +// These glyphs and their implementation as distance fields +// are the original work of me (stefan.gustavson@gmail.com), +// and the code below is released under the MIT license: +// https://opensource.org/licenses/MIT +// (If that is inconvenient for you, let me know. I''m reasonable.) +// +// Experts say mortals should not attempt to design character shapes. +// "It''s just ten simple digits", I thought, "How hard can it be?" +// A week later, after countless little tweaks to proportions and +// curvature, and with a notepad full of sketches and pen-and-paper +// math, some of it horribly wrong because it was decades since I +// solved this kind of equations by hand, I know the answer: +// It can be *really* hard. But also loads of fun! +// +float nixie0(float2 p) { + // Special hack instead of pasting together arcs and lines + float d = lined(float2(2.0,2.0), float2(2.0, 6.0), p); + return abs(d - 2.0); +} + +float nixie1(float2 p) { + float d1 = lined(float2(2.0, 0.0), float2(2.0, 8.0), p); + float d2 = lined(float2(2.0, 8.0), float2(1.0, 6.0), p); + return min(d1, d2); +} + +float nixie1alt(float2 p) { // Straight line + return lined(float2(2.0, 0.0), float2(2.0, 8.0), p); +} + +float nixie2(float2 p) { + const float x = 3.2368345; // Icky coordinates, + const float y = 4.4283002; // used twice below + float d1 = lined(float2(4.25, 0.0), float2(-0.25, 0.0), p); + float d2 = arcd(float2(10.657842, -5.001899), // Also icky + float2(x, y), float2(-0.25, 0.0), p); + float d3 = arcd(float2(2.0, 6.0), float2(x, y), float2(0.0, 6.0), p); + return min(min(d1, d2), d3); +} + +float nixie2alt(float2 p) { // Straight neck + float d1 = lined(float2(4.0, 0.0), float2(0.0,0.0), p); + float d2 = lined(float2(0.0,0.0), float2(3.6, 4.8), p); + float d3 = arcd(float2(2.0, 6.0), float2(3.6, 4.8), float2(0.0, 6.0), p); + return min(min(d1, d2), d3); +} + +float nixie3(float2 p) { + // Two round parts: + // float d1 = arcd(float2(2.0, 2.1), float2(-0.1, 2.1), float2(2.0, 4.2), p); + // float d2 = arcd(float2(2.0, 6.1), float2(2.0, 4.2), float2(0.1, 6.1), p); + // Angled top, more like classic Nixie tube digits: + float d1 = arcd(float2(2.0, 2.25), float2(-0.25, 2.25), float2(2.0, 4.5), p); + float d2 = lined(float2(2.0, 4.5), float2(4.0, 7.75), p); + float d3 = lined(float2(4.0, 7.75), float2(0.0, 7.75), p); + return min(min(d1, d2), d3); +} + +float nixie3alt(float2 p) { // Two round parts of the same size + float d1 = arcd(float2(2.0,2.0), float2(0.0, 2.0), float2(2.0, 4.0), p); + float d2 = arcd(float2(2.0, 6.0), float2(2.0, 4.0), float2(0.0, 6.0), p); + return min(d1, d2); +} + +float nixie4(float2 p) { + // This digit is 5.0 units wide, most others are 4.0 or 4.5 + float d1 = lined(float2(4.0, 0.0), float2(4.0, 8.0), p); + float d2 = lined(float2(4.0, 8.0), float2(0.0, 2.0), p); + float d3 = lined(float2(0.0, 2.0), float2(5.0, 2.0), p); + return min(min(d1, d2), d3); +} + +float nixie4alt(float2 p) { + // This digit is 4.0 units wide, but looks cropped + float d1 = lined(float2(4.0, 0.0), float2(4.0, 8.0), p); + float d2 = lined(float2(4.0, 8.0), float2(0.0, 2.0), p); + float d3 = lined(float2(0.0, 2.0), float2(4.0, 2.0), p); + return min(min(d1, d2), d3); +} + +float nixie5(float2 p) { + float d1 = lined(float2(4.0, 7.75), float2(0.5, 7.75), p); + float d2 = lined(float2(0.5, 7.75), float2(0.0, 4.5), p); + float d3 = lined(float2(0.0, 4.5), float2(2.0, 4.5), p); + float d4 = arcd(float2(2.0, 2.25), float2(-0.25, 2.25), float2(2.0, 4.5), p); + return min(min(d1, d2), min(d3, d4)); +} + +float nixie5alt(float2 p) { + float d1 = lined(float2(4.0, 8.0), float2(0.0, 8.0), p); + float d2 = lined(float2(0.0, 8.0), float2(0.0, 5.0), p); + float d3 = lined(float2(0.0, 5.0), float2(2.0, 5.0), p); + float d4 = arcd(float2(2.0, 3.0), float2(4.0, 3.0), float2(2.0, 5.0), p); + float d5 = lined(float2(4.0, 3.0), float2(4.0, 2.0), p); + float d6 = arcd(float2(2.0,2.0), float2(0.0, 2.0), float2(4.0, 2.0), p); + return min(min(min(d1, d2), min(d3, d4)), min(d5, d6)); +} + +float nixie6(float2 p) { + float d1 = arcd(float2(84.0/13.0, 2.25), float2(3.0, 8.0), float2(-0.25, 2.25), p); + float d2 = circled(float2(2.0, 2.25), 2.25, p); + return min(d1, d2); +} + +float nixie6alt(float2 p) { // Straight neck + float d1 = lined(float2(0.4, 3.2), float2(3.0, 8.0), p); + float d2 = circled(float2(2.0,2.0), 2.0, p); + return min(d1, d2); +} + +float nixie7(float2 p) { // Ugly coordinates, but these expressions are exact + float d1 = lined(float2(0.0, 7.75), float2(0.25*sqrt(2259.0)-8.0, 7.75), p); + float d2 = arcd(float2(-8.0, 12.0), float2(2.5, 5.0), float2(0.25*sqrt(2259.0)-8.0, 7.75), p); + float d3 = arcd(float2(10.0, 0.0), float2(2.5, 5.0), float2(10.0-2.5*sqrt(13.0), 0.0), p); + return min(min(d1, d2), d3); +} + +float nixie7alt(float2 p) { // Straight neck + float d1 = lined(float2(0.0, 8.0), float2(4.0, 8.0), p); + float d2 = lined(float2(4.0, 8.0), float2(1.0, 0.0), p); + return min(d1, d2); +} + +float nixie8(float2 p) { + float d1 = circled(float2(2.0, 2.2), 2.2, p); + float d2 = circled(float2(2.0, 6.2), 1.8, p); + return min(d1, d2); +} + +float nixie8alt(float2 p) { // Same size loops + float d1 = circled(float2(2.0,2.0), 2.0, p); + float d2 = circled(float2(2.0, 6.0), 2.0, p); + return min(d1, d2); +} + +float nixie9(float2 p) { + float d1 = arcd(float2(-32.0/13.0, 5.75), float2(1.0, 0.0), float2(4.25, 5.75), p); + float d2 = circled(float2(2.0, 5.75), 2.25, p); + return min(d1, d2); +} + +float nixie9alt(float2 p) { // Straight neck + float d1 = lined(float2(3.6, 4.8), float2(1.0, 0.0), p); + float d2 = circled(float2(2.0, 6.0), 2.0, p); + return min(d1, d2); +} + +float nixieminus(float2 p) { + return lined(float2(0.5, 4.0), float2(3.5, 4.0), p); +} + +float nixieequals(float2 p) { + float d1 = lined(float2(0.5, 3.0), float2(3.5, 3.0), p); + float d2 = lined(float2(0.5, 5.0), float2(3.5, 5.0), p); + return min(d1, d2); +} + +float nixieplus(float2 p) { + float d1 = lined(float2(0.0, 4.0), float2(4.0, 4.0), p); + float d2 = lined(float2(2.0, 2.0), float2(2.0, 6.0), p); + return min(d1, d2); +} + +float nixiedot(float2 p) { + // circled with r=0 yields a point, but with more work + return length(p - float2(2.0, 0.0)); +} + +float nixiecolon(float2 p) { + float d1 = length(p - float2(2.0,2.0)); + float d2 = length(p - float2(2.0, 5.0)); + return min(d1, d2); +} + +// End of MIT-licensed code + +float number(int n, float2 p) { + switch(n) { + case 0: return nixie0(p); + case 1: return nixie1(p); + case 2: return nixie2(p); + case 3: return nixie3(p); + case 4: return nixie4(p); + case 5: return nixie5(p); + case 6: return nixie6(p); + case 7: return nixie7(p); + case 8: return nixie8(p); + case 9: return nixie9(p); + default: return 1e10; + } +} +// Display the current time with a retro Nixie-tube look +// Stefan Gustavson (stegu on shadertoy.com) 2022-01-26 +// All code in the "Image" tab is public domain. +// Functions in the "Common" tab are also public domain, +// except where a separate license is specified. +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = ((float2(v_in.uv.x,1.0-v_in.uv.y) * uv_size)/uv_size.x); + float time = 0.0; + if(timeMode == 0){ + time = float(current_time_hour*3600+current_time_min*60+current_time_sec) + float(current_time_ms)/1000.0; + }else if(timeMode == 1){ + time = elapsed_time_enable; + }else if(timeMode == 2){ + time = elapsed_time_active; + }else if(timeMode == 3){ + time = elapsed_time_show; + }else if(timeMode == 4){ + time = elapsed_time_start; + } + time += offsetSeconds + offsetHours * 3600; + if(time < 0) + time = 0.9999-time; + float2 p = -3.0+uv*50.0 - float2(0.0,9.0); + + float bbox = 1.0-max(max(1.0-aastep(-3.0, p.x), aastep(47.0, p.x)), + max(1.0-aastep(-3.0, p.y), aastep(11.0, p.y))); + + // Some relief for the GPU: exit early if we''re in the black margins + if(bbox == 0.0) { + return float4(float3(0.0,0.0,0.0),1.0); + } + + // If not, well, let''s put that GPU to good use! + float secs = floor(mod(time, 60.0)); + float mins = floor(mod(time, 3600.0)/60.0); + float hrs = floor(time/3600.0); + int h10 = int(floor(hrs/10.0)); + int h1 = int(floor(mod(hrs, 10.0))); + int m10 = int(floor(mins/10.0)); + int m1 = int(floor(mod(mins, 10.0))); + int s10 = int(floor(secs/10.0)); + int s1 = int(floor(mod(secs, 10.0))); + + float2 wspace = float2(6.5, 0.0); + float2 nspace = float2(3.5, 0.0); + float d = 1e10; + d = min(d, number(h10, p)); + d = min(d, number(h1, p-wspace)); + d = min(d, nixiecolon(p-wspace-1.45*nspace)-0.2); + d = min(d, number(m10, p-2.0*wspace-nspace)); + d = min(d, number(m1, p-3.0*wspace-nspace)); + d = min(d, nixiecolon(p-3.0*wspace-2.4*nspace)-0.2); + d = min(d, number(s10, p-4.0*wspace-2.0*nspace)); + d = min(d, number(s1, p-5.0*wspace-2.0*nspace)); + + float2 g; // For gradients returned from psrdnoise() + + // Digit outlines + float core = 1.0-aastep(0.2, d); + // "flare" is a wide blurry region around the characters, and + // "flarenoise" is a spatio-temporal modulation of its extents + // (slight flickering, but not all characters at the same time) + float flarenoise = psrdnoise(float2(p.x*0.1,5.0*elapsed_time), float2(0.0,0.0), 0.0, g); + float flare = 1.0-smoothstep(0.0, 2.5, d + 0.05*flarenoise); + flare *= flare; // A more rapid decline towards the edge + // "glow" is a variation in the intensity of the glowy cathode (core) + float glow = 0.8+0.2*psrdnoise(p - float2(0.0, 2.0*elapsed_time), float2(0.0,0.0), 4.0*time, g); + // Now we mess up the distance field a little for the "halo" effect + d += 0.1*psrdnoise(p - float2(0.0, 2.0*elapsed_time), float2(0.0,0.0), 8.0*time, g); + d += 0.05*psrdnoise(2.0*p - float2(0.0, 4.0*elapsed_time) + 0.15*g, float2(0.0,0.0), -16.0*time, g); + // "halo" is a kind of flame/plasma cloud near the core. A real Nixie tube + // doesn''t have this, but it adds some appealing visual detail. + // Looks more like hot filaments than "cold cathodes", but... oh, well. + float halo = 1.0-smoothstep(-0.3, 0.3, d); + + // Brittle parameters! This scale/shift of p has a strong impact + // on the pattern at the edges of the grid through "anodefade". + float3 anodedists = hexgrid(1.7*p+float2(0.1,0.23)); + float anodedist = anodedists.y - anodedists.x; // Voronoi cell borders + // Fade the hexagonal holes in the anode towards the edges + float anodefade = max(max(1.0-aasmoothstep(-2.2, -1.5, p.x), aasmoothstep(45.5, 46.2, p.x)), + max(1.0-aasmoothstep(-2.0, -1.6, p.y), aasmoothstep(9.4, 10.0, p.y))); + float anode = 1.0 - aastep(0.1, anodedist - anodefade); + + float anodecolornoise = 0.02*psrdnoise(p*float2(0.2,2.0), float2(0.0,0.0), 0.0, g); + float3 anodecolorresult = anodecolor+ anodecolornoise*anodehighlightscolor; // Long variable names, I know + + float3 mixcolor = float3(0.0,0.0,0.0); // Mix additively from black + mixcolor = lerp(mixcolor, flarecolor, 0.5*flare); + mixcolor = lerp(mixcolor, halocolor, 0.9*halo); + mixcolor = lerp(mixcolor, corecolor, core*glow); + mixcolor = lerp(mixcolor, anodecolorresult, anode); + mixcolor *= bbox; // AA-mask to black at the very edge of the bounding box + return float4(mixcolor,1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSColorDepthShader.ps1 b/Commands/Shaders/Get-OBSColorDepthShader.ps1 new file mode 100644 index 000000000..563bc3890 --- /dev/null +++ b/Commands/Shaders/Get-OBSColorDepthShader.ps1 @@ -0,0 +1,172 @@ +function Get-OBSColorDepthShader { + +[Alias('Set-OBSColorDepthShader','Add-OBSColorDepthShader')] +param( +# Set the colorDepth of OBSColorDepthShader +[ComponentModel.DefaultBindingProperty('colorDepth')] +[Single] +$ColorDepth, +# Set the pixelSize of OBSColorDepthShader +[ComponentModel.DefaultBindingProperty('pixelSize')] +[Single] +$PixelSize, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'color-depth' +$ShaderNoun = 'OBSColorDepthShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/tscfWM +uniform float colorDepth< + string label = "Color depth"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 100.0; + float step = 0.01; +> = 5.0; + +uniform float pixelSize< + string label = "Pixel Size"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 100.0; + float step = 0.01; +> = 5.0; + + +float4 mainImage(VertData v_in) : TARGET +{ + // Change these to change results + float2 size = uv_size / pixelSize; + float2 uv = v_in.uv; + // Maps UV onto grid of variable size to pixilate the image + uv = round(uv*size)/size; + float4 col = image.Sample(textureSampler, uv); + // Maps color onto the specified color depth + return float4(round(col.r * colorDepth) / colorDepth, + round(col.g * colorDepth) / colorDepth, + round(col.b * colorDepth) / colorDepth, 1.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSColorGradeFilterShader.ps1 b/Commands/Shaders/Get-OBSColorGradeFilterShader.ps1 new file mode 100644 index 000000000..7e6b8c917 --- /dev/null +++ b/Commands/Shaders/Get-OBSColorGradeFilterShader.ps1 @@ -0,0 +1,225 @@ +function Get-OBSColorGradeFilterShader { + +[Alias('Set-OBSColorGradeFilterShader','Add-OBSColorGradeFilterShader')] +param( +# Set the notes of OBSColorGradeFilterShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the lut of OBSColorGradeFilterShader +[ComponentModel.DefaultBindingProperty('lut')] +[String] +$Lut, +# Set the lut_amount_percent of OBSColorGradeFilterShader +[Alias('lut_amount_percent')] +[ComponentModel.DefaultBindingProperty('lut_amount_percent')] +[Int32] +$LutAmountPercent, +# Set the lut_scale_percent of OBSColorGradeFilterShader +[Alias('lut_scale_percent')] +[ComponentModel.DefaultBindingProperty('lut_scale_percent')] +[Int32] +$LutScalePercent, +# Set the lut_offset_percent of OBSColorGradeFilterShader +[Alias('lut_offset_percent')] +[ComponentModel.DefaultBindingProperty('lut_offset_percent')] +[Int32] +$LutOffsetPercent, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'color_grade_filter' +$ShaderNoun = 'OBSColorGradeFilterShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Color Grade Filter by Charles Fettinger for obs-shaderfilter plugin 4/2020 +//https://github.com/Oncorporation/obs-shaderfilter +//OBS messed up the LUT system, this is basically the old LUT system +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform string notes< + string widget_type = "info"; +> = "Choose LUT, Default LUT amount is 100, scale = 100, offset = 0. Valid values: -200 to 200"; + +uniform texture2d lut< + string label = "LUT"; +>; +uniform int lut_amount_percent< + string label = "LUT amount percentage"; + string widget_type = "slider"; + int minimum = -200; + int maximum = 200; + int step = 1; +> = 100; +uniform int lut_scale_percent< + string label = "LUT scale percentage"; + string widget_type = "slider"; + int minimum = -200; + int maximum = 200; + int step = 1; +> = 100; +uniform int lut_offset_percent< + string label = "LUT offset percentage"; + string widget_type = "slider"; + int minimum = -200; + int maximum = 200; + int step = 1; +> = 0; + + +float4 mainImage(VertData v_in) : TARGET +{ + float lut_amount = clamp(lut_amount_percent *.01, -2.0, 2.0); + float lut_scale = clamp(lut_scale_percent *.01,-2.0, 2.0); + float lut_offset = clamp(lut_offset_percent *.01,-2.0, 2.0); + + float4 textureColor = image.Sample(textureSampler, v_in.uv); + float lumaLevel = textureColor.r * 0.2126 + textureColor.g * 0.7152 + textureColor.b * 0.0722; + float blueColor = float(lumaLevel);//textureColor.b * 63.0 + + float2 quad1; + quad1.y = floor(floor(float(blueColor)) / 8.0); + quad1.x = floor(float(blueColor)) - (quad1.y * 8.0); + + float2 quad2; + quad2.y = floor(ceil(float(blueColor)) / 8.0); + quad2.x = ceil(float(blueColor)) - (quad2.y * 8.0); + + float2 texPos1; + texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); + texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); + + float2 texPos2; + texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); + texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); + + float4 newColor1 = lut.Sample(textureSampler, texPos1); + newColor1.rgb = newColor1.rgb * lut_scale + lut_offset; + float4 newColor2 = lut.Sample(textureSampler, texPos2); + newColor2.rgb = newColor2.rgb * lut_scale + lut_offset; + float4 luttedColor = lerp(newColor1, newColor2, frac(float(blueColor))); + + float4 final_color = lerp(textureColor, luttedColor, lut_amount); + return float4(final_color.rgb, textureColor.a); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSCornerPinShader.ps1 b/Commands/Shaders/Get-OBSCornerPinShader.ps1 new file mode 100644 index 000000000..4f5ff8201 --- /dev/null +++ b/Commands/Shaders/Get-OBSCornerPinShader.ps1 @@ -0,0 +1,358 @@ +function Get-OBSCornerPinShader { + +[Alias('Set-OBSCornerPinShader','Add-OBSCornerPinShader')] +param( +# Set the Antialias_Edges of OBSCornerPinShader +[Alias('Antialias_Edges')] +[ComponentModel.DefaultBindingProperty('Antialias_Edges')] +[Management.Automation.SwitchParameter] +$AntialiasEdges, +# Set the Top_Left_X of OBSCornerPinShader +[Alias('Top_Left_X')] +[ComponentModel.DefaultBindingProperty('Top_Left_X')] +[Single] +$TopLeftX, +# Set the Top_Left_Y of OBSCornerPinShader +[Alias('Top_Left_Y')] +[ComponentModel.DefaultBindingProperty('Top_Left_Y')] +[Single] +$TopLeftY, +# Set the Top_Right_X of OBSCornerPinShader +[Alias('Top_Right_X')] +[ComponentModel.DefaultBindingProperty('Top_Right_X')] +[Single] +$TopRightX, +# Set the Top_Right_Y of OBSCornerPinShader +[Alias('Top_Right_Y')] +[ComponentModel.DefaultBindingProperty('Top_Right_Y')] +[Single] +$TopRightY, +# Set the Bottom_Left_X of OBSCornerPinShader +[Alias('Bottom_Left_X')] +[ComponentModel.DefaultBindingProperty('Bottom_Left_X')] +[Single] +$BottomLeftX, +# Set the Bottom_Left_Y of OBSCornerPinShader +[Alias('Bottom_Left_Y')] +[ComponentModel.DefaultBindingProperty('Bottom_Left_Y')] +[Single] +$BottomLeftY, +# Set the Bottom_Right_X of OBSCornerPinShader +[Alias('Bottom_Right_X')] +[ComponentModel.DefaultBindingProperty('Bottom_Right_X')] +[Single] +$BottomRightX, +# Set the Bottom_Right_Y of OBSCornerPinShader +[Alias('Bottom_Right_Y')] +[ComponentModel.DefaultBindingProperty('Bottom_Right_Y')] +[Single] +$BottomRightY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'corner-pin' +$ShaderNoun = 'OBSCornerPinShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Corner Pin, Version 0.1, for OBS Shaderfilter +// Copyright ©️ 2022 by SkeletonBow +// License: GNU General Public License, version 2 +// Contact info: +// Twitter: +// Twitch: +// +// Based on: +// Original work by Inigo Quilez: https://www.iquilezles.org/www/articles/ibilinear/ibilinear.htm +// https://www.youtube.com/c/InigoQuilez +// https://iquilezles.org/ +// and the derivative StreamFX Corner Pin effect by Xaymar +// https://github.com/Xaymar/obs-StreamFX +// +// Description: +// Corner Pin allows you to pin the corners of an image onto the corners of an arbitrarily +// angled picture frame, TV screen or other rectangular surface in 3D space in an underlying +// image with proper perspective without distortion. +// +// TODO: +// - Add feature to automatically quantize corners to pixel centers +// +// Changelog: +// 0.1 - Initial release based on the StreamFX Corner Pin effect, as well as the original work by +// Inigo Quilez that it was based upon. + +uniform bool Antialias_Edges = true; + +uniform float Top_Left_X< + string label = "Top left x"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = -100.; +uniform float Top_Left_Y< + string label = "Top left y"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = -100.; +uniform float Top_Right_X< + string label = "Top right x"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = 100.; +uniform float Top_Right_Y< + string label = "Top right y"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = -100.; +uniform float Bottom_Left_X< + string label = "Bottom left x"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = -100.; +uniform float Bottom_Left_Y< + string label = "Bottom left y"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = 100.; +uniform float Bottom_Right_X< + string label = "Bottom right x"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = 100.; +uniform float Bottom_Right_Y< + string label = "Bottom right y"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = 100.; + +// DEVELOPMENTAL DEBUGGING OPTIONS +//uniform float AAstrength = 1.0; +//uniform float AAdist = 1.0; +//uniform float debug_psmult = 1.0; +//#define PIXEL_SIZE_MULT 2.0 + +float cross2d(in float2 a, in float2 b) +{ + return (a.x * b.y) - (a.y * b.x); +} + +float2 inverse_bilinear(in float2 p, in float2 a, in float2 b, in float2 c, in float2 d) +{ + float2 result = float2(-1., -1.); + + float2 e = b - a; + float2 f = d - a; + float2 g = a-b+c-d; + float2 h = p-a; + + float k2 = cross2d(g, f); + float k1 = cross2d(e, f) + cross2d(h, g); + float k0 = cross2d(h, e); + + if (abs(k2) < .001) { // Edges are likely parallel, so this is a linear equation. + result = float2( + (h.x * k1 + f.x * k0) / (e.x * k1 - g.x * k0), + -k0 / k1 + ); + } else { // It''s a quadratic equation. + float w = k1 * k1 - 4.0 * k0 * k2; + if (w < 0.0) { // Prevent GPUs from going insane. + return result; + } + w = sqrt(w); + + float ik2 = 0.5/k2; + float v = (-k1 - w) * ik2; + float u = (h.x - f.x * v) / (e.x + g.x * v); + + if (u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0) { + v = (-k1 + w) * ik2; + u = (h.x - f.x * v) / (e.x + g.x * v); + } + + result = float2(u, v); + } + + return result; +} + +// distance to a line segment +float sdSegment( in float2 p, in float2 a, in float2 b ) +{ + p -= a; b -= a; + return length( p-b*saturate(dot(p,b)/dot(b,b)) ); +} + +// Anti-alias edges - EXPERIMENTAL - (SkeletonBow) +float aastepEdgeAlpha(in float alpha, in float2 p, in float2 a, in float2 b) +{ + //float ps = 2.0 * (2.0/uv_size.y); // Original +// float ps = debug_psmult * (2.0/uv_size.y); + float ps = (2.0/uv_size.y); +// float ps = fwidth(p)*2.; // Try using fwidth() - goes haywire on AMD Radeon HD7850 at least, disable for now + return lerp( alpha, 0.0, 1.0 - smoothstep(0.0,ps,sdSegment(p,a,b))); +} + +float4 mainImage( VertData v_in ) : TARGET { + float2 p = 2.* v_in.uv - 1.; + + float2 Top_Left = float2(Top_Left_X, Top_Left_Y) * .01; + float2 Top_Right = float2(Top_Right_X, Top_Right_Y) * .01; + float2 Bottom_Left = float2(Bottom_Left_X, Bottom_Left_Y) * .01; + float2 Bottom_Right = float2(Bottom_Right_X, Bottom_Right_Y) * .01; + + // Convert from screen coords to potential Quad UV coordinates + float2 uv = inverse_bilinear(p, Top_Left, Top_Right, Bottom_Right, Bottom_Left); + + if (max(abs(uv.x - .5), abs(uv.y - .5)) >= .5) { + return float4(0.0, 0.0, 0.0, 0.0); + } + + float4 texel = image.Sample(textureSampler, uv); + + if ( Antialias_Edges ) { + // Anti-alias edges of texture + texel.a = aastepEdgeAlpha(texel.a, p, Top_Left, Top_Right); + texel.a = aastepEdgeAlpha(texel.a, p, Top_Right, Bottom_Right); + texel.a = aastepEdgeAlpha(texel.a, p, Bottom_Right, Bottom_Left); + texel.a = aastepEdgeAlpha(texel.a, p, Bottom_Left, Top_Left); + } + return texel; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSCrtCurvatureShader.ps1 b/Commands/Shaders/Get-OBSCrtCurvatureShader.ps1 new file mode 100644 index 000000000..61c95d522 --- /dev/null +++ b/Commands/Shaders/Get-OBSCrtCurvatureShader.ps1 @@ -0,0 +1,185 @@ +function Get-OBSCrtCurvatureShader { + +[Alias('Set-OBSCrtCurvatureShader','Add-OBSCrtCurvatureShader')] +param( +# Set the strength of OBSCrtCurvatureShader +[ComponentModel.DefaultBindingProperty('strength')] +[Single] +$Strength, +# Set the border of OBSCrtCurvatureShader +[ComponentModel.DefaultBindingProperty('border')] +[String] +$Border, +# Set the feathering of OBSCrtCurvatureShader +[ComponentModel.DefaultBindingProperty('feathering')] +[Single] +$Feathering, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'crt-curvature' +$ShaderNoun = 'OBSCrtCurvatureShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float strength< + string label = "Strength"; + string widget_type = "slider"; + float minimum = 0.; + float maximum = 200.; + float step = 0.01; +> = 33.33; + +uniform float4 border< + string label = "Border Color"; +> = {0., 0., 0., 1.}; + +uniform float feathering< + string label = "Feathering"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 33.33; + + +float4 mainImage(VertData v_in) : TARGET +{ + float2 cc = v_in.uv - float2(0.5, 0.5); + float dist = dot(cc, cc) * strength / 100.0; + float2 bent = v_in.uv + cc * (1.0 + dist) * dist; + if ((bent.x <= 0.0 || bent.x >= 1.0) || (bent.y <= 0.0 || bent.y >= 1.0)) { + return border; + } + if (feathering >= .01) { + float2 borderArea = float2(0.5, 0.5) * feathering / 100.0; + float2 borderDistance = (float2(0.5, 0.5) - abs(bent - float2(0.5, 0.5))) / float2(0.5, 0.5); + borderDistance = (min(borderDistance - float2(0.5, 0.5) * feathering / 100.0, 0) + borderArea) / borderArea; + float borderFade = sin(borderDistance.x * 1.570796326) * sin(borderDistance.y * 1.570796326); + return lerp(border, image.Sample(textureSampler, bent), borderFade); + } + + return image.Sample(textureSampler, bent); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSCurveShader.ps1 b/Commands/Shaders/Get-OBSCurveShader.ps1 new file mode 100644 index 000000000..2fd375f28 --- /dev/null +++ b/Commands/Shaders/Get-OBSCurveShader.ps1 @@ -0,0 +1,187 @@ +function Get-OBSCurveShader { + +[Alias('Set-OBSCurveShader','Add-OBSCurveShader')] +param( +# Set the strength of OBSCurveShader +[ComponentModel.DefaultBindingProperty('strength')] +[Single] +$Strength, +# Set the scale of OBSCurveShader +[ComponentModel.DefaultBindingProperty('scale')] +[Single] +$Scale, +# Set the curve_color of OBSCurveShader +[Alias('curve_color')] +[ComponentModel.DefaultBindingProperty('curve_color')] +[String] +$CurveColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'curve' +$ShaderNoun = 'OBSCurveShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.14159265359 + +uniform float strength< + string label = "Strength"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +uniform float scale< + string label = "Scale"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 1.0; + +uniform float4 curve_color = {0,0,0,0}; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + const float ydiff = 1.0; + uv -= float2(0.5,ydiff); + uv.x *= ( uv_size.x / uv_size.y); + uv /= scale; + if(strength > 0.0){ + float d = tan((1.0-strength)*PI/2.0); + float r = length(float2(0.5*(uv_size.x / uv_size.y), d)); + float2 center = float2(0.0,(1.0-ydiff)+d); + float pd = distance(uv, center); + if(pd < r) + return curve_color; + float angle = atan2(center.x-uv.x,center.y-uv.y); + uv = float2(uv.x + sin(angle)*(pd-r),(1.0-ydiff)-(pd-r)); + } + uv.x /= ( uv_size.x / uv_size.y); + uv += float2(0.5,ydiff); + return image.Sample(textureSampler,uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSCutRectPerCornerShader.ps1 b/Commands/Shaders/Get-OBSCutRectPerCornerShader.ps1 new file mode 100644 index 000000000..6c8ac1a7a --- /dev/null +++ b/Commands/Shaders/Get-OBSCutRectPerCornerShader.ps1 @@ -0,0 +1,354 @@ +function Get-OBSCutRectPerCornerShader { + +[Alias('Set-OBSCutRectPerCornerShader','Add-OBSCutRectPerCornerShader')] +param( +# Set the corner_tl of OBSCutRectPerCornerShader +[Alias('corner_tl')] +[ComponentModel.DefaultBindingProperty('corner_tl')] +[Int32] +$CornerTl, +# Set the corner_tr of OBSCutRectPerCornerShader +[Alias('corner_tr')] +[ComponentModel.DefaultBindingProperty('corner_tr')] +[Int32] +$CornerTr, +# Set the corner_br of OBSCutRectPerCornerShader +[Alias('corner_br')] +[ComponentModel.DefaultBindingProperty('corner_br')] +[Int32] +$CornerBr, +# Set the corner_bl of OBSCutRectPerCornerShader +[Alias('corner_bl')] +[ComponentModel.DefaultBindingProperty('corner_bl')] +[Int32] +$CornerBl, +# Set the border_thickness of OBSCutRectPerCornerShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSCutRectPerCornerShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_alpha_start of OBSCutRectPerCornerShader +[Alias('border_alpha_start')] +[ComponentModel.DefaultBindingProperty('border_alpha_start')] +[Single] +$BorderAlphaStart, +# Set the border_alpha_end of OBSCutRectPerCornerShader +[Alias('border_alpha_end')] +[ComponentModel.DefaultBindingProperty('border_alpha_end')] +[Single] +$BorderAlphaEnd, +# Set the alpha_cut_off of OBSCutRectPerCornerShader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'cut_rect_per_corner' +$ShaderNoun = 'OBSCutRectPerCornerShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int corner_tl< + string label = "Corner top left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int corner_tr< + string label = "Corner top right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int corner_br< + string label = "Corner bottom right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int corner_bl< + string label = "Corner bottom left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_color; +uniform float border_alpha_start< + string label = "Border aplha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float border_alpha_end< + string label = "Border aplha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; +uniform float alpha_cut_off< + string label = "Alpha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 pixel = image.Sample(textureSampler, v_in.uv); + int closedEdgeX = 0; + int closedEdgeY = 0; + if(pixel.a < alpha_cut_off){ + return float4(1.0,0.0,0.0,0.0); + } + int corner_top = corner_tl>corner_tr?corner_tl:corner_tr; + int corner_right = corner_tr>corner_br?corner_tr:corner_br; + int corner_bottom = corner_bl>corner_br?corner_bl:corner_br; + int corner_left = corner_tl>corner_bl?corner_tl:corner_bl; + + if(image.Sample(textureSampler, v_in.uv + float2(corner_right*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = corner_right; + }else if(image.Sample(textureSampler, v_in.uv + float2(-corner_left*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = -corner_left; + } + if(image.Sample(textureSampler, v_in.uv + float2(0,corner_bottom*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = corner_bottom; + }else if(image.Sample(textureSampler, v_in.uv + float2(0,-corner_top*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = -corner_top; + } + if(closedEdgeX == 0 && closedEdgeY == 0){ + return pixel; + } + if(closedEdgeX != 0){ + [loop] for(int x = 1;x 0 && closedEdgeY < 0){ + corner_radius = corner_tr; + }else if(closedEdgeX > 0 && closedEdgeY > 0){ + corner_radius = corner_br; + }else if(closedEdgeX < 0 && closedEdgeY > 0){ + corner_radius = corner_bl; + } + if(closedEdgeXabs > corner_radius && closedEdgeYabs > corner_radius){ + return pixel; + } + if(closedEdgeXabs == 0){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeYabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeYabs == 0){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeXabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeXabs > corner_radius){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeYabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeYabs > corner_radius){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeXabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + float d = closedEdgeXabs+closedEdgeYabs; + if(d>corner_radius){ + if(d-corner_radius <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + ((d-corner_radius)/ float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + return float4(0.0,0.0,0.0,0.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSCylinderShader.ps1 b/Commands/Shaders/Get-OBSCylinderShader.ps1 new file mode 100644 index 000000000..f95405dc8 --- /dev/null +++ b/Commands/Shaders/Get-OBSCylinderShader.ps1 @@ -0,0 +1,192 @@ +function Get-OBSCylinderShader { + +[Alias('Set-OBSCylinderShader','Add-OBSCylinderShader')] +param( +# Set the cylinder_factor of OBSCylinderShader +[Alias('cylinder_factor')] +[ComponentModel.DefaultBindingProperty('cylinder_factor')] +[Single] +$CylinderFactor, +# Set the background_cut of OBSCylinderShader +[Alias('background_cut')] +[ComponentModel.DefaultBindingProperty('background_cut')] +[Single] +$BackgroundCut, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'cylinder' +$ShaderNoun = 'OBSCylinderShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float cylinder_factor< + string label = "Cylinder factor"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.2; +uniform float background_cut< + string label = "Background cut"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.1; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + uv.x -= 0.5; + float bend = sqrt(1.0 - uv.x*uv.x*4); + uv.y = uv.y/(1.0 - cylinder_factor)-bend*cylinder_factor; + uv.y-=cylinder_factor/2; + uv.x /= 2; + uv.x += 0.5; + float4 front_color = image.Sample(textureSampler, uv); + front_color.rgb *= bend/2+0.5; + if(front_color.a >= 1.0) + return front_color; + + uv = v_in.uv; + uv.x -= 0.5; + if(abs(uv.x) < background_cut) + return front_color; + uv.y = uv.y/(1.0 - cylinder_factor)+bend*cylinder_factor; + uv.y-=cylinder_factor/2; + uv.x /= 2; + if(uv.x > 0){ + uv.x = 1.0 - uv.x; + }else{ + uv.x = 0 - uv.x; + } + + float4 back_color = image.Sample(textureSampler, uv); + back_color.rgb *= 0.5-bend/2; + front_color.rgb *= front_color.a; + front_color.rgb += back_color.rgb * (1.0 - front_color.a) * back_color.a; + front_color.a = back_color.a * (1.0 - front_color.a) + front_color.a; + return front_color; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDarkenShader.ps1 b/Commands/Shaders/Get-OBSDarkenShader.ps1 new file mode 100644 index 000000000..8cfb42b76 --- /dev/null +++ b/Commands/Shaders/Get-OBSDarkenShader.ps1 @@ -0,0 +1,161 @@ +function Get-OBSDarkenShader { + +[Alias('Set-OBSDarkenShader','Add-OBSDarkenShader')] +param( +# Set the Opacity_Percentage of OBSDarkenShader +[Alias('Opacity_Percentage')] +[ComponentModel.DefaultBindingProperty('Opacity_Percentage')] +[Single] +$OpacityPercentage, +# Set the Fill_Percentage of OBSDarkenShader +[Alias('Fill_Percentage')] +[ComponentModel.DefaultBindingProperty('Fill_Percentage')] +[Single] +$FillPercentage, +# Set the Notes of OBSDarkenShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'darken' +$ShaderNoun = 'OBSDarkenShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float Opacity_Percentage = 100.0; +uniform float Fill_Percentage = 100.0; +uniform string Notes = "Simulates a photo editing darken layer blending mode. Fill percentage is the interior alpha and Opacity is the layer alpha."; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 other = float4(1.0, 1.0, 1.0, 1.0); + float4 base = image.Sample(textureSampler, v_in.uv); + float luminance = dot(base.rgb, float3(0.299, 0.587, 0.114)); + float4 gray = float4(luminance,luminance,luminance, 1.0); + + return min(base,other); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDeadPixelFixerShader.ps1 b/Commands/Shaders/Get-OBSDeadPixelFixerShader.ps1 new file mode 100644 index 000000000..456b04654 --- /dev/null +++ b/Commands/Shaders/Get-OBSDeadPixelFixerShader.ps1 @@ -0,0 +1,198 @@ +function Get-OBSDeadPixelFixerShader { + +[Alias('Set-OBSDeadPixelFixerShader','Add-OBSDeadPixelFixerShader')] +param( +# Set the Dead_Pixel_X of OBSDeadPixelFixerShader +[Alias('Dead_Pixel_X')] +[ComponentModel.DefaultBindingProperty('Dead_Pixel_X')] +[Int32] +$DeadPixelX, +# Set the Dead_Pixel_Y of OBSDeadPixelFixerShader +[Alias('Dead_Pixel_Y')] +[ComponentModel.DefaultBindingProperty('Dead_Pixel_Y')] +[Int32] +$DeadPixelY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'dead-pixel-fixer' +$ShaderNoun = 'OBSDeadPixelFixerShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Dead Pixel Fixer, Version 0.01, for OBS Shaderfilter +// Copyright ©️ 2022 by SkeletonBow +// License: GNU General Public License, version 2 +// Contact info: +// Twitter: +// Twitch: +// +// Description: Intended for use with an input source that has a dead pixel on its sensor such as a webcam. +// The pixel located at the user configured offset will have its color overridden by taking the average of the +// color of the 8 pixels immediately surrounding it, effectively hiding the dead pixel. +// +// Changelog: +// 0.01 - Initial release + +uniform int Dead_Pixel_X< + string label = "Dead Pixel X"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 2000; + int step = 1; +> = 0; +uniform int Dead_Pixel_Y< + string label = "Dead Pixel Y"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 2000; + int step = 1; +> = 0; + +float3 blur_dead_pixel(in float2 pos) +{ + float3 color; + color = image.Sample(textureSampler, (pos + float2(-1.0, -0.5))/uv_size).rgb; + color += image.Sample(textureSampler, (pos + float2(0.5, -1.0))/uv_size).rgb; + color += image.Sample(textureSampler, (pos + float2(1.0, 0.5))/uv_size).rgb; + color += image.Sample(textureSampler, (pos + float2(-0.5, 1.0))/uv_size).rgb; + return color * 0.25; +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float2 pos = v_in.pos.xy; + float2 dp_pos = clamp( float2(Dead_Pixel_X, Dead_Pixel_Y), float2(0.0,0.0), uv_size - 1); + float4 obstex = image.Sample(textureSampler, uv); + float3 color; + + if(floor(pos.x) == floor(dp_pos.x) && floor(pos.y) == floor(dp_pos.y) ) { + color = blur_dead_pixel(pos); + } else { + color.rgb = obstex.rgb; + } + return float4( color, obstex.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDensitySatHueShader.ps1 b/Commands/Shaders/Get-OBSDensitySatHueShader.ps1 new file mode 100644 index 000000000..7921eeb64 --- /dev/null +++ b/Commands/Shaders/Get-OBSDensitySatHueShader.ps1 @@ -0,0 +1,488 @@ +function Get-OBSDensitySatHueShader { + +[Alias('Set-OBSDensitySatHueShader','Add-OBSDensitySatHueShader')] +param( +# Set the notes of OBSDensitySatHueShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the density_r of OBSDensitySatHueShader +[Alias('density_r')] +[ComponentModel.DefaultBindingProperty('density_r')] +[Single] +$DensityR, +# Set the saturation_r of OBSDensitySatHueShader +[Alias('saturation_r')] +[ComponentModel.DefaultBindingProperty('saturation_r')] +[Single] +$SaturationR, +# Set the hueShift_r of OBSDensitySatHueShader +[Alias('hueShift_r')] +[ComponentModel.DefaultBindingProperty('hueShift_r')] +[Single] +$HueShiftR, +# Set the density_y of OBSDensitySatHueShader +[Alias('density_y')] +[ComponentModel.DefaultBindingProperty('density_y')] +[Single] +$DensityY, +# Set the saturation_y of OBSDensitySatHueShader +[Alias('saturation_y')] +[ComponentModel.DefaultBindingProperty('saturation_y')] +[Single] +$SaturationY, +# Set the hueShift_y of OBSDensitySatHueShader +[Alias('hueShift_y')] +[ComponentModel.DefaultBindingProperty('hueShift_y')] +[Single] +$HueShiftY, +# Set the density_g of OBSDensitySatHueShader +[Alias('density_g')] +[ComponentModel.DefaultBindingProperty('density_g')] +[Single] +$DensityG, +# Set the saturation_g of OBSDensitySatHueShader +[Alias('saturation_g')] +[ComponentModel.DefaultBindingProperty('saturation_g')] +[Single] +$SaturationG, +# Set the hueShift_g of OBSDensitySatHueShader +[Alias('hueShift_g')] +[ComponentModel.DefaultBindingProperty('hueShift_g')] +[Single] +$HueShiftG, +# Set the density_c of OBSDensitySatHueShader +[Alias('density_c')] +[ComponentModel.DefaultBindingProperty('density_c')] +[Single] +$DensityC, +# Set the saturation_c of OBSDensitySatHueShader +[Alias('saturation_c')] +[ComponentModel.DefaultBindingProperty('saturation_c')] +[Single] +$SaturationC, +# Set the hueShift_c of OBSDensitySatHueShader +[Alias('hueShift_c')] +[ComponentModel.DefaultBindingProperty('hueShift_c')] +[Single] +$HueShiftC, +# Set the density_b of OBSDensitySatHueShader +[Alias('density_b')] +[ComponentModel.DefaultBindingProperty('density_b')] +[Single] +$DensityB, +# Set the saturation_b of OBSDensitySatHueShader +[Alias('saturation_b')] +[ComponentModel.DefaultBindingProperty('saturation_b')] +[Single] +$SaturationB, +# Set the hueShift_b of OBSDensitySatHueShader +[Alias('hueShift_b')] +[ComponentModel.DefaultBindingProperty('hueShift_b')] +[Single] +$HueShiftB, +# Set the density_m of OBSDensitySatHueShader +[Alias('density_m')] +[ComponentModel.DefaultBindingProperty('density_m')] +[Single] +$DensityM, +# Set the saturation_m of OBSDensitySatHueShader +[Alias('saturation_m')] +[ComponentModel.DefaultBindingProperty('saturation_m')] +[Single] +$SaturationM, +# Set the hueShift_m of OBSDensitySatHueShader +[Alias('hueShift_m')] +[ComponentModel.DefaultBindingProperty('hueShift_m')] +[Single] +$HueShiftM, +# Set the global_density of OBSDensitySatHueShader +[Alias('global_density')] +[ComponentModel.DefaultBindingProperty('global_density')] +[Single] +$GlobalDensity, +# Set the global_saturation of OBSDensitySatHueShader +[Alias('global_saturation')] +[ComponentModel.DefaultBindingProperty('global_saturation')] +[Single] +$GlobalSaturation, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'density_sat_hue' +$ShaderNoun = 'OBSDensitySatHueShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Density-Saturation-Hue Shader for OBS Shaderfilter +// Modified by CameraTim for use with obs-shaderfilter 12/2024 v.12 + +uniform string notes< + string widget_type = "info"; +> = "Density adjustment shader: Density reduces luminance, while saturation is subtractively increased to avoid greyish colors."; + +uniform float density_r < + string label = "Red Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_r < + string label = "Red Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_r < + string label = "Red Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_y < + string label = "Yellow Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_y < + string label = "Yellow Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_y < + string label = "Yellow Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_g < + string label = "Green Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_g < + string label = "Green Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_g < + string label = "Green Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_c < + string label = "Cyan Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_c < + string label = "Cyan Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_c < + string label = "Cyan Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_b < + string label = "Blue Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_b < + string label = "Blue Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_b < + string label = "Blue Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_m < + string label = "Magenta Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_m < + string label = "Magenta Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_m < + string label = "Magenta Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float global_density < + string label = "Global Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float global_saturation < + string label = "Global Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +// Tetrahedral interpolation based on the ordering of the input color channels +float3 applyAdjustments(float3 p) { + // Pre-calculate the flipped density values for each channel: + float d_r = -(density_r + global_density); + float d_y = -(density_y + global_density); + float d_g = -(density_g + global_density); + float d_c = -(density_c + global_density); + float d_b = -(density_b + global_density); + float d_m = -(density_m + global_density); + + // Compute the color vectors for each hue region using the flipped densities: + float3 red = float3( + 1.0 + d_r, + d_r - (saturation_r + global_saturation), + d_r + hueShift_r - (saturation_r + global_saturation) + ); + + float3 yellow = float3( + 1.0 + hueShift_y + d_y, + 1.0 + d_y, + d_y - (saturation_y + global_saturation) + ); + + float3 green = float3( + d_g - (saturation_g + global_saturation), + 1.0 + d_g, + d_g + hueShift_g - (saturation_g + global_saturation) + ); + + float3 cyan = float3( + d_c - (saturation_c + global_saturation), + 1.0 + hueShift_c + d_c, + 1.0 + d_c + ); + + float3 blue = float3( + d_b + hueShift_b - (saturation_b + global_saturation), + d_b - (saturation_b + global_saturation), + 1.0 + d_b + ); + + float3 magenta = float3( + 1.0 + d_m, + d_m - (saturation_m + global_saturation), + 1.0 + hueShift_m + d_m + ); + + // Define the black and white endpoints: + float3 blk = float3(0.0, 0.0, 0.0); + float3 wht = float3(1.0, 1.0, 1.0); + + float3 rgb; + if (p.r > p.g) { + if (p.g > p.b) { + // p.r >= p.g >= p.b + rgb = p.r * (red - blk) + blk + p.g * (yellow - red) + p.b * (wht - yellow); + } else if (p.r > p.b) { + // p.r >= p.b > p.g + rgb = p.r * (red - blk) + blk + p.g * (wht - magenta) + p.b * (magenta - red); + } else { + // p.b >= p.r > p.g + rgb = p.r * (magenta - blue) + p.g * (wht - magenta) + p.b * (blue - blk) + blk; + } + } else { + if (p.b > p.g) { + // p.b >= p.g >= p.r + rgb = p.r * (wht - cyan) + p.g * (cyan - blue) + p.b * (blue - blk) + blk; + } else if (p.b > p.r) { + // p.g >= p.r and p.b > p.r + rgb = p.r * (wht - cyan) + p.g * (green - blk) + blk + p.b * (cyan - green); + } else { + // p.g >= p.b >= p.r + rgb = p.r * (yellow - green) + p.g * (green - blk) + blk + p.b * (wht - yellow); + } + } + return clamp(rgb, 0.0, 1.0); +} + +float4 mainImage(VertData v_in) : TARGET { + float4 inputColor = image.Sample(textureSampler, v_in.uv); + float3 adjustedColor = applyAdjustments(inputColor.rgb); + return float4(adjustedColor, inputColor.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDiffuseTransitionShader.ps1 b/Commands/Shaders/Get-OBSDiffuseTransitionShader.ps1 new file mode 100644 index 000000000..e7d93e56e --- /dev/null +++ b/Commands/Shaders/Get-OBSDiffuseTransitionShader.ps1 @@ -0,0 +1,242 @@ +function Get-OBSDiffuseTransitionShader { + +[Alias('Set-OBSDiffuseTransitionShader','Add-OBSDiffuseTransitionShader')] +param( +# Set the image_a of OBSDiffuseTransitionShader +[Alias('image_a')] +[ComponentModel.DefaultBindingProperty('image_a')] +[String] +$ImageA, +# Set the image_b of OBSDiffuseTransitionShader +[Alias('image_b')] +[ComponentModel.DefaultBindingProperty('image_b')] +[String] +$ImageB, +# Set the transition_time of OBSDiffuseTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBSDiffuseTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# Set the num_samples of OBSDiffuseTransitionShader +[Alias('num_samples')] +[ComponentModel.DefaultBindingProperty('num_samples')] +[Int32] +$NumSamples, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'diffuse_transition' +$ShaderNoun = 'OBSDiffuseTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/4cK3z1 +uniform texture2d image_a; +uniform texture2d image_b; +uniform float transition_time = 0.5; +uniform bool convert_linear = true; + +// Diffuse (move pixels) between two 2D images +// Demo inspired by Iterative-(de)Blending (see Figure 9 in https://arxiv.org/pdf/2305.03486.pdf) +// Note: the approach in this demo is different - rather than randomising paths we use means + +// increase for greater precision - this is O(n^2) :( +uniform int num_samples< + string label = "Number of samples (10)"; + string widget_type = "slider"; + int minimum = 2; + int maximum = 100; + int step = 1; +> = 10; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + + if (transition_time < 0.00001) { + return image_a.Sample(textureSampler, uv); + } + + // we need to normalise the distributions so just sum the samples for a division later + // note: could calculate this once per image in a buffer or something + float3 from_total = float3(0.0,0.0,0.0); + float3 to_total = float3(0.0,0.0,0.0); + + for (int i=0; iAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDigitalRainShader.ps1 b/Commands/Shaders/Get-OBSDigitalRainShader.ps1 new file mode 100644 index 000000000..b6cc14c34 --- /dev/null +++ b/Commands/Shaders/Get-OBSDigitalRainShader.ps1 @@ -0,0 +1,232 @@ +function Get-OBSDigitalRainShader { + +[Alias('Set-OBSDigitalRainShader','Add-OBSDigitalRainShader')] +param( +# Set the font of OBSDigitalRainShader +[ComponentModel.DefaultBindingProperty('font')] +[String] +$Font, +# Set the noise of OBSDigitalRainShader +[ComponentModel.DefaultBindingProperty('noise')] +[String] +$Noise, +# Set the base_color of OBSDigitalRainShader +[Alias('base_color')] +[ComponentModel.DefaultBindingProperty('base_color')] +[String] +$BaseColor, +# Set the rain_speed of OBSDigitalRainShader +[Alias('rain_speed')] +[ComponentModel.DefaultBindingProperty('rain_speed')] +[Single] +$RainSpeed, +# Set the char_speed of OBSDigitalRainShader +[Alias('char_speed')] +[ComponentModel.DefaultBindingProperty('char_speed')] +[Single] +$CharSpeed, +# Set the glow_contrast of OBSDigitalRainShader +[Alias('glow_contrast')] +[ComponentModel.DefaultBindingProperty('glow_contrast')] +[Single] +$GlowContrast, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'digital-rain' +$ShaderNoun = 'OBSDigitalRainShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// based on https://www.shadertoy.com/view/ldccW4 by WillKirkby + + +#ifndef OPENGL +#define fract frac +#define mix lerp +#endif + +uniform texture2d font = "font.png"; +uniform texture2d noise = "noise.png"; +uniform float4 base_color = {.1, 1.0, .35, 1.0}; +uniform float rain_speed< + string label = "Rain Speed"; + string widget_type = "slider"; + float minimum = 0.001; + float maximum = 2.0; + float step = .001; +> = 1.0; + +uniform float char_speed< + string label = "Character Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = .001; +> = 1.0; + +uniform float glow_contrast< + string label = "Glow contrast"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.5; + float step = .001; +> = 1.0; + + +float mod(float x, float y) +{ + return x - y * floor(x/y); +} + +float2 mod2(float2 x, float2 y) +{ + return x - y * floor(x/y); +} + +float text(float2 fragCoord) +{ + float2 uv = mod2(fragCoord, float2(16.0, 16.0) )/16.0; + float2 block = (fragCoord*.0625 - uv)/uv_size*16.0; + uv = uv*.8+.1; // scale the letters up a bit + block += elapsed_time*.002*char_speed; + uv += floor(noise.Sample(textureSampler, fract(block)).xy * 16.); // randomize letters + uv *= .0625; // bring back into 0-1 range + return font.Sample(textureSampler, uv).r; +} + +float3 rain(float2 fragCoord) +{ + fragCoord.x -= mod(fragCoord.x, 16.); + float offset=sin(fragCoord.x*15.); + float speed=(cos(fragCoord.x*3.)*.3+.7)*rain_speed; + + float y = fract(fragCoord.y/uv_size.y + elapsed_time*speed + offset); + return base_color.rgb / pow(y*20.0, glow_contrast); +} + +float4 mainImage(VertData v_in) : TARGET +{ + return mix(image.Sample(textureSampler, v_in.uv),float4(rain(float2(v_in.uv.x,1.0-v_in.uv.y)*uv_size),1.0), text(v_in.uv*uv_size)); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDivideRotateShader.ps1 b/Commands/Shaders/Get-OBSDivideRotateShader.ps1 new file mode 100644 index 000000000..3fc5c7d57 --- /dev/null +++ b/Commands/Shaders/Get-OBSDivideRotateShader.ps1 @@ -0,0 +1,236 @@ +function Get-OBSDivideRotateShader { + +[Alias('Set-OBSDivideRotateShader','Add-OBSDivideRotateShader')] +param( +# Set the iChannel0 of OBSDivideRotateShader +[ComponentModel.DefaultBindingProperty('iChannel0')] +[String] +$IChannel0, +# Set the speed_percentage of OBSDivideRotateShader +[Alias('speed_percentage')] +[ComponentModel.DefaultBindingProperty('speed_percentage')] +[Int32] +$SpeedPercentage, +# Set the alpha_percentage of OBSDivideRotateShader +[Alias('alpha_percentage')] +[ComponentModel.DefaultBindingProperty('alpha_percentage')] +[Int32] +$AlphaPercentage, +# Set the Apply_To_Alpha_Layer of OBSDivideRotateShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the notes of OBSDivideRotateShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'divide_rotate' +$ShaderNoun = 'OBSDivideRotateShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// divide and rotate shader for OBS Studio shaderfilter plugin +// originally from shadertoy (https://www.shadertoy.com/view/3sy3Dh) +// Modified by Charles Fettinger (https://github.com/Oncorporation) 10/2019 +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform texture2d iChannel0; +uniform int speed_percentage< + string label = "Speed"; + string widget_type = "slider"; + int minimum = -10; + int maximum = 10; + int step = 1; +> = 5; +uniform int alpha_percentage< + string label = "Opacity Percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform bool Apply_To_Alpha_Layer = true; + +uniform string notes< + string widget_type = "info"; +> = "add rotation and speed"; + + +float2 cm(float2 a, float2 b) { + return float2(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x); +} + +float2 iter(float2 uv, float2 rot, float scale) { + float2 gv = frac(cm(uv, rot) * scale); + float boundDist = 1. - max(abs(gv.x), abs(gv.y)); + float mask = step(.03, boundDist); + gv *= mask; + return gv; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float alpha = clamp(alpha_percentage * 0.01, 0.0, 1.0); + float speed = clamp(speed_percentage * 0.01, -10.0, 10.0); + + // Normalize coords + //float2 uv = (v_in.uv * uv_scale + uv_offset); + float2 uv = (float2(v_in.uv.x, (1 - v_in.uv.y)) * uv_scale + uv_offset) - .5 * (v_in.uv * uv_scale + uv_offset);// / v_in.uv.y; + float2 mouse = (v_in.uv.xy - .5 * v_in.uv.xy) / v_in.uv.y; + + // Add some time rotation and offset + float t = elapsed_time * speed; + float2 time = float2(sin(t), cos(t)); + uv += time; + + // Imaginary component has to be mirrored for natural feeling rotation + mouse.y *= -1.0; + + // Draw few layers of this to bend space + float2 rot = cm(mouse, time); + for (float i=1.0; i<=3.0; i++) { + uv = iter(uv, rot, 1.5); + } + + // Combine background with new image + float4 background_color = image.Sample(textureSampler, v_in.uv); + float4 col = iChannel0.Sample(textureSampler, uv); + + // Border + if (uv.x == 0.0 && uv.y == 0.0) { + col = float4(0,0,0,alpha); + } + + // if not appling to alpha layer, set output alpha + if (Apply_To_Alpha_Layer == false) + col.a = alpha; + + //output color is combined with background image + col.rgb = lerp(background_color.rgb,col.rgb,clamp(alpha, 0.0, 1.0)); + + return col; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDoodleShader.ps1 b/Commands/Shaders/Get-OBSDoodleShader.ps1 new file mode 100644 index 000000000..42307ca6e --- /dev/null +++ b/Commands/Shaders/Get-OBSDoodleShader.ps1 @@ -0,0 +1,271 @@ +function Get-OBSDoodleShader { + +[Alias('Set-OBSDoodleShader','Add-OBSDoodleShader')] +param( +# Set the ViewProj of OBSDoodleShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSDoodleShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSDoodleShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSDoodleShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSDoodleShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSDoodleShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSDoodleShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSDoodleShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the Doodle_Scale_Percent of OBSDoodleShader +[Alias('Doodle_Scale_Percent')] +[ComponentModel.DefaultBindingProperty('Doodle_Scale_Percent')] +[Single] +$DoodleScalePercent, +# Set the Snap_Percent of OBSDoodleShader +[Alias('Snap_Percent')] +[ComponentModel.DefaultBindingProperty('Snap_Percent')] +[Single] +$SnapPercent, +# Set the Notes of OBSDoodleShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'doodle' +$ShaderNoun = 'OBSDoodleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// doodle effect by Charles Fettinger (https://github.com/Oncorporation) 5/2019 +// for use with obs-shaderfilter 1.0 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +uniform float Doodle_Scale_Percent< + string label = "Doodle Scale Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 2.5; +uniform float Snap_Percent< + string label = "Snap Percent"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 100.0; + float step = 0.1; +> = 7.5; +uniform string Notes< + string widget_type = "info"; +> = "Doodle skews the image by the Scale Percent, Snap Percent controls the number of doodles per second."; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float3 rand3(float3 co) +{ + float j = 4096.0*sin(dot(co, float3(17.0, 59.4, 15.0))); + float3 result; + result.z = frac(512.0*j); + j *= .125; + result.x = frac(512.0*j); + j *= .125; + result.y = frac(512.0*j); + return result - 0.5; +} + +float snap(float x, float snap) +{ + return snap * round(x / max(0.01,snap)); +} + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + float time = snap((1 + sin(elapsed_time)) * 0.5, Snap_Percent * .01); + float rand = snap(rand_f, Snap_Percent *.01); + float2 noise = rand3(v_in.pos.xyz + float3(time,0.0,0.0)).xy * (Doodle_Scale_Percent * .01); + vert_out.uv.xy += noise; + + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +technique Draw +{ + pass p0 + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDrawingsShader.ps1 b/Commands/Shaders/Get-OBSDrawingsShader.ps1 new file mode 100644 index 000000000..2dc03f15e --- /dev/null +++ b/Commands/Shaders/Get-OBSDrawingsShader.ps1 @@ -0,0 +1,275 @@ +function Get-OBSDrawingsShader { + +[Alias('Set-OBSDrawingsShader','Add-OBSDrawingsShader')] +param( +# Set the AngleNum of OBSDrawingsShader +[ComponentModel.DefaultBindingProperty('AngleNum')] +[Int32] +$AngleNum, +# Set the SampNum of OBSDrawingsShader +[ComponentModel.DefaultBindingProperty('SampNum')] +[Int32] +$SampNum, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'drawings' +$ShaderNoun = 'OBSDrawingsShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/ldlcWs + +uniform int AngleNum< + string label = "Number of angles"; + string widget_type = "slider"; + int minimum = 0.0; + int maximum = 25; + int step = 1; +> = 3; +uniform int SampNum< + string label = "Number of samples"; + string widget_type = "slider"; + int minimum = 0.0; + int maximum = 25; + int step = 1; +> = 9; + +float4 getCol(float2 pos) +{ + // take aspect ratio into account + float2 uv=pos; + float4 c1=image.Sample(textureSampler, uv); + float4 e=smoothstep(float4(-0.05,-0.05,-0.05,-0.05),float4(-0.0,-0.0,-0.0,-0.0),float4(uv,float2(1,1)-uv)); + c1=lerp(float4(1,1,1,0),c1,e.x*e.y*e.z*e.w); + float d=clamp(dot(c1.xyz,float3(-.5,1.,-.5)),0.0,1.0); + float4 c2=float4(.7,.7,.7,.7); + return min(lerp(c1,c2,1.8*d),.7); +} + +float4 getColHT(float2 pos) +{ + return smoothstep(0.795,1.05,getCol(pos)*.8+.2+1.0); +} + +float getVal(float2 pos) +{ + float4 c=getCol(pos); + return pow(dot(c.xyz,float3(.333,.333,.333)),1.)*1.; +} + +float2 getGrad(float2 pos, float eps) +{ + float2 d=float2(eps,0.); + return float2( + getVal(pos+d.xy)-getVal(pos-d.xy), + getVal(pos+d.yx)-getVal(pos-d.yx) + )/eps/2.; +} + + + float lum( float3 c) { + return dot(c, float3(0.3, 0.59, 0.11)); + } + + + float3 clipcolor( float3 c) { + float l = lum(c); + float n = min(min(c.r, c.g), c.b); + float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.25) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + return c; + } + + float3 setlum( float3 c, float l) { + float d = l - lum(c); + c = c + float3(d,d,d); + return clipcolor(0.85*c); + } + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + float3 col = float3(0,0,0); + float3 col2 = float3(0,0,0); + float sum=0.; + + for(int i=0;iAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDropShadowShader.ps1 b/Commands/Shaders/Get-OBSDropShadowShader.ps1 new file mode 100644 index 000000000..f94cd1d04 --- /dev/null +++ b/Commands/Shaders/Get-OBSDropShadowShader.ps1 @@ -0,0 +1,218 @@ +function Get-OBSDropShadowShader { + +[Alias('Set-OBSDropShadowShader','Add-OBSDropShadowShader')] +param( +# Set the shadow_offset_x of OBSDropShadowShader +[Alias('shadow_offset_x')] +[ComponentModel.DefaultBindingProperty('shadow_offset_x')] +[Int32] +$ShadowOffsetX, +# Set the shadow_offset_y of OBSDropShadowShader +[Alias('shadow_offset_y')] +[ComponentModel.DefaultBindingProperty('shadow_offset_y')] +[Int32] +$ShadowOffsetY, +# Set the shadow_blur_size of OBSDropShadowShader +[Alias('shadow_blur_size')] +[ComponentModel.DefaultBindingProperty('shadow_blur_size')] +[Int32] +$ShadowBlurSize, +# Set the notes of OBSDropShadowShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the shadow_color of OBSDropShadowShader +[Alias('shadow_color')] +[ComponentModel.DefaultBindingProperty('shadow_color')] +[String] +$ShadowColor, +# Set the is_alpha_premultiplied of OBSDropShadowShader +[Alias('is_alpha_premultiplied')] +[ComponentModel.DefaultBindingProperty('is_alpha_premultiplied')] +[Management.Automation.SwitchParameter] +$IsAlphaPremultiplied, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'drop_shadow' +$ShaderNoun = 'OBSDropShadowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Drop Shadow shader modified by Charles Fettinger +// impose a limiter to keep from crashing the system +//Converted to OpenGL by Exeldro February 19, 2022 +uniform int shadow_offset_x< + string label = "Shadow offset x"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +> = 5; +uniform int shadow_offset_y< + string label = "Shadow offset y"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +> = 5; +uniform int shadow_blur_size< + string label = "Shadow blur size"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 15; + int step = 1; +> = 3; +uniform string notes< + string widget_type = "info"; +> = "blur size is limited to a max of 15 to ensure GPU"; + +uniform float4 shadow_color; + +uniform bool is_alpha_premultiplied; + +float4 mainImage(VertData v_in) : TARGET +{ + int shadow_blur_size_limited = max(0, min(15, shadow_blur_size)); + int shadow_blur_samples = int(pow(float(shadow_blur_size_limited * 2 + 1), 2.0)); + + float4 color = image.Sample(textureSampler, v_in.uv); + float2 shadow_uv = float2(v_in.uv.x - uv_pixel_interval.x * float(shadow_offset_x), + v_in.uv.y - uv_pixel_interval.y * float(shadow_offset_y)); + + float sampled_shadow_alpha = 0.0; + + for (int blur_x = -shadow_blur_size_limited; blur_x <= shadow_blur_size_limited; blur_x++) + { + for (int blur_y = -shadow_blur_size_limited; blur_y <= shadow_blur_size_limited; blur_y++) + { + float2 blur_uv = shadow_uv + float2(uv_pixel_interval.x * float(blur_x), uv_pixel_interval.y * float(blur_y)); + sampled_shadow_alpha += image.Sample(textureSampler, blur_uv).a / float(shadow_blur_samples); + } + } + + float4 final_shadow_color = float4(shadow_color.r, shadow_color.g, shadow_color.b, shadow_color.a * sampled_shadow_alpha); + return final_shadow_color * (1.0-color.a) + color * (is_alpha_premultiplied?color.a:1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDrunkShader.ps1 b/Commands/Shaders/Get-OBSDrunkShader.ps1 new file mode 100644 index 000000000..8d5150ae2 --- /dev/null +++ b/Commands/Shaders/Get-OBSDrunkShader.ps1 @@ -0,0 +1,336 @@ +function Get-OBSDrunkShader { + +[Alias('Set-OBSDrunkShader','Add-OBSDrunkShader')] +param( +# Set the color_matrix of OBSDrunkShader +[Alias('color_matrix')] +[ComponentModel.DefaultBindingProperty('color_matrix')] +[Single[][]] +$ColorMatrix, +# Set the glow_percent of OBSDrunkShader +[Alias('glow_percent')] +[ComponentModel.DefaultBindingProperty('glow_percent')] +[Int32] +$GlowPercent, +# Set the blur of OBSDrunkShader +[ComponentModel.DefaultBindingProperty('blur')] +[Int32] +$Blur, +# Set the min_brightness of OBSDrunkShader +[Alias('min_brightness')] +[ComponentModel.DefaultBindingProperty('min_brightness')] +[Int32] +$MinBrightness, +# Set the max_brightness of OBSDrunkShader +[Alias('max_brightness')] +[ComponentModel.DefaultBindingProperty('max_brightness')] +[Int32] +$MaxBrightness, +# Set the pulse_speed_percent of OBSDrunkShader +[Alias('pulse_speed_percent')] +[ComponentModel.DefaultBindingProperty('pulse_speed_percent')] +[Int32] +$PulseSpeedPercent, +# Set the Apply_To_Alpha_Layer of OBSDrunkShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the glow_color of OBSDrunkShader +[Alias('glow_color')] +[ComponentModel.DefaultBindingProperty('glow_color')] +[String] +$GlowColor, +# Set the ease of OBSDrunkShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the glitch of OBSDrunkShader +[ComponentModel.DefaultBindingProperty('glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the notes of OBSDrunkShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'drunk' +$ShaderNoun = 'OBSDrunkShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Drunk shader by Charles Fettinger (https://github.com/Oncorporation) 2/2019 +//Converted to OpenGL by Q-mii & Exeldro March 11, 2022 +uniform float4x4 color_matrix; + + +uniform int glow_percent< + string label = "Glow percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 10; +uniform int blur< + string label = "Blur"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 1; +uniform int min_brightness< + string label = "Min brightness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 27; +uniform int max_brightness< + string label = "Max brightness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform int pulse_speed_percent< + string label = "Pulse speed percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform bool Apply_To_Alpha_Layer = true; +uniform float4 glow_color; +uniform bool ease; +uniform bool glitch; +uniform string notes< + string widget_type = "info"; +> ="''drunk refers to the bad blur effect of using 4 coordinates to blur. ''blur'' - the distance between the 4 copies (recommend 1-4)"; + + +// Gaussian Blur +float Gaussian(float x, float o) { + const float pivalue = 3.1415926535897932384626433832795; + return (1.0 / (o * sqrt(2.0 * pivalue))) * exp((-(x * x)) / (2 * (o * o))); +} + + +float EaseInOutCircTimer(float t,float b,float c,float d){ + t /= d/2; + if (t < 1) return -c/2 * (sqrt(1 - t*t) - 1) + b; + t -= 2; + return c/2 * (sqrt(1 - t*t) + 1) + b; +} + +float BlurStyler(float t,float b,float c,float d,bool ease) +{ + if (ease) return EaseInOutCircTimer(t,0,c,d); + return t; +} + +float4 InternalGaussianPrecalculated(float2 p_uv, float2 p_uvStep, int p_radius, + texture2d p_image, float2 p_imageTexel, + texture2d p_kernel, float2 p_kernelTexel) { + float4 l_value = image.Sample(pointClampSampler, p_uv) + * kernel.Sample(pointClampSampler, float2(0, 0)).r; + float2 l_uvoffset = float2(0, 0); + for (int k = 1; k <= p_radius; k++) { + l_uvoffset += p_uvStep; + float l_g = kernel.Sample(pointClampSampler, p_kernelTexel * k).r; + float4 l_p = image.Sample(pointClampSampler, p_uv + l_uvoffset) * l_g; + float4 l_n = image.Sample(pointClampSampler, p_uv - l_uvoffset) * l_g; + l_value += l_p + l_n; + } + return l_value; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 offsets[4]; + offsets[0] = float2(-0.05, 0.066); + offsets[1] = float2(-0.05, -0.066); + offsets[2] = float2(0.05, -0.066); + offsets[3] = float2(0.05, 0.066); + + // convert input for vector math + float blur_amount = float(blur) /100; + float glow_amount = float(glow_percent) * 0.1; + float speed = float(pulse_speed_percent) * 0.01; + float luminance_floor = float(min_brightness) * 0.01; + float luminance_ceiling = float(max_brightness) * 0.01; + + float4 color = image.Sample(textureSampler, v_in.uv); + float4 temp_color = color; + bool glitch_on = glitch; + + //circular easing variable + float t = 1 + sin(elapsed_time * speed); + float b = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + //if(color.a <= 0.0) color.rgb = float3(0.0,0.0,0.0); + float4 glitch_color = glow_color; + + for (int n = 0; n < 4; n++){ + //blur sample + b = BlurStyler(t,0,c,d,ease); + float4 ncolor = image.Sample(textureSampler, v_in.uv + (blur_amount * b) * offsets[n]) ; + + //test for rand_f color + if (glitch) { + glitch_color = float4(glow_color.rgb * rand_f,glow_color.a); + if ((color.r == rand_f) || (color.g == rand_f) || (color.b == rand_f)) + { + glitch_on = true; + } + } + + float intensity = ncolor.r * 0.299 + ncolor.g * 0.587 + ncolor.b * 0.114; + if (((intensity >= luminance_floor) && (intensity <= luminance_ceiling)) || // test luminance + ((color.r == glow_color.r) && (color.g == glow_color.g) && (color.b == glow_color.b)) || //test for chosen color + glitch_on) //test for rand color + { + //glow calc + if (ncolor.a > 0.0 || Apply_To_Alpha_Layer == false) + { + ncolor.a = clamp(ncolor.a * glow_amount, 0.0, 1.0); + //temp_color = max(temp_color,ncolor) * glow_color ;//* ((1-ncolor.a) + color * ncolor.a); + //temp_color += (ncolor * float4(glow_color.rbg, glow_amount)); + + // use temp_color as floor, add glow, use highest alpha of blur pixels, then multiply by glow color + // max is used to simulate addition of vector texture color + temp_color = float4(max(temp_color.rgb, ncolor.rgb * (glow_amount * (b / 2))), // color effected by glow over time + max(temp_color.a, (glow_amount * (b / 2)))) // alpha affected by glow over time + * (glitch_color * (b / 2)); // glow color affected by glow over time + } + } + } + // grab lighter color + return max(color,temp_color); +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSDynamicMaskShader.ps1 b/Commands/Shaders/Get-OBSDynamicMaskShader.ps1 new file mode 100644 index 000000000..b2a2e13ef --- /dev/null +++ b/Commands/Shaders/Get-OBSDynamicMaskShader.ps1 @@ -0,0 +1,470 @@ +function Get-OBSDynamicMaskShader { + +[Alias('Set-OBSDynamicMaskShader','Add-OBSDynamicMaskShader')] +param( +# Set the input_source of OBSDynamicMaskShader +[Alias('input_source')] +[ComponentModel.DefaultBindingProperty('input_source')] +[String] +$InputSource, +# Set the red_base_value of OBSDynamicMaskShader +[Alias('red_base_value')] +[ComponentModel.DefaultBindingProperty('red_base_value')] +[Single] +$RedBaseValue, +# Set the red_red_input_value of OBSDynamicMaskShader +[Alias('red_red_input_value')] +[ComponentModel.DefaultBindingProperty('red_red_input_value')] +[Single] +$RedRedInputValue, +# Set the red_green_input_value of OBSDynamicMaskShader +[Alias('red_green_input_value')] +[ComponentModel.DefaultBindingProperty('red_green_input_value')] +[Single] +$RedGreenInputValue, +# Set the red_blue_input_value of OBSDynamicMaskShader +[Alias('red_blue_input_value')] +[ComponentModel.DefaultBindingProperty('red_blue_input_value')] +[Single] +$RedBlueInputValue, +# Set the red_alpha_input_value of OBSDynamicMaskShader +[Alias('red_alpha_input_value')] +[ComponentModel.DefaultBindingProperty('red_alpha_input_value')] +[Single] +$RedAlphaInputValue, +# Set the red_multiplier of OBSDynamicMaskShader +[Alias('red_multiplier')] +[ComponentModel.DefaultBindingProperty('red_multiplier')] +[Single] +$RedMultiplier, +# Set the green_base_value of OBSDynamicMaskShader +[Alias('green_base_value')] +[ComponentModel.DefaultBindingProperty('green_base_value')] +[Single] +$GreenBaseValue, +# Set the green_red_input_value of OBSDynamicMaskShader +[Alias('green_red_input_value')] +[ComponentModel.DefaultBindingProperty('green_red_input_value')] +[Single] +$GreenRedInputValue, +# Set the green_green_input_value of OBSDynamicMaskShader +[Alias('green_green_input_value')] +[ComponentModel.DefaultBindingProperty('green_green_input_value')] +[Single] +$GreenGreenInputValue, +# Set the green_blue_input_value of OBSDynamicMaskShader +[Alias('green_blue_input_value')] +[ComponentModel.DefaultBindingProperty('green_blue_input_value')] +[Single] +$GreenBlueInputValue, +# Set the green_alpha_input_value of OBSDynamicMaskShader +[Alias('green_alpha_input_value')] +[ComponentModel.DefaultBindingProperty('green_alpha_input_value')] +[Single] +$GreenAlphaInputValue, +# Set the green_multiplier of OBSDynamicMaskShader +[Alias('green_multiplier')] +[ComponentModel.DefaultBindingProperty('green_multiplier')] +[Single] +$GreenMultiplier, +# Set the blue_base_value of OBSDynamicMaskShader +[Alias('blue_base_value')] +[ComponentModel.DefaultBindingProperty('blue_base_value')] +[Single] +$BlueBaseValue, +# Set the blue_red_input_value of OBSDynamicMaskShader +[Alias('blue_red_input_value')] +[ComponentModel.DefaultBindingProperty('blue_red_input_value')] +[Single] +$BlueRedInputValue, +# Set the blue_green_input_value of OBSDynamicMaskShader +[Alias('blue_green_input_value')] +[ComponentModel.DefaultBindingProperty('blue_green_input_value')] +[Single] +$BlueGreenInputValue, +# Set the blue_blue_input_value of OBSDynamicMaskShader +[Alias('blue_blue_input_value')] +[ComponentModel.DefaultBindingProperty('blue_blue_input_value')] +[Single] +$BlueBlueInputValue, +# Set the blue_alpha_input_value of OBSDynamicMaskShader +[Alias('blue_alpha_input_value')] +[ComponentModel.DefaultBindingProperty('blue_alpha_input_value')] +[Single] +$BlueAlphaInputValue, +# Set the blue_multiplier of OBSDynamicMaskShader +[Alias('blue_multiplier')] +[ComponentModel.DefaultBindingProperty('blue_multiplier')] +[Single] +$BlueMultiplier, +# Set the alpha_base_value of OBSDynamicMaskShader +[Alias('alpha_base_value')] +[ComponentModel.DefaultBindingProperty('alpha_base_value')] +[Single] +$AlphaBaseValue, +# Set the alpha_red_input_value of OBSDynamicMaskShader +[Alias('alpha_red_input_value')] +[ComponentModel.DefaultBindingProperty('alpha_red_input_value')] +[Single] +$AlphaRedInputValue, +# Set the alpha_green_input_value of OBSDynamicMaskShader +[Alias('alpha_green_input_value')] +[ComponentModel.DefaultBindingProperty('alpha_green_input_value')] +[Single] +$AlphaGreenInputValue, +# Set the alpha_blue_input_value of OBSDynamicMaskShader +[Alias('alpha_blue_input_value')] +[ComponentModel.DefaultBindingProperty('alpha_blue_input_value')] +[Single] +$AlphaBlueInputValue, +# Set the alpha_alpha_input_value of OBSDynamicMaskShader +[Alias('alpha_alpha_input_value')] +[ComponentModel.DefaultBindingProperty('alpha_alpha_input_value')] +[Single] +$AlphaAlphaInputValue, +# Set the alpha_multiplier of OBSDynamicMaskShader +[Alias('alpha_multiplier')] +[ComponentModel.DefaultBindingProperty('alpha_multiplier')] +[Single] +$AlphaMultiplier, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'dynamic-mask' +$ShaderNoun = 'OBSDynamicMaskShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d input_source< + string label = "Input Source"; +>; + +uniform float red_base_value< + string label = "Base Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; +uniform float red_red_input_value< + string label = "Red Input Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float red_green_input_value< + string label = "Green Input Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float red_blue_input_value< + string label = "Blue Input Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float red_alpha_input_value< + string label = "Alpha Input Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float red_multiplier< + string label = "Multiplier"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; + +uniform float green_base_value< + string label = "Base Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; +uniform float green_red_input_value< + string label = "Red Input Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float green_green_input_value< + string label = "Green Input Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float green_blue_input_value< + string label = "Blue Input Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float green_alpha_input_value< + string label = "Alpha Input Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float green_multiplier< + string label = "Multiplier"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; + +uniform float blue_base_value< + string label = "Base Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; +uniform float blue_red_input_value< + string label = "Red Input Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float blue_green_input_value< + string label = "Green Input Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float blue_blue_input_value< + string label = "Blue Input Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float blue_alpha_input_value< + string label = "Alpha Input Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float blue_multiplier< + string label = "Multiplier"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; + +uniform float alpha_base_value< + string label = "Base Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; +uniform float alpha_red_input_value< + string label = "Red Input Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float alpha_green_input_value< + string label = "Green Input Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float alpha_blue_input_value< + string label = "Blue Input Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float alpha_alpha_input_value< + string label = "Alpha Input Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float alpha_multiplier< + string label = "Multiplier"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 input_color = input_source.Sample(textureSampler, v_in.uv); + float4 mask; + mask.r = (red_base_value + red_red_input_value * input_color.r + red_green_input_value * input_color.g + red_blue_input_value * input_color.b + red_alpha_input_value * input_color.a) * red_multiplier; + mask.g = (green_base_value + green_red_input_value * input_color.r + green_green_input_value * input_color.g + green_blue_input_value * input_color.b + green_alpha_input_value * input_color.a) * green_multiplier; + mask.b = (blue_base_value + blue_red_input_value * input_color.r + blue_green_input_value * input_color.g + blue_blue_input_value * input_color.b + blue_alpha_input_value * input_color.a) * blue_multiplier; + mask.a = (alpha_base_value + alpha_red_input_value * input_color.r + alpha_green_input_value * input_color.g + alpha_blue_input_value * input_color.b + alpha_alpha_input_value * input_color.a) * alpha_multiplier; + float4 base = image.Sample(textureSampler, v_in.uv); + return base * mask; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSEdgeDetectionShader.ps1 b/Commands/Shaders/Get-OBSEdgeDetectionShader.ps1 new file mode 100644 index 000000000..6c9de569c --- /dev/null +++ b/Commands/Shaders/Get-OBSEdgeDetectionShader.ps1 @@ -0,0 +1,278 @@ +function Get-OBSEdgeDetectionShader { + +[Alias('Set-OBSEdgeDetectionShader','Add-OBSEdgeDetectionShader')] +param( +# Set the sensitivity of OBSEdgeDetectionShader +[ComponentModel.DefaultBindingProperty('sensitivity')] +[Single] +$Sensitivity, +# Set the invert_edge of OBSEdgeDetectionShader +[Alias('invert_edge')] +[ComponentModel.DefaultBindingProperty('invert_edge')] +[Management.Automation.SwitchParameter] +$InvertEdge, +# Set the edge_color of OBSEdgeDetectionShader +[Alias('edge_color')] +[ComponentModel.DefaultBindingProperty('edge_color')] +[String] +$EdgeColor, +# Set the edge_multiply of OBSEdgeDetectionShader +[Alias('edge_multiply')] +[ComponentModel.DefaultBindingProperty('edge_multiply')] +[Management.Automation.SwitchParameter] +$EdgeMultiply, +# Set the non_edge_color of OBSEdgeDetectionShader +[Alias('non_edge_color')] +[ComponentModel.DefaultBindingProperty('non_edge_color')] +[String] +$NonEdgeColor, +# Set the non_edge_multiply of OBSEdgeDetectionShader +[Alias('non_edge_multiply')] +[ComponentModel.DefaultBindingProperty('non_edge_multiply')] +[Management.Automation.SwitchParameter] +$NonEdgeMultiply, +# Set the alpha_channel of OBSEdgeDetectionShader +[Alias('alpha_channel')] +[ComponentModel.DefaultBindingProperty('alpha_channel')] +[Management.Automation.SwitchParameter] +$AlphaChannel, +# Set the alpha_level of OBSEdgeDetectionShader +[Alias('alpha_level')] +[ComponentModel.DefaultBindingProperty('alpha_level')] +[Single] +$AlphaLevel, +# Set the alpha_invert of OBSEdgeDetectionShader +[Alias('alpha_invert')] +[ComponentModel.DefaultBindingProperty('alpha_invert')] +[Management.Automation.SwitchParameter] +$AlphaInvert, +# Set the rand_f of OBSEdgeDetectionShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the notes of OBSEdgeDetectionShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'edge_detection' +$ShaderNoun = 'OBSEdgeDetectionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Edge Detection for OBS Studio +// originally from Andersama (https://github.com/Andersama) +// Modified and improved my Charles Fettinger (https://github.com/Oncorporation) 1/2019 +//Converted to OpenGL by Q-mii & Exeldro March 8, 2022 +uniform float sensitivity< + string label = "Sensitivity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.05; +uniform bool invert_edge; +uniform float4 edge_color = {1.0,1.0,1.0,1.0}; +uniform bool edge_multiply; +uniform float4 non_edge_color = {0.0,0.0,0.0,0.0}; +uniform bool non_edge_multiply; +uniform bool alpha_channel; +uniform float alpha_level< + string label = "Alpha level"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 100.0; +uniform bool alpha_invert; +uniform float rand_f; + +uniform string notes< + string widget_type = "info"; +> = "''sensitivity'' - 0.01 is max and will create the most edges. Increasing this value decreases the number of edges detected. ''edge non edge color'' - the color to recolor vs the original image. ''edge or non edge multiply'' - multiplies the color against the original color giving it a tint instead of replacing the color. White represents no tint. ''invert edge'' - flips the sensativity and is great for testing and fine tuning. ''alpha channel'' - use an alpha channel to replace original color with transparency. ''alpha_level'' - transparency amount modifier where 1.0 = base luminance (recommend 0.00 - 2.00). ''alpha_invert'' - flip what is transparent from darks (default) to lights"; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + + float s = 3; + float hstep = uv_pixel_interval.x; + float vstep = uv_pixel_interval.y; + + float offsetx = (hstep * s) / 2.0; + float offsety = (vstep * s) / 2.0; + + float4 lum = float4(0.30, 0.59, 0.11, 1 ); + float samples[9]; + + int index = 0; + for(int i = 0; i < s; i++){ + for(int j = 0; j < s; j++){ + samples[index] = dot(image.Sample(textureSampler, float2(v_in.uv.x + (i * hstep) - offsetx, v_in.uv.y + (j * vstep) - offsety )), lum); + index++; + } + } + + float vert = samples[2] + samples[8] + (2 * samples[5]) - samples[0] - (2 * samples[3]) - samples[6]; + float hori = samples[6] + (2 * samples[7]) + samples[8] - samples[0] - (2 * samples[1]) - samples[2]; + float4 col; + + float o = ((vert * vert) + (hori * hori)); + bool isEdge = o > sensitivity; + if(invert_edge){ + isEdge = !isEdge; + } + if(isEdge) { + col = edge_color; + if(edge_multiply){ + col *= c; + } + } else { + col = non_edge_color; + if(non_edge_multiply){ + col *= c; + } + } + + if (alpha_invert) { + lum = 1.0 - lum; + } + + if(alpha_channel){ + if (edge_multiply && isEdge) { + return clamp(lerp(c, col, alpha_level), 0.0, 1.0); + } + else { + // use max instead of multiply + return clamp(lerp(c, float4(max(c.r, col.r), max(c.g, col.g), max(c.b, col.b), 1.0), alpha_level), 0.0, 1.0); + } + } else { + // col.a = col.a * alpha_level; + return col; + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSEmbersShader.ps1 b/Commands/Shaders/Get-OBSEmbersShader.ps1 new file mode 100644 index 000000000..e086b546c --- /dev/null +++ b/Commands/Shaders/Get-OBSEmbersShader.ps1 @@ -0,0 +1,599 @@ +function Get-OBSEmbersShader { + +[Alias('Set-OBSEmbersShader','Add-OBSEmbersShader')] +param( +# Set the ViewProj of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSEmbersShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSEmbersShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSEmbersShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_size of OBSEmbersShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the uv_pixel_interval of OBSEmbersShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSEmbersShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSEmbersShader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSEmbersShader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSEmbersShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the notes of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the Animation_Speed of OBSEmbersShader +[Alias('Animation_Speed')] +[ComponentModel.DefaultBindingProperty('Animation_Speed')] +[Single] +$AnimationSpeed, +# Set the Movement_Direction_Horizontal of OBSEmbersShader +[Alias('Movement_Direction_Horizontal')] +[ComponentModel.DefaultBindingProperty('Movement_Direction_Horizontal')] +[Single] +$MovementDirectionHorizontal, +# Set the Movement_Direction_Vertical of OBSEmbersShader +[Alias('Movement_Direction_Vertical')] +[ComponentModel.DefaultBindingProperty('Movement_Direction_Vertical')] +[Single] +$MovementDirectionVertical, +# Set the Movement_Speed_Percent of OBSEmbersShader +[Alias('Movement_Speed_Percent')] +[ComponentModel.DefaultBindingProperty('Movement_Speed_Percent')] +[Int32] +$MovementSpeedPercent, +# Set the Layers_Count of OBSEmbersShader +[Alias('Layers_Count')] +[ComponentModel.DefaultBindingProperty('Layers_Count')] +[Int32] +$LayersCount, +# Set the lumaMin of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMinSmooth of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the Alpha_Percentage of OBSEmbersShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Apply_To_Alpha_Layer of OBSEmbersShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'embers' +$ShaderNoun = 'OBSEmbersShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Embers effect by Charles Fettinger for obs-shaderfilter plugin 8/2020 v.1 +// https://github.com/Oncorporation/obs-shaderfilter +// https://www.shadertoy.com/view/wl2Gzc - coverted from and updated + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_size; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; +uniform string notes< + string widget_type = "info"; +> = "luma is applied with Apply to Alpha Layer. Movement Speed and Direction can be negatives"; + +#ifndef OPENGL +#define mat2 float2x2 +#define fract frac +#define mix lerp +#endif + +sampler_state textureSampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +uniform float Animation_Speed < + string label = "Animation Speed"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; + float scale = 1.; +> = 1.5; + +uniform float Movement_Direction_Horizontal< + string label = "Movement Direction Horizontal"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 1.0; +> = 5.0; +uniform float Movement_Direction_Vertical< + string label = "Movement Direction Vertical"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 1.0; +> = 10.0; + +uniform int Movement_Speed_Percent< + string label = "Movement Speed Percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 5; + +uniform int Layers_Count < + string label = "Layers"; + string widget_type = "slider"; + int minimum = 1.0; + int maximum = 100.0; + int step = 1; +> = 15; +/* ps start +*/ + + +uniform float lumaMin< + string label = "Luma Min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.01; +uniform float lumaMinSmooth< + string label = "Luma Min Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.01; +uniform float Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; +uniform bool Apply_To_Alpha_Layer = true; + +#define PI 3.1415927 +#define TWO_PI 6.283185 + +#define PARTICLE_SIZE 0.009 + +#define PARTICLE_SCALE float2(0.5, 1.6) +#define PARTICLE_SCALE_VAR float2(0.25, 0.2) + +#define PARTICLE_BLOOM_SCALE float2(0.5, 0.8) +#define PARTICLE_BLOOM_SCALE_VAR float2(0.3, 0.1) + +#define SPARK_COLOR float3(1.0, 0.4, 0.05) * 1.5 +#define BLOOM_COLOR float3(1.0, 0.4, 0.05) * 0.8 +#define SMOKE_COLOR float3(1.0, 0.43, 0.1) * 0.8 + +#define SIZE_MOD 1.05 +#define ALPHA_MOD 0.9 +#define Movement_Direction float2(Movement_Direction_Horizontal, Movement_Direction_Vertical) +#define Movement_Speed Movement_Speed_Percent * 0.01 +#define UV float2(fragCoord.xy / uv_size) + +float hash1_2(float2 x) +{ + return fract(sin(dot(x, float2(52.127, 61.2871))) * 521.582); +} + +float2 hash2_2(float2 x) +{ + mat2 m = mat2(20.52, 24.1994, 70.291, 80.171); + float2 y = mul(x, m); + return fract(sin(y) * 492.194); +} + +//Simple interpolated noise +float2 noise2_2(float2 uv) +{ + //float2 f = fract(uv); + float2 f = smoothstep(0.0, 1.0, fract(uv)); + + float2 uv00 = floor(uv); + float2 uv01 = uv00 + float2(0, 1); + float2 uv10 = uv00 + float2(1, 0); + float2 uv11 = uv00 + 1.0; + float2 v00 = hash2_2(uv00); + float2 v01 = hash2_2(uv01); + float2 v10 = hash2_2(uv10); + float2 v11 = hash2_2(uv11); + + float2 v0 = mix(v00, v01, f.y); + float2 v1 = mix(v10, v11, f.y); + float2 v = mix(v0, v1, f.x); + + return v; +} + +//Simple interpolated noise +float noise1_2(float2 uv) +{ + float2 f = fract(uv); + + float2 uv00 = floor(uv); + float2 uv01 = uv00 + float2(0, 1); + float2 uv10 = uv00 + float2(1, 0); + float2 uv11 = uv00 + 1.0; + + float v00 = hash1_2(uv00); + float v01 = hash1_2(uv01); + float v10 = hash1_2(uv10); + float v11 = hash1_2(uv11); + + float v0 = mix(v00, v01, f.y); + float v1 = mix(v10, v11, f.y); + float v = mix(v0, v1, f.x); + + return v; +} + +float layeredNoise1_2(float2 uv, float sizeMod, float alphaMod, int layers, float animation) +{ + float noise = 0.0; + float alpha = 1.0; + float size = 1.0; + float2 offset; + for (int i = 0; i < layers; i++) + { + offset += hash2_2(float2(alpha, size)) * 10.0; + + //Adding noise with movement + noise += noise1_2(uv * size + elapsed_time * animation * 8.0 * Movement_Direction * Movement_Speed + offset) * alpha; + alpha *= alphaMod; + size *= sizeMod; + } + + noise *= (1.0 - alphaMod) / (1.0 - pow(alphaMod, float(layers))); + return noise; +} + +//Rotates point around 0,0 +float2 rotate(float2 vpoint, float deg) +{ + float s = sin(deg); + float c = cos(deg); + mat2 m = mat2(s, c, -c, s); + return mul(vpoint, m); +} + +//Cell center from point on the grid +float2 voronoiPointFromRoot(float2 root, float deg) +{ + float2 vpoint = hash2_2(root) - 0.5; + float s = sin(deg); + float c = cos(deg); + mat2 m = mat2(s, c, -c, s); + vpoint = mul(vpoint, m) * 0.66; + vpoint += root + 0.5; + return vpoint; +} + +//Voronoi cell point rotation degrees +float degFromRootUV(in float2 uv) +{ + return elapsed_time * Animation_Speed * (hash1_2(uv) - 0.5) * 2.0; +} + +float2 randomAround2_2(in float2 vpoint, in float2 range, in float2 uv) +{ + return vpoint + (hash2_2(uv) - 0.5) * range; +} + + +float3 fireParticles(in float2 uv, in float2 originalUV) +{ + float3 particles = float3(0.0, 0.0, 0.0); + float2 rootUV = floor(uv); + float deg = degFromRootUV(rootUV); + float2 pointUV = voronoiPointFromRoot(rootUV, deg); + float dist = 2.0; + float distBloom = 0.0; + + //UV manipulation for the faster particle movement + float2 tempUV = uv + (noise2_2(uv * 2.0) - 0.5) * 0.1; + tempUV += -(noise2_2(uv * 3.0 + elapsed_time) - 0.5) * 0.07; + + //Sparks sdf + dist = length(rotate(tempUV - pointUV, 0.7) * randomAround2_2(PARTICLE_SCALE, PARTICLE_SCALE_VAR, rootUV)); + + //Bloom sdf + distBloom = length(rotate(tempUV - pointUV, 0.7) * randomAround2_2(PARTICLE_BLOOM_SCALE, PARTICLE_BLOOM_SCALE_VAR, rootUV)); + + //Add sparks + particles += (1.0 - smoothstep(PARTICLE_SIZE * 0.6, PARTICLE_SIZE * 3.0, dist)) * SPARK_COLOR; + + //Add bloom + particles += pow((1.0 - smoothstep(0.0, PARTICLE_SIZE * 6.0, distBloom)) * 1.0, 3.0) * BLOOM_COLOR; + + //Upper disappear curve randomization + float border = (hash1_2(rootUV) - 0.5) * 2.0; + float disappear = 1.0 - smoothstep(border, border + 0.5, originalUV.y); + + //Lower appear curve randomization + border = (hash1_2(rootUV + 0.214) - 1.8) * 0.7; + float appear = smoothstep(border, border + 0.4, originalUV.y); + + return particles * disappear * appear; +} + + +//Layering particles to imitate 3D view +float3 layeredParticles(in float2 uv, in float sizeMod, in float alphaMod, in int layers, in float smoke) +{ + float3 particles = float3(0.0, 0.0, 0.0); + float size = 1.0; + float alpha = 1.0; + float2 offset = float2(0.0, 0.0); + float2 noiseOffset; + float2 bokehUV; + + for (int i = 0; i < layers; i++) + { + //Particle noise movement + noiseOffset = (noise2_2(uv * size * 2.0 + 0.5) - 0.5) * 0.15; + + //UV with applied movement + bokehUV = (uv * size + elapsed_time * Movement_Direction * Movement_Speed) + offset + noiseOffset; + + //Adding particles if there is more smoke, remove smaller particles + particles += fireParticles(bokehUV, uv) * alpha * (1.0 - smoothstep(0.0, 1.0, smoke) * (float(i) / float(layers))); + + //Moving uv origin to avoid generating the same particles + offset += hash2_2(float2(alpha, alpha)) * 10.0; + + alpha *= alphaMod; + size *= sizeMod; + } + + return particles; +} + + +void mainImage(out float4 fragColor, in float2 fragCoord) +{ + float2 uv = (2.0 * fragCoord - uv_size.xy) / uv_size.x; + float vignette = 1.0 - smoothstep(0.4, 1.4, length(uv + float2(0.0, 0.3))); + + uv *= 1.8; + float alpha = clamp(Alpha_Percentage * .01, 0, 1.0); + + float smokeIntensity = layeredNoise1_2(uv * 10.0 + elapsed_time * 4.0 * Movement_Direction * Movement_Speed, 1.7, 0.7, 6, 0.2); + smokeIntensity *= pow(1.0 - smoothstep(-1.0, 1.6, uv.y), 2.0); + float3 smoke = smokeIntensity * SMOKE_COLOR * 0.8 * vignette; + + //Cutting holes in smoke + smoke *= pow(layeredNoise1_2(uv * 4.0 + elapsed_time * 0.5 * Movement_Direction * Movement_Speed, 1.8, 0.5, 3, 0.2), + 2.0) * 1.5; + + float3 particles = layeredParticles(uv, SIZE_MOD, ALPHA_MOD, Layers_Count, smokeIntensity); + + float4 col = float4(particles + smoke + SMOKE_COLOR * 0.02, alpha); + col.rgb *= vignette; + col.rgb = smoothstep(-0.08, 1.0, col.rgb); + + if (Apply_To_Alpha_Layer) + { + float4 original_color = image.Sample(textureSampler, UV); + + float luma = dot(col.rgb, float3(0.299, 0.587, 0.114)); + float luma_min = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luma); + col.a = clamp(luma_min, 0.0, 1.0); + + col.rgb = lerp(original_color.rgb, col.rgb, alpha); //apply alpha slider + col = lerp(original_color, col, col.a); //remove black background color + } + + fragColor = col; +} + +/*ps end*/ + +struct VertFragData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertFragData VSDefault(VertFragData vtx) { + vtx.pos = mul(float4(vtx.pos.xyz, 1.0), ViewProj); + return vtx; +} + +float4 PSDefault(VertFragData vtx) : TARGET { + float4 col = float4(1., 1., 1., 1.); + mainImage(col, vtx.uv * uv_size); + return col; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vtx); + pixel_shader = PSDefault(vtx); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSEmbossColorShader.ps1 b/Commands/Shaders/Get-OBSEmbossColorShader.ps1 new file mode 100644 index 000000000..b58ea03b9 --- /dev/null +++ b/Commands/Shaders/Get-OBSEmbossColorShader.ps1 @@ -0,0 +1,242 @@ +function Get-OBSEmbossColorShader { + +[Alias('Set-OBSEmbossColorShader','Add-OBSEmbossColorShader')] +param( +# Set the Angle_Steps of OBSEmbossColorShader +[Alias('Angle_Steps')] +[ComponentModel.DefaultBindingProperty('Angle_Steps')] +[Int32] +$AngleSteps, +# Set the Radius_Steps of OBSEmbossColorShader +[Alias('Radius_Steps')] +[ComponentModel.DefaultBindingProperty('Radius_Steps')] +[Int32] +$RadiusSteps, +# Set the ampFactor of OBSEmbossColorShader +[ComponentModel.DefaultBindingProperty('ampFactor')] +[Single] +$AmpFactor, +# Set the Up_Down_Percent of OBSEmbossColorShader +[Alias('Up_Down_Percent')] +[ComponentModel.DefaultBindingProperty('Up_Down_Percent')] +[Int32] +$UpDownPercent, +# Set the Apply_To_Alpha_Layer of OBSEmbossColorShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the notes of OBSEmbossColorShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'emboss_color' +$ShaderNoun = 'OBSEmbossColorShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Color Emboss shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int Angle_Steps< + string label = "Angle Steps"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 9; // +uniform int Radius_Steps< + string label = "Radius Steps"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 20; + int step = 1; +> = 4; // +uniform float ampFactor< + string label = "amp Factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 12.0; +uniform int Up_Down_Percent< + string label = "Up Down Percent"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +> = 0; +uniform bool Apply_To_Alpha_Layer = true; +uniform string notes< + string widget_type = "info"; +> = "Steps limited in range from 0 to 20. Edit shader to remove limits at your own risk."; + +float4 mainImage(VertData v_in) : TARGET +{ + float radiusSteps = clamp(Radius_Steps, 0, 20); + float angleSteps = clamp(Angle_Steps, 1, 20); + float PI = 3.1415926535897932384626433832795;//acos(-1); + int totalSteps = int(radiusSteps * angleSteps); + float minRadius = (1 * uv_pixel_interval.y); + float maxRadius = (6 * uv_pixel_interval.y); + + float angleDelta = ((2 * PI) / angleSteps); + float radiusDelta = ((maxRadius - minRadius) / radiusSteps); + float embossAngle = 0.25 * PI; + + float4 c0 = image.Sample(textureSampler, v_in.uv); + float4 origColor = c0; + float4 accumulatedColor = float4(0,0,0,0); + + if (c0.a > 0.0 || Apply_To_Alpha_Layer == false) + { + for (int radiusStep = 0; radiusStep < radiusSteps; radiusStep++) { + float radius = minRadius + radiusStep * radiusDelta; + + for (float angle = 0; angle < (2 * PI); angle += angleDelta) { + float2 currentCoord; + + float xDiff = radius * cos(angle); + float yDiff = radius * sin(angle); + + currentCoord = v_in.uv + float2(xDiff, yDiff); + float4 currentColor = image.Sample(textureSampler, currentCoord); + float4 colorDiff = abs(c0 - currentColor); + float currentFraction = ((radiusSteps + 1 - radiusStep)) / (radiusSteps + 1); + accumulatedColor += currentFraction * colorDiff / totalSteps * sign(angle - PI);; + + } + } + accumulatedColor *= ampFactor; + + c0 = lerp(c0 + accumulatedColor, c0 - accumulatedColor, (Up_Down_Percent * 0.01)); + } + //return c0 + accumulatedColor; // down; + //return c0 - accumulatedColor; // up + return c0; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSEmbossShader.ps1 b/Commands/Shaders/Get-OBSEmbossShader.ps1 new file mode 100644 index 000000000..7085c4023 --- /dev/null +++ b/Commands/Shaders/Get-OBSEmbossShader.ps1 @@ -0,0 +1,177 @@ +function Get-OBSEmbossShader { + +[Alias('Set-OBSEmbossShader','Add-OBSEmbossShader')] +param( +# Set the Use_Color of OBSEmbossShader +[Alias('Use_Color')] +[ComponentModel.DefaultBindingProperty('Use_Color')] +[Management.Automation.SwitchParameter] +$UseColor, +# Set the Apply_To_Alpha_Layer of OBSEmbossShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'emboss' +$ShaderNoun = 'OBSEmbossShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Spotlight By Charles Fettinger (https://github.com/Oncorporation) 4/2019 +//Converted to OpenGL by Q-mii & Exeldro March 8, 2022 +uniform bool Use_Color; +uniform bool Apply_To_Alpha_Layer = true; + +float4 mainImage(VertData v_in) : TARGET +{ + + float dx = 1 / uv_size.x; + float dy = 1 / uv_size.y; + + float4 c0 = image.Sample(textureSampler, v_in.uv); + if (c0.a > 0.0 || Apply_To_Alpha_Layer == false) + { + float4 c1 = image.Sample(textureSampler, v_in.uv + float2(-dx, -dy)); + float4 c2 = image.Sample(textureSampler, v_in.uv + float2(0, -dy)); + float4 c4 = image.Sample(textureSampler, v_in.uv + float2(-dx, 0)); + float4 c6 = image.Sample(textureSampler, v_in.uv + float2(dx, 0)); + float4 c8 = image.Sample(textureSampler, v_in.uv + float2(0, dy)); + float4 c9 = image.Sample(textureSampler, v_in.uv + float2(dx, dy)); + + c0 = (-c1 - c2 - c4 + c6 + c8 + c9); + float c = (c0.r + c0.g + c0.b) / 3 + 0.5; + c0 = float4(c,c,c,c); + + if (Use_Color) + { + float4 rgba = image.Sample(textureSampler, v_in.uv); + return (0.5 * rgba) + c0; + } + } + return c0; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSExeldroBentCameraShader.ps1 b/Commands/Shaders/Get-OBSExeldroBentCameraShader.ps1 new file mode 100644 index 000000000..fa6c73c00 --- /dev/null +++ b/Commands/Shaders/Get-OBSExeldroBentCameraShader.ps1 @@ -0,0 +1,300 @@ +function Get-OBSExeldroBentCameraShader { + +[Alias('Set-OBSExeldroBentCameraShader','Add-OBSExeldroBentCameraShader')] +param( +# Set the left_side_width of OBSExeldroBentCameraShader +[Alias('left_side_width')] +[ComponentModel.DefaultBindingProperty('left_side_width')] +[Single] +$LeftSideWidth, +# Set the left_side_size of OBSExeldroBentCameraShader +[Alias('left_side_size')] +[ComponentModel.DefaultBindingProperty('left_side_size')] +[Single] +$LeftSideSize, +# Set the left_side_shadow of OBSExeldroBentCameraShader +[Alias('left_side_shadow')] +[ComponentModel.DefaultBindingProperty('left_side_shadow')] +[Single] +$LeftSideShadow, +# Set the left_flip_width of OBSExeldroBentCameraShader +[Alias('left_flip_width')] +[ComponentModel.DefaultBindingProperty('left_flip_width')] +[Single] +$LeftFlipWidth, +# Set the left_flip_shadow of OBSExeldroBentCameraShader +[Alias('left_flip_shadow')] +[ComponentModel.DefaultBindingProperty('left_flip_shadow')] +[Single] +$LeftFlipShadow, +# Set the right_side_width of OBSExeldroBentCameraShader +[Alias('right_side_width')] +[ComponentModel.DefaultBindingProperty('right_side_width')] +[Single] +$RightSideWidth, +# Set the right_side_size of OBSExeldroBentCameraShader +[Alias('right_side_size')] +[ComponentModel.DefaultBindingProperty('right_side_size')] +[Single] +$RightSideSize, +# Set the right_side_shadow of OBSExeldroBentCameraShader +[Alias('right_side_shadow')] +[ComponentModel.DefaultBindingProperty('right_side_shadow')] +[Single] +$RightSideShadow, +# Set the right_flip_width of OBSExeldroBentCameraShader +[Alias('right_flip_width')] +[ComponentModel.DefaultBindingProperty('right_flip_width')] +[Single] +$RightFlipWidth, +# Set the right_flip_shadow of OBSExeldroBentCameraShader +[Alias('right_flip_shadow')] +[ComponentModel.DefaultBindingProperty('right_flip_shadow')] +[Single] +$RightFlipShadow, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'exeldro-bent-camera' +$ShaderNoun = 'OBSExeldroBentCameraShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float left_side_width< + string label = "Left side width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; +uniform float left_side_size< + string label = "Left side size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform float left_side_shadow< + string label = "Left side shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.8; +uniform float left_flip_width< + string label = "Left flip width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.05; +uniform float left_flip_shadow< + string label = "Left flip shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; + +uniform float right_side_width< + string label = "Right side width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; +uniform float right_side_size< + string label = "Right side size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform float right_side_shadow< + string label = "Right side shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.8; +uniform float right_flip_width< + string label = "Right flip width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.05; +uniform float right_flip_shadow< + string label = "Right flip shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos=v_in.uv; + float shadow = 1.0; + if(pos.x < left_side_width){ + pos.y -= 0.5; + pos.y /= left_side_size; + pos.y += 0.5; + pos.x -= left_side_width + left_flip_width / 2.0; + pos.x /= left_side_size; + pos.x += left_side_width + left_flip_width / 2.0; + shadow = left_side_shadow; + }else if(pos.x < left_side_width + left_flip_width){ + float factor = 1.0 - ((left_side_width + left_flip_width)-pos.x)/left_flip_width*(1.0 - left_side_size); + pos.y -= 0.5; + pos.y /= factor; + pos.y += 0.5; + pos.x -= left_side_width + left_flip_width; + pos.x /= factor; + pos.x += left_side_width + left_flip_width; + shadow = left_flip_shadow; + } + + if(1.0 - pos.x < right_side_width){ + pos.y -= 0.5; + pos.y /= right_side_size; + pos.y += 0.5; + pos.x -= 1.0 - (right_side_width + right_flip_width / 2.0); + pos.x /= right_side_size; + pos.x += 1.0 - (right_side_width + right_flip_width / 2.0); + shadow = right_side_shadow; + }else if(1.0 - pos.x < right_side_width + right_flip_width){ + float factor = 1.0 - ((right_side_width + right_flip_width) - (1.0 - pos.x))/right_flip_width*(1.0 - right_side_size); + pos.y -= 0.5; + pos.y /= factor; + pos.y += 0.5; + pos.x -= 1.0 - (right_side_width + right_flip_width); + pos.x /= factor; + pos.x += 1.0 -(right_side_width + right_flip_width); + shadow = right_flip_shadow; + } + float4 p_color = image.Sample(textureSampler, pos); + p_color.rgb *= shadow; + return p_color; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFadeTransitionShader.ps1 b/Commands/Shaders/Get-OBSFadeTransitionShader.ps1 new file mode 100644 index 000000000..172113ec9 --- /dev/null +++ b/Commands/Shaders/Get-OBSFadeTransitionShader.ps1 @@ -0,0 +1,173 @@ +function Get-OBSFadeTransitionShader { + +[Alias('Set-OBSFadeTransitionShader','Add-OBSFadeTransitionShader')] +param( +# Set the image_a of OBSFadeTransitionShader +[Alias('image_a')] +[ComponentModel.DefaultBindingProperty('image_a')] +[String] +$ImageA, +# Set the image_b of OBSFadeTransitionShader +[Alias('image_b')] +[ComponentModel.DefaultBindingProperty('image_b')] +[String] +$ImageB, +# Set the transition_time of OBSFadeTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBSFadeTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fade-transition' +$ShaderNoun = 'OBSFadeTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d image_a; +uniform texture2d image_b; +uniform float transition_time< + string label = "Transittion Time"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform bool convert_linear = true; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 a_val = image_a.Sample(textureSampler, v_in.uv); + float4 b_val = image_b.Sample(textureSampler, v_in.uv); + float4 rgba = lerp(a_val, b_val, transition_time); + if(convert_linear) + rgba.rgb = srgb_nonlinear_to_linear(rgba.rgb); + return rgba; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFillColorGradientShader.ps1 b/Commands/Shaders/Get-OBSFillColorGradientShader.ps1 new file mode 100644 index 000000000..cd3c73129 --- /dev/null +++ b/Commands/Shaders/Get-OBSFillColorGradientShader.ps1 @@ -0,0 +1,230 @@ +function Get-OBSFillColorGradientShader { + +[Alias('Set-OBSFillColorGradientShader','Add-OBSFillColorGradientShader')] +param( +# Set the Fill of OBSFillColorGradientShader +[ComponentModel.DefaultBindingProperty('Fill')] +[Single] +$Fill, +# Set the Gradient_Width of OBSFillColorGradientShader +[Alias('Gradient_Width')] +[ComponentModel.DefaultBindingProperty('Gradient_Width')] +[Single] +$GradientWidth, +# Set the Gradient_Offset of OBSFillColorGradientShader +[Alias('Gradient_Offset')] +[ComponentModel.DefaultBindingProperty('Gradient_Offset')] +[Single] +$GradientOffset, +# Set the Fill_Direction of OBSFillColorGradientShader +[Alias('Fill_Direction')] +[ComponentModel.DefaultBindingProperty('Fill_Direction')] +[Int32] +$FillDirection, +# Set the Fill_Color of OBSFillColorGradientShader +[Alias('Fill_Color')] +[ComponentModel.DefaultBindingProperty('Fill_Color')] +[String] +$FillColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fill_color_gradient' +$ShaderNoun = 'OBSFillColorGradientShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float Fill< + string label = "Fill"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 1; + float step = 0.005; +> = 0.500; + +uniform float Gradient_Width< + string label = "Gradient Width"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 0.15; // Adjust the maximum value as needed + float step = 0.01; +> = 0.05; + +uniform float Gradient_Offset< + string label = "Gradient Offset"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 0.100; // Adjust the maximum value as needed + float step = 0.005; +> = 0.00; + +uniform int Fill_Direction< + string label = "Fill from:"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Left"; + int option_1_value = 1; + string option_1_label = "Right"; + int option_2_value = 2; + string option_2_label = "Bottom"; + int option_3_value = 3; + string option_3_label = "Top"; +> = 0; + +uniform float4 Fill_Color; + +float4 mainImage(VertData v_in) : TARGET +{ + float distanceToEdge = 0.0; + + // Calculate distance to the fill edge based on the selected direction + if (Fill_Direction == 0) + distanceToEdge = Fill - v_in.uv.x; + else if (Fill_Direction == 1) + distanceToEdge = v_in.uv.x - (1.0 - Fill); + else if (Fill_Direction == 2) + distanceToEdge = v_in.uv.y - (1.0 - Fill); + else if (Fill_Direction == 3) + distanceToEdge = Fill - v_in.uv.y; + + // Calculate the gradient factor based on the distance to the edge and the gradient width + float gradientOffset = (Fill == 0.0) ? 0.0 : (Fill == 1.0 ? 0.0 : Gradient_Offset); + float gradientWidth = (Fill == 0.0 || Fill == 1.0) ? 0.0 : Gradient_Width; + + // Adjust distanceToEdge by the Gradient_Offset + distanceToEdge += gradientOffset; + + // Normalize the distance to be between 0 and 1 + distanceToEdge = saturate(distanceToEdge); + + // float gradientWidth = Fill < 1.0 ? Gradient_Width : Gradient_Width * (1.0 - Fill); + // float gradientFactor = smoothstep(0.0, gradientWidth, distanceToEdge); + float gradientFactor = clamp(distanceToEdge / gradientWidth, 0.0, 1.0); + + // Blend between the fill color and the original image color using the gradient factor + float4 finalColor = lerp(image.Sample(textureSampler, v_in.uv), Fill_Color, gradientFactor); + + return finalColor; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFillColorLinearShader.ps1 b/Commands/Shaders/Get-OBSFillColorLinearShader.ps1 new file mode 100644 index 000000000..d2ec82d4a --- /dev/null +++ b/Commands/Shaders/Get-OBSFillColorLinearShader.ps1 @@ -0,0 +1,195 @@ +function Get-OBSFillColorLinearShader { + +[Alias('Set-OBSFillColorLinearShader','Add-OBSFillColorLinearShader')] +param( +# Set the Fill of OBSFillColorLinearShader +[ComponentModel.DefaultBindingProperty('Fill')] +[Single] +$Fill, +# Set the Fill_Direction of OBSFillColorLinearShader +[Alias('Fill_Direction')] +[ComponentModel.DefaultBindingProperty('Fill_Direction')] +[Int32] +$FillDirection, +# Set the Fill_Color of OBSFillColorLinearShader +[Alias('Fill_Color')] +[ComponentModel.DefaultBindingProperty('Fill_Color')] +[String] +$FillColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fill_color_linear' +$ShaderNoun = 'OBSFillColorLinearShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float Fill< + string label = "Fill"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 1; + float step = 0.005; +>; +uniform int Fill_Direction< + string label = "Fill from:"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Left"; + int option_1_value = 1; + string option_1_label = "Right"; + int option_2_value = 2; + string option_2_label = "Top"; + int option_3_value = 3; + string option_3_label = "Bottom"; +> = 0; +uniform float4 Fill_Color; + +float4 mainImage(VertData v_in) : TARGET +{ + bool is_inside_fill = true; + + // Check if the pixel is within the specified "fill width" on the left side + if(Fill_Direction == 0){ + is_inside_fill = v_in.uv.x > Fill; + } + if(Fill_Direction == 1) + { + is_inside_fill = v_in.uv.x < (1.0 - Fill); + } + if(Fill_Direction == 2) + { + is_inside_fill = v_in.uv.y > Fill; + } + if(Fill_Direction == 3) + { + is_inside_fill = v_in.uv.y < (1.0 - Fill); + } + + // Invert is_inside_fill + is_inside_fill = !is_inside_fill; + + // If inside the "fill," make the pixel selected colour; otherwise, use the original image color + return is_inside_fill ? Fill_Color : image.Sample(textureSampler, v_in.uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFillColorRadialDegreesShader.ps1 b/Commands/Shaders/Get-OBSFillColorRadialDegreesShader.ps1 new file mode 100644 index 000000000..0618bff40 --- /dev/null +++ b/Commands/Shaders/Get-OBSFillColorRadialDegreesShader.ps1 @@ -0,0 +1,249 @@ +function Get-OBSFillColorRadialDegreesShader { + +[Alias('Set-OBSFillColorRadialDegreesShader','Add-OBSFillColorRadialDegreesShader')] +param( +# Set the Fill_Direction of OBSFillColorRadialDegreesShader +[Alias('Fill_Direction')] +[ComponentModel.DefaultBindingProperty('Fill_Direction')] +[Int32] +$FillDirection, +# Set the Fill of OBSFillColorRadialDegreesShader +[ComponentModel.DefaultBindingProperty('Fill')] +[Single] +$Fill, +# Set the Start_Angle of OBSFillColorRadialDegreesShader +[Alias('Start_Angle')] +[ComponentModel.DefaultBindingProperty('Start_Angle')] +[Single] +$StartAngle, +# Set the Offset_X of OBSFillColorRadialDegreesShader +[Alias('Offset_X')] +[ComponentModel.DefaultBindingProperty('Offset_X')] +[Single] +$OffsetX, +# Set the Offset_Y of OBSFillColorRadialDegreesShader +[Alias('Offset_Y')] +[ComponentModel.DefaultBindingProperty('Offset_Y')] +[Single] +$OffsetY, +# Set the Fill_Color of OBSFillColorRadialDegreesShader +[Alias('Fill_Color')] +[ComponentModel.DefaultBindingProperty('Fill_Color')] +[String] +$FillColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fill_color_radial_degrees' +$ShaderNoun = 'OBSFillColorRadialDegreesShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.141592653589793238 + +uniform int Fill_Direction< + string label = "Fill Direction"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Clockwise"; + int option_1_value = 1; + string option_1_label = "Counter-Clockwise"; +> = 0; + +uniform float Fill< + string label = "Fill"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 360; + float step = 1.00000; +>; + +uniform float Start_Angle< + string label = "Start Angle"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 720; + float step = 1.00000; +> = 360.0; + +uniform float Offset_X< + string label = "Offset X"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float Offset_Y< + string label = "Offset Y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float4 Fill_Color; + +float4 mainImage(VertData v_in) : TARGET +{ + // Calculate the center of the screen based on aspect ratio + float aspectRatioX = uv_size.x / uv_size.y; + float2 center = float2(0.5 * aspectRatioX + Offset_X, 0.5 + Offset_Y); + + // Normalize the UV coordinates based on aspect ratio + float2 normalizedUV = v_in.uv * float2(aspectRatioX, 1.0); + + // Calculate the direction vector from the center to the current pixel + float2 dir = normalizedUV - center; + + // Calculate the angle in radians + float angle = atan2(dir.y, dir.x); + + // Convert angle from radians to degrees + angle = degrees(angle); + + // Offset the angle to start from the specified starting angle + angle += Start_Angle + 90.0; // Subtract 90 degrees to start at 12 o''clock + if (angle >= 360.0) + angle -= 360.0; + + // Adjust the angle based on the selected fill direction + if (Fill_Direction == 1) { + // Counter-clockwise fill + angle = 360.0 - angle; + } + + // Ensure angle is within [0, 360] range + if (angle < 0.0) + angle += 360.0; + else if (angle >= 360.0) + angle -= 360.0; + + // Check if the angle is within the specified "fill width" + bool is_inside_fill = angle < Fill; + + // If inside the "fill," make the pixel selected color; otherwise, use the original image color + return is_inside_fill ? Fill_Color : image.Sample(textureSampler, v_in.uv); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFillColorRadialPercentageShader.ps1 b/Commands/Shaders/Get-OBSFillColorRadialPercentageShader.ps1 new file mode 100644 index 000000000..2b0ca29ab --- /dev/null +++ b/Commands/Shaders/Get-OBSFillColorRadialPercentageShader.ps1 @@ -0,0 +1,252 @@ +function Get-OBSFillColorRadialPercentageShader { + +[Alias('Set-OBSFillColorRadialPercentageShader','Add-OBSFillColorRadialPercentageShader')] +param( +# Set the Fill_Direction of OBSFillColorRadialPercentageShader +[Alias('Fill_Direction')] +[ComponentModel.DefaultBindingProperty('Fill_Direction')] +[Int32] +$FillDirection, +# Set the Fill of OBSFillColorRadialPercentageShader +[ComponentModel.DefaultBindingProperty('Fill')] +[Single] +$Fill, +# Set the Start_Angle of OBSFillColorRadialPercentageShader +[Alias('Start_Angle')] +[ComponentModel.DefaultBindingProperty('Start_Angle')] +[Single] +$StartAngle, +# Set the Offset_X of OBSFillColorRadialPercentageShader +[Alias('Offset_X')] +[ComponentModel.DefaultBindingProperty('Offset_X')] +[Single] +$OffsetX, +# Set the Offset_Y of OBSFillColorRadialPercentageShader +[Alias('Offset_Y')] +[ComponentModel.DefaultBindingProperty('Offset_Y')] +[Single] +$OffsetY, +# Set the Fill_Color of OBSFillColorRadialPercentageShader +[Alias('Fill_Color')] +[ComponentModel.DefaultBindingProperty('Fill_Color')] +[String] +$FillColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fill_color_radial_percentage' +$ShaderNoun = 'OBSFillColorRadialPercentageShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.141592653589793238 + +uniform int Fill_Direction< + string label = "Fill Direction"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Clockwise"; + int option_1_value = 1; + string option_1_label = "Counter-Clockwise"; +> = 0; + +uniform float Fill< + string label = "Fill"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.00005; +> = 0.0; + +uniform float Start_Angle< + string label = "Start Angle"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 720; + float step = 1.00000; +> = 360.0; + +uniform float Offset_X< + string label = "Offset X"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float Offset_Y< + string label = "Offset Y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float4 Fill_Color; + +float4 mainImage(VertData v_in) : TARGET +{ + // Calculate the center of the screen based on aspect ratio + float aspectRatioX = uv_size.x / uv_size.y; + float2 center = float2(0.5 * aspectRatioX + Offset_X, 0.5 + Offset_Y); + + // Normalize the UV coordinates based on aspect ratio + float2 normalizedUV = v_in.uv * float2(aspectRatioX, 1.0); + + // Calculate the direction vector from the center to the current pixel + float2 dir = normalizedUV - center; + + // Calculate the angle in radians + float angle = atan2(dir.y, dir.x); + + // Convert angle from radians to degrees + angle = degrees(angle); + + // Offset the angle to start from the specified starting angle + angle += Start_Angle + 90.0; // Subtract 90 degrees to start at 12 o''clock + if (angle >= 360.0) + angle -= 360.0; + + // Adjust the angle based on the selected fill direction + if (Fill_Direction == 1) { + // Counter-clockwise fill + angle = 360.0 - angle; + } + + // Ensure angle is within [0, 360] range + if (angle < 0.0) + angle += 360.0; + else if (angle >= 360.0) + angle -= 360.0; + + // Calculate the percentage of the angle + float anglePercentage = angle / 360.0; + + // Check if the angle percentage is within the specified "fill percentage" + bool is_inside_fill = anglePercentage < Fill; + + // If inside the "fill," make the pixel selected color; otherwise, use the original image color + return is_inside_fill ? Fill_Color : image.Sample(textureSampler, v_in.uv); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFilterTemplateShader.ps1 b/Commands/Shaders/Get-OBSFilterTemplateShader.ps1 new file mode 100644 index 000000000..5f7123fe2 --- /dev/null +++ b/Commands/Shaders/Get-OBSFilterTemplateShader.ps1 @@ -0,0 +1,259 @@ +function Get-OBSFilterTemplateShader { + +[Alias('Set-OBSFilterTemplateShader','Add-OBSFilterTemplateShader')] +param( +# Set the ViewProj of OBSFilterTemplateShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSFilterTemplateShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSFilterTemplateShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSFilterTemplateShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSFilterTemplateShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSFilterTemplateShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSFilterTemplateShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSFilterTemplateShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSFilterTemplateShader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSFilterTemplateShader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSFilterTemplateShader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSFilterTemplateShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the notes of OBSFilterTemplateShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'filter_template' +$ShaderNoun = 'OBSFilterTemplateShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//My shader modified by Me for use with obs-shaderfilter month/year v.02 + +//Section to converting GLSL to HLSL - can delete if unneeded +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp +#define iTime float +#define iTime elapsed_time +#define iResolution float4(uv_size,uv_pixel_interval) + +/* +**Shaders have these variables pre loaded by the plugin** +**this section can be deleted** + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; +*/ +uniform string notes< + string widget_type = "info"; +> = "add notes here"; + + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +/* +**Shaders use the built in Draw technique** +**this section can be deleted** + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} +*/ + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFire3Shader.ps1 b/Commands/Shaders/Get-OBSFire3Shader.ps1 new file mode 100644 index 000000000..75f579613 --- /dev/null +++ b/Commands/Shaders/Get-OBSFire3Shader.ps1 @@ -0,0 +1,699 @@ +function Get-OBSFire3Shader { + +[Alias('Set-OBSFire3Shader','Add-OBSFire3Shader')] +param( +# Set the ViewProj of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSFire3Shader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSFire3Shader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSFire3Shader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSFire3Shader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSFire3Shader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSFire3Shader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSFire3Shader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSFire3Shader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSFire3Shader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the Movement_Direction_Horizontal of OBSFire3Shader +[Alias('Movement_Direction_Horizontal')] +[ComponentModel.DefaultBindingProperty('Movement_Direction_Horizontal')] +[Single] +$MovementDirectionHorizontal, +# Set the Movement_Direction_Vertical of OBSFire3Shader +[Alias('Movement_Direction_Vertical')] +[ComponentModel.DefaultBindingProperty('Movement_Direction_Vertical')] +[Single] +$MovementDirectionVertical, +# Set the Alpha_Percentage of OBSFire3Shader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Int32] +$AlphaPercentage, +# Set the Speed of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('Speed')] +[Int32] +$Speed, +# Set the Invert of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('Invert')] +[Management.Automation.SwitchParameter] +$Invert, +# Set the lumaMin of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMinSmooth of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the Apply_To_Image of OBSFire3Shader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSFire3Shader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Color_To_Replace of OBSFire3Shader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Apply_To_Specific_Color of OBSFire3Shader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Full_Width of OBSFire3Shader +[Alias('Full_Width')] +[ComponentModel.DefaultBindingProperty('Full_Width')] +[Management.Automation.SwitchParameter] +$FullWidth, +# Set the Flame_Size of OBSFire3Shader +[Alias('Flame_Size')] +[ComponentModel.DefaultBindingProperty('Flame_Size')] +[Single] +$FlameSize, +# Set the Spark_Grid_Height of OBSFire3Shader +[Alias('Spark_Grid_Height')] +[ComponentModel.DefaultBindingProperty('Spark_Grid_Height')] +[Single] +$SparkGridHeight, +# Set the Flame_Modifier of OBSFire3Shader +[Alias('Flame_Modifier')] +[ComponentModel.DefaultBindingProperty('Flame_Modifier')] +[Single] +$FlameModifier, +# Set the Flame_Tongue_Size of OBSFire3Shader +[Alias('Flame_Tongue_Size')] +[ComponentModel.DefaultBindingProperty('Flame_Tongue_Size')] +[Single] +$FlameTongueSize, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fire-3' +$ShaderNoun = 'OBSFire3Shader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//My effect modified by Me for use with obs-shaderfilter month/year v.02 +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +//Section to converting GLSL to HLSL - can delete +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp + + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; + +uniform float Movement_Direction_Horizontal< + string label = "Movement Direction Horizontal"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float Movement_Direction_Vertical< + string label = "Movement Direction Vertical"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; + +#define iTime elapsed_time +#define iResolution float4(uv_size,uv_pixel_interval) +#define Movement_Direction float2(Movement_Direction_Horizontal, Movement_Direction_Vertical) + +uniform int Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 90; +uniform int Speed< + string label = "Speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 80; +uniform bool Invert = false; +uniform float lumaMin< + string label = "Luma Min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.01; +uniform float lumaMinSmooth< + string label = "Luma Min Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.04; +uniform bool Apply_To_Image = true; +uniform bool Replace_Image_Color = true; +uniform float4 Color_To_Replace; +uniform bool Apply_To_Specific_Color = false; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + float2 uv = v_in.uv; + if(Invert) + uv = 1.0 - v_in.uv; + vert_out.uv = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +int2 iMouse() +{ + return int2(Movement_Direction.x * uv_size.x, Movement_Direction.y * uv_size.y); +} + + +float mod(float x, float y) +{ + return x - y * floor(x / y); +} + +float2 mod2(float2 x, float2 y) +{ + return x - y * floor(x / y); +} + +/*ps start*/ +#define PI 3.1415926535897932384626433832795 +uniform bool Full_Width = false; + +uniform float Flame_Size< + string label = "Flame Size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; + +uniform float Spark_Grid_Height< + string label = "Spark Grid Size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; + +uniform float Flame_Modifier< + string label = "Flame Modifier"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float Flame_Tongue_Size< + string label = "Flame Tongue Size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 8.5; + +// +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : ijm +// Lastmod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// + +vec3 mod2893(vec3 x) +{ + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 mod289(vec4 x) +{ + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 permute(vec4 x) +{ + return mod289(((x * 34.0) + 1.0) * x); +} + +vec4 taylorInvSqrt(vec4 r) +{ + return 1.79284291400159 - 0.85373472095314 * r; +} + +float snoise(vec3 v) +{ + const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0); + const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + +// First corner + vec3 i = floor(v + dot(v, C.yyy)); + vec3 x0 = v - i + dot(i, C.xxx); + +// Other corners + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min(g.xyz, l.zxy); + vec3 i2 = max(g.xyz, l.zxy); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + vec3 x1 = x0 - i1 + C.xxx; + vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + +// Permutations + i = mod2893(i); + vec4 p = permute(permute(permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0)) + + i.y + vec4(0.0, i1.y, i2.y, 1.0)) + + i.x + vec4(0.0, i1.x, i2.x, 1.0)); + +// Gradients: 7x7 points over a square, mapped onto an octahedron. +// The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857; // 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_); // mod(j,N) + + vec4 x = x_ * ns.x + ns.yyyy; + vec4 y = y_ * ns.x + ns.yyyy; + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4(x.xy, y.xy); + vec4 b1 = vec4(x.zw, y.zw); + + //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0; + //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0; + vec4 s0 = floor(b0) * 2.0 + 1.0; + vec4 s1 = floor(b1) * 2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0, 0.0, 0.0, 0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy; + vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww; + + vec3 p0 = vec3(a0.xy, h.x); + vec3 p1 = vec3(a0.zw, h.y); + vec3 p2 = vec3(a1.xy, h.z); + vec3 p3 = vec3(a1.zw, h.w); + +//Normalise gradients + //vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + vec4 norm = rsqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + +// Mix final noise value + vec4 m = max(0.6 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0); + m = m * m; + return 42.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3))); +} + +////////////////////////////////////////////////////////////// + +// PRNG +// From https://www.shadertoy.com/view/4djSRW +float prng(in vec2 seed) +{ + seed = fract(seed * vec2(5.3983, 5.4427)); + seed += dot(seed.yx, seed.xy + vec2(21.5351, 14.3137)); + return fract(seed.x * seed.y * 95.4337); +} + +////////////////////////////////////////////////////////////// + +float noiseStack(vec3 pos, int octaves, float falloff) +{ + float noise = snoise(vec3(pos)); + float off = 1.0; + if (octaves > 1) + { + pos *= 2.0; + off *= falloff; + noise = (1.0 - off) * noise + off * snoise(vec3(pos)); + } + if (octaves > 2) + { + pos *= 2.0; + off *= falloff; + noise = (1.0 - off) * noise + off * snoise(vec3(pos)); + } + if (octaves > 3) + { + pos *= 2.0; + off *= falloff; + noise = (1.0 - off) * noise + off * snoise(vec3(pos)); + } + return (1.0 + noise) / 2.0; +} + +vec2 noiseStackUV(vec3 pos, int octaves, float falloff, float diff) +{ + float displaceA = noiseStack(pos, octaves, falloff); + float displaceB = noiseStack(pos + vec3(3984.293, 423.21, 5235.19), octaves, falloff); + return vec2(displaceA, displaceB); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 UV = (1.0 - v_in.uv) * uv_scale; + if (Invert) + UV = v_in.uv * uv_scale; + float alpha = saturate(Alpha_Percentage * .01); + float flame_size = clamp(Flame_Size * .01, 0.0, 4.0); + + vec2 resolution = (.25 * uv_scale * UV.xy) + (0.75 * uv_scale); + if (Full_Width) + { + resolution = (2.0 * (UV.xy)) / 1.0; //iResolution.xy; + + } + resolution.x = mul(resolution.x, 1 / 1); + float time = iTime * (Speed * 0.01); + //vec2 drag = iMouse().xy; + vec2 offset = iMouse().xy; + // + float xpart = UV.x / resolution.x; + float ypart = UV.y / resolution.y; + // + + float ypartClip = UV.y / ( flame_size * 75.0); + float ypartClippedFalloff = clamp(2.0 - ypartClip, 0.0, 1.0); + float ypartClipped = min(ypartClip, 1.0); + float ypartClippedn = (1 - ypartClipped); + // + float xfuel = pow(1.0 - abs(2.0 * xpart - 1.0), 0.5); //pow(1.0-abs(2.0*xpart-1.0),0.5); + // + float timeSpeed = 0.5 * (Speed * 0.01); + float realTime = -1.0 * timeSpeed * time; + // + vec2 coordScaled = -1 * Flame_Tongue_Size * UV - 0.1 * offset; + vec3 position = vec3(coordScaled, 0.0); // +vec3(1223.0, 6434.0, 8425.0); + vec3 flow = vec3(4.1 * (0.5 - xpart) * pow(ypartClippedn, 4.0), -2.0 * xfuel * pow(ypartClippedn, 64.0), 0.0); + vec3 timing = realTime * vec3(0.0, -1.7, 1.1) + flow; + // + vec3 displacePos = vec3(1.0, 0.5, 1.0) * 2.4 * position + realTime * vec3(0.01, -0.7, 1.3); + vec3 displace3 = vec3(noiseStackUV(displacePos, 2, 0.4, 0.1), 0.0); + // + vec3 noiseCoord = (vec3(2.0, 1.0, 1.0) * position + timing + 0.4 * displace3) / 1.0; + float noise = noiseStack(noiseCoord, 3, 0.4); + // + float flames = pow(ypartClipped, 0.3 * xfuel) * pow(noise, 0.3 * xfuel); + // + float f = ypartClippedFalloff * pow(Flame_Modifier - flames * flames * flames, 8.0); + float fff = f * f * f; + vec3 fire = 1.5 * vec3(f, fff, fff * fff); + // + // smoke + float smokeNoise = 0.5 + snoise(0.4 * position + timing * vec3(1.0, 1.0, 0.2)) / 2.0; + float smokePart = 0.3 * pow(xfuel, 3.0) * pow(ypart, 2.0) * (smokeNoise + 0.4 * (1.0 - noise)); + vec3 smoke = vec3(smokePart, smokePart, smokePart); + // + // sparks + float sparkGridSize = Spark_Grid_Height; + vec2 sparkCoord = UV *uv_size - vec2(2.0 * offset.x, 190.0 * sin(realTime)); + sparkCoord -= 30.0 * noiseStackUV(0.01 * vec3(sparkCoord, 15.0 * time), 1, 0.4, 0.1); + sparkCoord += 100.0 * flow.xy; + if (mod(sparkCoord.y / sparkGridSize, 2.0) < 1.0) + sparkCoord.x += 0.5 * sparkGridSize; + vec2 sparkGridIndex = vec2(floor(sparkCoord / sparkGridSize)); + float sparkRandom = prng( sparkGridIndex); + float sparkLife = min(10.0 * (1.0 - min((sparkGridIndex.y + (190.0 * realTime / sparkGridSize)) / (24.0 - 20.0 * sparkRandom), 1.0)), 1.0); + vec3 sparks = vec3(0.0, 0.0, 0.0); + if (sparkLife > 0.0) + { + float sparkSize = xfuel * xfuel * sparkRandom * 0.08; + float sparkRadians = 999.0 * sparkRandom * 2.0 * PI + 2.0 * time; + vec2 sparkCircular = vec2(sin(sparkRadians), cos(sparkRadians)); + vec2 sparkOffset = (0.5 - sparkSize) * sparkGridSize * sparkCircular; + vec2 sparkModulus = mod2(sparkCoord + sparkOffset, float2(sparkGridSize, sparkGridSize)) - 0.5 * float2(sparkGridSize, sparkGridSize); + float sparkLength = length(sparkModulus); + float sparksGray = max(0.0, 1.0 - sparkLength / (sparkSize * sparkGridSize)); + sparks = sparkLife * sparksGray * vec3(1.0, 0.3, 0.0); + } + // + float4 rgba = vec4(max(fire, sparks) + smoke, 1.0); + + // remove dark areas per user + float luma_fire = dot(rgba.rgb, float3(0.299, 0.587, 0.114)); + float luma_min_fire = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luma_fire); + rgba.a = clamp(luma_min_fire, 0.0, alpha); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + float4 color = image.Sample(textureSampler, v_in.uv); + float4 original_color = color; + if (color.a > 0.0) + { + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, lerp(original_color,rgba * color,rgba.a), alpha); + } + else + { + rgba = color; + } + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, alpha); + } + + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFireShader.ps1 b/Commands/Shaders/Get-OBSFireShader.ps1 new file mode 100644 index 000000000..3f91e0d48 --- /dev/null +++ b/Commands/Shaders/Get-OBSFireShader.ps1 @@ -0,0 +1,434 @@ +function Get-OBSFireShader { + +[Alias('Set-OBSFireShader','Add-OBSFireShader')] +param( +# Set the Alpha_Percentage of OBSFireShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Int32] +$AlphaPercentage, +# Set the Speed of OBSFireShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Int32] +$Speed, +# Set the Flame_Size of OBSFireShader +[Alias('Flame_Size')] +[ComponentModel.DefaultBindingProperty('Flame_Size')] +[Int32] +$FlameSize, +# Set the Fire_Type of OBSFireShader +[Alias('Fire_Type')] +[ComponentModel.DefaultBindingProperty('Fire_Type')] +[Int32] +$FireType, +# Set the Invert of OBSFireShader +[ComponentModel.DefaultBindingProperty('Invert')] +[Management.Automation.SwitchParameter] +$Invert, +# Set the lumaMin of OBSFireShader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMinSmooth of OBSFireShader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the Apply_To_Image of OBSFireShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSFireShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Apply_To_Specific_Color of OBSFireShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSFireShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Notes of OBSFireShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fire' +$ShaderNoun = 'OBSFireShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//fire shader modified by Charles Fettinger for use with obs-shaderfilter 07/20 v.6 +// https://github.com/Oncorporation/obs-shaderfilter plugin +// https://www.shadertoy.com/view/MtcGD7 original version +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +//v.5 +// flicker +// flame type +// apply to image +// replace image color +// speed +// flame size +// alpha +// invert direction/position + + +//Section to converting GLSL to HLSL - can delete +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp + +uniform int Alpha_Percentage< + string label = "Aplha Percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 90; +uniform int Speed< + string label = "Speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +> = 100; +uniform int Flame_Size< + string label = "Flame Size"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +> = 70; +uniform int Fire_Type< + string label = "Fire Type"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Smaller and more whisps"; + int option_1_value = 1; + string option_1_label = "Larger and more volume"; +> = 1; + +uniform bool Invert < + string name = "Invert"; +> = false; +uniform float lumaMin< + string label = "Luma min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.01; +uniform float lumaMinSmooth< + string label = "Luma min smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.04; +uniform bool Apply_To_Image; +uniform bool Replace_Image_Color; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform string Notes< + string widget_type = "info"; +> = "Luma cuts reveals background, flame size is percentage screen size, Alpha Percentage adjusts color"; + +vec3 rgb2hsv(vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +vec3 hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +float rand(vec2 n) +{ + return fract(sin(cos(dot(n, vec2(12.9898, 12.1414)))) * 83758.5453); + //return sin(rand_f, n); +} + +float noise(vec2 n) +{ + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n), f = smoothstep(vec2(0.0, 0.0), vec2(1.0, 1.0), fract(n)); + return mix(mix(rand(b), rand(b + d.yx), f.x), mix(rand(b + d.xy), rand(b + d.yy), f.x), f.y); +} + +float fbm(vec2 n) +{ + float total = 0.0, amplitude = 1.0; + for (int i = 0; i < 5; i++) + { + total += noise(n) * amplitude; + n += n * 1.7; + amplitude *= 0.47; + } + return total; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 iResolution = uv_scale; + float flame_size = clamp(Flame_Size * .01,-5,5); + + // inverting direction is logically inverted to allow the bottom up to be normal + float fire_base = (v_in.uv.y / iResolution.y); + float2 fire_pix = v_in.uv.xy + float2(flame_size -1,0); + float direction = -1.0 * clamp(Speed*.01,-5,5); + if (!Invert) + { + direction *= -1.0; + fire_base = 1 - fire_base; + fire_pix = 1 - fire_pix; + } + float iTime = direction * elapsed_time; + + const vec3 c1 = vec3(0.5, 0.0, 0.1); + const vec3 c2 = vec3(0.9, 0.1, 0.0); + const vec3 c3 = vec3(0.2, 0.1, 0.7); + const vec3 c4 = vec3(1.0, 0.9, 0.1); + const vec3 c5 = vec3(0.1, 0.1, 0.1); + const vec3 c6 = vec3(0.9, 0.9, 0.9); + + vec2 speed = vec2(1.2, 0.1) * clamp(Speed*.01,-5,5); + float shift = 1.327 * (1/flame_size) - sin(iTime * 2.0) / 2.4; + float alpha = saturate(Alpha_Percentage * .01); + + //change the constant term for all kinds of cool distance versions, + //make plus/minus to switch between + //ground fire and fire rain! + float dist = 3.5 - sin(iTime * 0.4) / 1.89; + + vec2 p = fire_pix * dist / iResolution.xx; + p.x -= iTime / 1.1; + float3 black = float3(0,0,0); + vec3 fire; + + if (Fire_Type == 1) + { + //fire version 1 larger and more volume + float q = fbm(p - iTime * 0.01 + 1.0 * sin(iTime) / 10.0); + float qb = fbm(p - iTime * 0.002 + 0.1 * cos(iTime) / 5.0); + float q2 = fbm(p - iTime * 0.44 - 5.0 * cos(iTime) / 7.0) -6.0; + float q3 = fbm(p - iTime * 0.9 - 10.0 * cos(iTime) / 30.0) -4.0; + float q4 = fbm(p - iTime * 2.0 - 20.0 * sin(iTime) / 20.0) +2.0; + q = (q + qb - .4 * q2 - 2.0 * q3 + .6 * q4) / 3.8; + + vec2 r = vec2(fbm(p + q / 2.0 - iTime* speed.x - p.x - p.y), + fbm(p - q - iTime* speed.y)) ; + vec3 c = mix(c1, c2, fbm(p + r)) + mix(c3, c4, r.x) - mix(c5, c6, r.y); + fire = vec3(c * max(cos(shift * fire_base) - (rand_f *.05),0.05)); + + fire += .05; + fire.r *= .8; + vec3 hsv = rgb2hsv(fire); + hsv.y *= hsv.z * 1.1; + hsv.z *= hsv.y * 1.13; + hsv.y = (2.2 - hsv.z * .9) * 1.20; + fire = hsv2rgb(hsv); + } + else + { + // fire version 0 - smaller and more whisps + p += (rand_f *.01); + float q = fbm(p - iTime * 0.3+1.0*sin(iTime+0.5)/2.0); + float qb = fbm(p - iTime * 0.4+0.1*cos(iTime)/2.0); + float q2 = fbm(p - iTime * 0.44 - 5.0*cos(iTime)/2.0) - 6.0; + float q3 = fbm(p - iTime * 0.9 - 10.0*cos(iTime)/15.0)-4.0; + float q4 = fbm(p - iTime * 1.4 - 20.0*sin(iTime)/14.0)+2.0; + q = (q + qb - .4 * q2 -2.0*q3 + .6*q4)/3.8; + + vec2 r = vec2(fbm(p + q /2.0 + iTime * speed.x - p.x - p.y), + fbm(p + q - iTime * speed.y)) * shift; + vec3 c = mix(c1, c2, fbm(p + r)) + mix(c3, c4, r.x) - mix(c5, c6, r.y); + //fire = vec3(1.0/(pow(c+1.61,vec3(4.0,4.0,4.0))) * max(cos(shift * fire_base),0)); + + fire = vec3(1.0,.2,.05)/(pow((r.y+r.y)* max(.0,p.y)+0.1, 4.0)) ;//* max(.1,(cos(shift * fire_base))); + fire += (black*0.01*pow((r.y+r.y)*.65,5.0)+0.055)*mix( vec3(.9,.4,.3),vec3(.7,.5,.2), v_in.uv.y); + fire = fire/(1.0+max(black,fire)); + } + float4 rgba = vec4(fire.x, fire.y, fire.z, alpha); + + // remove dark areas per user + float luma_fire = dot(rgba.rgb,float3(0.299,0.587,0.114)); + float luma_min_fire = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luma_fire); + rgba.a = clamp(luma_min_fire,0.0,alpha); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + if (color.a > 0.0) + { + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, lerp(original_color,rgba * color,rgba.a), alpha); + } + else + { + rgba = color; + } + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, alpha); + } + return rgba; +} + + + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFireworks2Shader.ps1 b/Commands/Shaders/Get-OBSFireworks2Shader.ps1 new file mode 100644 index 000000000..edd1a3a7a --- /dev/null +++ b/Commands/Shaders/Get-OBSFireworks2Shader.ps1 @@ -0,0 +1,256 @@ +function Get-OBSFireworks2Shader { + +[Alias('Set-OBSFireworks2Shader','Add-OBSFireworks2Shader')] +param( +# Set the Speed of OBSFireworks2Shader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fireworks2' +$ShaderNoun = 'OBSFireworks2Shader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// based on https://www.shadertoy.com/view/4dBGRw + +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200.0; + float step = 1.0; +> = 100.0; + +#ifndef OPENGL +#define mat2 float2x2 +#define mix lerp +float mod(float x, float y) +{ + return x - y * floor(x / y); +} +#endif +//Creates a diagonal red-and-white striped pattern. +float3 barberpole(float2 pos, float2 rocketpos){ + float d = (pos.x-rocketpos.x)+(pos.y-rocketpos.y); + float3 col=float3(1.0,1.0,1.0); + + d = mod(d*20.,2.0); + if(d>1.0){ + col=float3(1.0,0.0,0.0); + } + return col; +} + +float4 rocket(float2 pos, float2 rocketpos){ + float4 col = float4(0.0,0.0,0.0,0.0); + float f = 0.; + float absx= abs(rocketpos.x - pos.x); + float absy = abs(rocketpos.y-pos.y); + //wooden stick + if(absx<0.01&&absy<0.22){ + col=float4(1.0,0.5,0.5,1.0); + } + + //Barberpole + + if(absx<0.05&&absy<0.15){ + col=float4(barberpole(pos, rocketpos),1.0); + } + //Rocket Point + float pointw=(rocketpos.y-pos.y-0.25)*-0.7; + if((rocketpos.y-pos.y)>0.1){ + f=smoothstep(pointw-0.001,pointw+0.001,absx); + + col=mix(float4(1.0,0.0,0.0,1.0),col, f); + } + //Shadow + + f =-.5 + smoothstep(-0.05, 0.05, (rocketpos.x-pos.x)); + col.rgb *= 0.7+f; + + return col; +} + + + +float rand(float val, float seed){ + return cos(val*sin(val*seed)*seed); +} + +float distance2( in float2 a, in float2 b ) { return dot(a-b,a-b); } + + + +float4 drawParticles(float2 pos, float3 particolor, float time, float2 cpos, float gravity, float seed, float timelength){ + float4 col= float4(0.0,0.0,0.0,0.0); + float2 pp = float2(1.0,0.0); + mat2 rr = mat2( cos(1.0), -sin(1.0), sin(1.0), cos(1.0) ); + for(float i=1.0;i<=128.0;i++){ + float d=rand(i, seed); + float fade=(i/128.0)*time; + float2 particpos = cpos + time*pp*d; + pp = mul(rr,pp); + col.rgb = mix(particolor/fade, col, smoothstep(0.0, 0.0001, distance2(particpos, pos))); + } + col.rgb*=smoothstep(0.0,1.0,(timelength-time)/timelength); + col.a = col.r+col.g+col.b; + return col; +} +float4 drawFireworks(float time, float2 uv, float3 particolor, float seed){ + + float timeoffset = 2.0; + float4 col=float4(0.0,0.0,0.0,0.0); + if(time<=0.){ + return col; + } + time *= Speed /100.0; + if(mod(time, 6.0)>timeoffset){ + col= drawParticles(uv, particolor, mod(time, 6.0)-timeoffset, float2(rand(ceil(time/6.0),seed),-0.5), 0.5, ceil(time/6.0), seed); + }else{ + + col= rocket(uv*3., float2(3.*rand(ceil(time/6.0),seed),3.*(-0.5+(timeoffset-mod(time, 6.0))))); + } + return col; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv =float2(1.0,1.0) - 2.0* v_in.uv; + uv.y = -uv.y; + uv.x *= uv_size.x/uv_size.y; + float4 col = image.Sample(textureSampler, v_in.uv); + //col.rgb += 0.1*uv.y; + float4 c; + c = drawFireworks(elapsed_time , uv,float3(1.0,0.1,0.1), 1.); + col = mix(col, c, c.a); + c = drawFireworks(elapsed_time-2.0, uv,float3(0.0,1.0,0.5), 2.); + col = mix(col, c, c.a); + c = drawFireworks(elapsed_time-4.0, uv,float3(1.0,1.0,0.1), 3.); + col = mix(col, c, c.a); + + return col; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFireworksShader.ps1 b/Commands/Shaders/Get-OBSFireworksShader.ps1 new file mode 100644 index 000000000..101bd2466 --- /dev/null +++ b/Commands/Shaders/Get-OBSFireworksShader.ps1 @@ -0,0 +1,313 @@ +function Get-OBSFireworksShader { + +[Alias('Set-OBSFireworksShader','Add-OBSFireworksShader')] +param( +# Set the show_flash of OBSFireworksShader +[Alias('show_flash')] +[ComponentModel.DefaultBindingProperty('show_flash')] +[Management.Automation.SwitchParameter] +$ShowFlash, +# Set the show_stars of OBSFireworksShader +[Alias('show_stars')] +[ComponentModel.DefaultBindingProperty('show_stars')] +[Management.Automation.SwitchParameter] +$ShowStars, +# Set the use_transparancy of OBSFireworksShader +[Alias('use_transparancy')] +[ComponentModel.DefaultBindingProperty('use_transparancy')] +[Management.Automation.SwitchParameter] +$UseTransparancy, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fireworks' +$ShaderNoun = 'OBSFireworksShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#ifndef OPENGL +#define mat2 float2x2 +#define fract frac +#define mix lerp +#endif + +uniform bool show_flash = true; +uniform bool show_stars = true; +uniform bool use_transparancy = true; + +float distLine(float2 p, float2 a, float2 b) { + float2 pa = p - a; + float2 ba = b - a; + float t = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0); + return length(pa - ba * t); +} + +float linef(float2 uv, float2 a, float2 b, float w) { + //return smoothstep(w, w - 0.01, distLine(uv, a, b)); + return w / distLine(uv, a, b); +} + +float N21(float2 p) { + p = fract(p * float2(233.34, 851.73)); + p += dot(p, p + 23.45); + return fract(p.x * p.y); +} + +float2 N22(float2 p) { + float n = N21(p); + return float2(n, N21(p + n)); +} + +float N11(float n) { + return fract(sin(dot(float2(cos(n), sin(n)) ,float2(27.9898, 38.233))) * 88.5453); +} + +float particle(float2 uv, float2 p, float2 v, float r, float t) { + float g = -9.81; + float x = p.x + v.x * t; + float y = p.y + v.y * t + g / 2.0 * t * t; + float2 j = (float2(x, y) - uv) * 20.0; + float sparkle = 1.0 / dot(j, j); + return sparkle; +} + +float2 p1(float2 p, float h, float t) { + return float2(p.x, p.y + clamp(pow(t, 5.0), 0.0, h)); +} + +float2 p2(float2 p, float h, float t) { + return float2(p.x, p.y + clamp(pow(0.95 * t, 5.0), 0.0, h)); +} + +float endTime(float h) { + return pow(h, 1.0 / 5.0) * 1.1; +} + +float explosion(float2 uv, float2 p, float s, float n, float f, float t) { + + float m = 0.0; + float dt = 0.5; + float seed2 = 0.32; + for(float i = 0.0; i < n; i++) { + seed2 += i; + float2 rand = float2(1.0, 2.0) * (float2(-1.0, 1.0) + 2.0 * N22(float2(seed2, i))); + float2 v = float2(cos(seed2), sin(seed2)) + rand; + m += particle(uv, p, v, s, t) * smoothstep(2.0, 2.0 - dt, t) * smoothstep(0.0, dt, t); + } + return m; +} + +float fireworks(float2 uv, float2 p, float h, float n, float s, float f, float t) { + float2 p1v = p1(p, h, t); + float e = endTime(h); + return explosion(uv, p1v, s, n, f, t - e * 0.9); +} + +float shaft(float2 uv, float2 p, float w, float h, float t) { + float2 p1v = p1(p, h, t) + float2(0.0, 0.3); + float2 p2v = p2(p, h, t); + float e = 1.0 / 0.95 * endTime(h); + float2 j = (p1v - uv) * 15.0; + float sparkle = 1.0 / dot(j, j); + return (linef(uv, p1v, p2v, w) + sparkle) * smoothstep(e, e - 0.5, t) * 0.5; +} + +float3 base(float2 uv) { + return 0.5 + 0.5 * cos(elapsed_time + uv.xyx + float3(0, 2, 4)); +} + +float back(float2 uv, float2 p, float t) { + float dt = 0.3; + float j = length(p - uv); + float m = exp(-0.005 * j * j); + return 0.2 * m * smoothstep(-dt / 4.0, 0.0, t) * smoothstep(dt, 0.0, t); +} + +float stars(float2 uv) { + float r = N21(uv); + return smoothstep(0.001, 0.0, r); +} + +float mod(float x, float y) +{ + return x - y * floor(x / y); +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv - float2(0.5,0.5); + uv.y = uv.y * -1; + float t = elapsed_time / 10.0; + float scale = 10.0; + uv *= scale; + // + float4 col = image.Sample(textureSampler, v_in.uv); + if(show_stars){ + float c = stars(uv); + if(use_transparancy){ + col += float4(c,c,c,c)*(1.0-col.a); + }else{ + col += float4(c,c,c,c);//*(1.0-orig_col.a); + } + + } + + float a = -0.035 * sin(t * 15.0); + float co = cos(a); + float si = sin(a); + mat2 trans1 = mat2(float2(co, si), float2(-si, co)); + float2 trans2 = float2(-15.0 * a, 0.0); +#ifndef OPENGL + uv = mul(uv, trans1); +#else + uv *= trans1; +#endif + uv += trans2; + + for(float i = 0.0; i < 1.0; i += 1.0 / 8.0) { + float ti = mod(t * 9.0 - i * 5.0, 4.0); + float scale = mix(2.0, 0.3, ti / 4.0); + float2 uvs = uv * scale; + float rand = N11(i); + float h = 10.0 + rand * 4.0; + float w = 0.02; + float n = 80.0; + float s = 0.9; + float f = 1.5; + float2 p = float2(mix(-8.0, 8.0, rand), -10.0); + float fw = fireworks(uvs, p, h, n, s, f, ti); + float3 bc = base(uv); + col += float4(bc*fw, fw); + col += shaft(uvs, p, w, h, ti); + if(show_flash){ + if(use_transparancy){ + col += back(uvs, float2(p.x, p.y + h), ti - 1.8)*col.a; + }else{ + col += back(uvs, float2(p.x, p.y + h), ti - 1.8); + } + } + } + + return col; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFisheyeShader.ps1 b/Commands/Shaders/Get-OBSFisheyeShader.ps1 new file mode 100644 index 000000000..e06f2e573 --- /dev/null +++ b/Commands/Shaders/Get-OBSFisheyeShader.ps1 @@ -0,0 +1,188 @@ +function Get-OBSFisheyeShader { + +[Alias('Set-OBSFisheyeShader','Add-OBSFisheyeShader')] +param( +# Set the center_x_percent of OBSFisheyeShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Single] +$CenterXPercent, +# Set the center_y_percent of OBSFisheyeShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Single] +$CenterYPercent, +# Set the power of OBSFisheyeShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fisheye' +$ShaderNoun = 'OBSFisheyeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float center_x_percent< + string label = "Center x percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform float center_y_percent< + string label = "Center y percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform float power< + string label = "Power"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 1.75; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float2 uv = v_in.uv; + if (power >= 0.0001){ + float b = sqrt(dot(center_pos, center_pos)); + uv = center_pos + normalize(v_in.uv - center_pos) * tan(distance(center_pos, v_in.uv) * power) * b / tan( b * power); + } else if(power <= -0.0001){ + float b; + if (uv_pixel_interval.x < uv_pixel_interval.y){ + b = center_pos.x; + } else { + b = center_pos.y; + } + uv = center_pos + normalize(v_in.uv - center_pos) * atan(distance(center_pos, v_in.uv) * -power * 10.0) * b / atan(-power * b * 10.0); + } + return image.Sample(textureSampler, uv); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFisheyeXyShader.ps1 b/Commands/Shaders/Get-OBSFisheyeXyShader.ps1 new file mode 100644 index 000000000..aa61eaea8 --- /dev/null +++ b/Commands/Shaders/Get-OBSFisheyeXyShader.ps1 @@ -0,0 +1,213 @@ +function Get-OBSFisheyeXyShader { + +[Alias('Set-OBSFisheyeXyShader','Add-OBSFisheyeXyShader')] +param( +# Set the center_x_percent of OBSFisheyeXyShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Single] +$CenterXPercent, +# Set the center_y_percent of OBSFisheyeXyShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Single] +$CenterYPercent, +# Set the power_x of OBSFisheyeXyShader +[Alias('power_x')] +[ComponentModel.DefaultBindingProperty('power_x')] +[Single] +$PowerX, +# Set the power_y of OBSFisheyeXyShader +[Alias('power_y')] +[ComponentModel.DefaultBindingProperty('power_y')] +[Single] +$PowerY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fisheye-xy' +$ShaderNoun = 'OBSFisheyeXyShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float center_x_percent< + string label = "Center x percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform float center_y_percent< + string label = "Center y percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform float power_x< + string label = "Power x"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 1.75; +uniform float power_y< + string label = "Power y"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 1.75; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float2 uv = v_in.uv; + if (power_x >= 0.0001){ + float b = sqrt(dot(center_pos, center_pos)); + uv.x = (center_pos + normalize(v_in.uv - center_pos) * tan(distance(center_pos, v_in.uv) * power_x) * b / tan( b * power_x)).x; + } else if(power_x <= -0.0001){ + float b; + if (uv_pixel_interval.x < uv_pixel_interval.y){ + b = center_pos.x; + } else { + b = center_pos.y; + } + uv.x = (center_pos + normalize(v_in.uv - center_pos) * atan(distance(center_pos, v_in.uv) * -power_x * 10.0) * b / atan(-power_x * b * 10.0)).x; + } + if (power_y >= 0.0001){ + float b = sqrt(dot(center_pos, center_pos)); + uv.y = (center_pos + normalize(v_in.uv - center_pos) * tan(distance(center_pos, v_in.uv) * power_y) * b / tan( b * power_y)).y; + } else if(power_y <= -0.0001){ + float b; + if (uv_pixel_interval.x < uv_pixel_interval.y){ + b = center_pos.x; + } else { + b = center_pos.y; + } + uv.y = (center_pos + normalize(v_in.uv - center_pos) * atan(distance(center_pos, v_in.uv) * -power_y * 10.0) * b / atan(-power_y * b * 10.0)).y; + } + return image.Sample(textureSampler, uv); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFlipShader.ps1 b/Commands/Shaders/Get-OBSFlipShader.ps1 new file mode 100644 index 000000000..26860befe --- /dev/null +++ b/Commands/Shaders/Get-OBSFlipShader.ps1 @@ -0,0 +1,163 @@ +function Get-OBSFlipShader { + +[Alias('Set-OBSFlipShader','Add-OBSFlipShader')] +param( +# Set the Horizontal of OBSFlipShader +[ComponentModel.DefaultBindingProperty('Horizontal')] +[Management.Automation.SwitchParameter] +$Horizontal, +# Set the Vertical of OBSFlipShader +[ComponentModel.DefaultBindingProperty('Vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Flip' +$ShaderNoun = 'OBSFlipShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// A Simple Flip Shader + +uniform bool Horizontal< + string label = "Flip horizontally"; +> = true; +uniform bool Vertical< + string label = "Flip vertically"; +> = true; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + if (Horizontal == true) { + pos.x = 1 - pos.x; + } + if (Vertical == true) { + pos.y = 1 - pos.y; + } + + return image.Sample(textureSampler, pos); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSFrostedGlassShader.ps1 b/Commands/Shaders/Get-OBSFrostedGlassShader.ps1 new file mode 100644 index 000000000..9d0e9f5e1 --- /dev/null +++ b/Commands/Shaders/Get-OBSFrostedGlassShader.ps1 @@ -0,0 +1,238 @@ +function Get-OBSFrostedGlassShader { + +[Alias('Set-OBSFrostedGlassShader','Add-OBSFrostedGlassShader')] +param( +# Set the Alpha_Percent of OBSFrostedGlassShader +[Alias('Alpha_Percent')] +[ComponentModel.DefaultBindingProperty('Alpha_Percent')] +[Single] +$AlphaPercent, +# Set the Amount of OBSFrostedGlassShader +[ComponentModel.DefaultBindingProperty('Amount')] +[Single] +$Amount, +# Set the Scale of OBSFrostedGlassShader +[ComponentModel.DefaultBindingProperty('Scale')] +[Single] +$Scale, +# Set the Animate of OBSFrostedGlassShader +[ComponentModel.DefaultBindingProperty('Animate')] +[Management.Automation.SwitchParameter] +$Animate, +# Set the Horizontal_Border of OBSFrostedGlassShader +[Alias('Horizontal_Border')] +[ComponentModel.DefaultBindingProperty('Horizontal_Border')] +[Management.Automation.SwitchParameter] +$HorizontalBorder, +# Set the Border_Offset of OBSFrostedGlassShader +[Alias('Border_Offset')] +[ComponentModel.DefaultBindingProperty('Border_Offset')] +[Single] +$BorderOffset, +# Set the Border_Color of OBSFrostedGlassShader +[Alias('Border_Color')] +[ComponentModel.DefaultBindingProperty('Border_Color')] +[String] +$BorderColor, +# Set the notes of OBSFrostedGlassShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'frosted_glass' +$ShaderNoun = 'OBSFrostedGlassShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Frosted Glass shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter + +uniform float Alpha_Percent< + string label = "Alpha Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; +uniform float Amount< + string label = "Amount"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.03; +uniform float Scale< + string label = "Scale"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 5.1; +uniform bool Animate; +uniform bool Horizontal_Border; +uniform float Border_Offset< + string label = "Border Offset"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.1; +uniform float4 Border_Color = {.8,.5,1.0,1.0}; +uniform string notes< + string widget_type = "info"; +> = "Change shader with Scale and Amount, move Border with Border Offset. Alpha is Opacity of overlay."; + +float rand(float2 co) +{ + float scale = Scale; + if (Animate) + scale *= rand_f; + float2 v1 = float2(92.0,80.0); + float2 v2 = float2(41.0,62.0); + return frac(sin(dot(co.xy ,v1)) + cos(dot(co.xy ,v2)) * scale); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv); + float3 tc = rgba.rgb * Border_Color.rgb; + + float uv_compare = v_in.uv.x; + if (Horizontal_Border) + uv_compare = v_in.uv.y; + + if (uv_compare < (Border_Offset - 0.005)) + { + float2 randv = float2(rand(v_in.uv.yx),rand(v_in.uv.yx)); + tc = image.Sample(textureSampler, v_in.uv + (randv*Amount)).rgb; + } + else if (uv_compare >= (Border_Offset + 0.005)) + { + tc = image.Sample(textureSampler, v_in.uv).rgb; + } + return lerp(rgba,float4(tc,1.0),(Alpha_Percent * 0.01)); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGammaCorrectionShader.ps1 b/Commands/Shaders/Get-OBSGammaCorrectionShader.ps1 new file mode 100644 index 000000000..92fd7da00 --- /dev/null +++ b/Commands/Shaders/Get-OBSGammaCorrectionShader.ps1 @@ -0,0 +1,184 @@ +function Get-OBSGammaCorrectionShader { + +[Alias('Set-OBSGammaCorrectionShader','Add-OBSGammaCorrectionShader')] +param( +# Set the Red of OBSGammaCorrectionShader +[ComponentModel.DefaultBindingProperty('Red')] +[Single] +$Red, +# Set the Green of OBSGammaCorrectionShader +[ComponentModel.DefaultBindingProperty('Green')] +[Single] +$Green, +# Set the Blue of OBSGammaCorrectionShader +[ComponentModel.DefaultBindingProperty('Blue')] +[Single] +$Blue, +# Set the notes of OBSGammaCorrectionShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gamma_correction' +$ShaderNoun = 'OBSGammaCorrectionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Gamma Correction shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter + +uniform float Red< + string label = "Red"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; +uniform float Green< + string label = "Green"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; +uniform float Blue< + string label = "Blue"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; +uniform string notes< + string widget_type = "info"; +> = "Modify Colors to correct for gamma, use equal values for general correction." + +float4 mainImage(VertData v_in) : TARGET +{ + float3 gammaRGB = float3(clamp(Red,0.1,10.0),clamp(Green,0.1,10.0),clamp(Blue,0.1,10.0)); + float4 c = image.Sample(textureSampler, v_in.uv); + c.rgb = pow(c.rgb, 1.0 / gammaRGB); + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGaussianBlurAdvancedShader.ps1 b/Commands/Shaders/Get-OBSGaussianBlurAdvancedShader.ps1 new file mode 100644 index 000000000..8bec34457 --- /dev/null +++ b/Commands/Shaders/Get-OBSGaussianBlurAdvancedShader.ps1 @@ -0,0 +1,264 @@ +function Get-OBSGaussianBlurAdvancedShader { + +[Alias('Set-OBSGaussianBlurAdvancedShader','Add-OBSGaussianBlurAdvancedShader')] +param( +# Set the Directions of OBSGaussianBlurAdvancedShader +[ComponentModel.DefaultBindingProperty('Directions')] +[Single] +$Directions, +# Set the Quality of OBSGaussianBlurAdvancedShader +[ComponentModel.DefaultBindingProperty('Quality')] +[Single] +$Quality, +# Set the Size of OBSGaussianBlurAdvancedShader +[ComponentModel.DefaultBindingProperty('Size')] +[Single] +$Size, +# Set the Mask_Left of OBSGaussianBlurAdvancedShader +[Alias('Mask_Left')] +[ComponentModel.DefaultBindingProperty('Mask_Left')] +[Single] +$MaskLeft, +# Set the Mask_Right of OBSGaussianBlurAdvancedShader +[Alias('Mask_Right')] +[ComponentModel.DefaultBindingProperty('Mask_Right')] +[Single] +$MaskRight, +# Set the Mask_Top of OBSGaussianBlurAdvancedShader +[Alias('Mask_Top')] +[ComponentModel.DefaultBindingProperty('Mask_Top')] +[Single] +$MaskTop, +# Set the Mask_Bottom of OBSGaussianBlurAdvancedShader +[Alias('Mask_Bottom')] +[ComponentModel.DefaultBindingProperty('Mask_Bottom')] +[Single] +$MaskBottom, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-blur-advanced' +$ShaderNoun = 'OBSGaussianBlurAdvancedShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float Directions< + string label = "Directions (16.0)"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 100.0; + float step = 1.0; +> = 16.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower) +uniform float Quality< + string label = "Quality (4.0)"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 100.0; + float step = 1.0; +> = 4.0; // BLUR QUALITY (Default 4.0 - More is better but slower) +uniform float Size< + string label = "Size (8.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 8.0; // BLUR SIZE (Radius) +uniform float Mask_Left< + string label = "Mask left (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Right< + string label = "Mask right (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Top< + string label = "Mask top (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Bottom< + string label = "Mask bottom (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +float4 mainImage(VertData v_in) : TARGET +{ + if(Mask_Left + Mask_Right > 1.0){ + if(v_in.uv.x > Mask_Left || 1.0 - v_in.uv.x > Mask_Right ){ + return image.Sample(textureSampler, v_in.uv); + } + }else{ + if((v_in.uv.x > Mask_Left) && (1.0-v_in.uv.x > Mask_Right)){ + return image.Sample(textureSampler, v_in.uv); + } + } + if(Mask_Top + Mask_Bottom > 1.0){ + if(v_in.uv.y > Mask_Top || 1.0 - v_in.uv.y > Mask_Bottom){ + return image.Sample(textureSampler, v_in.uv); + } + }else { + if((v_in.uv.y > Mask_Top) && (1.0-v_in.uv.y > Mask_Bottom)){ + return image.Sample(textureSampler, v_in.uv); + } + } + + float Pi = 6.28318530718; // Pi*2 + + float4 c = image.Sample(textureSampler, v_in.uv); + float4 oc = c; + float transparent = oc.a; + int count = 1; + float samples = oc.a; + + // Blur calculations + [loop] for( float d=0.0; d 0.0) + c /= samples; + + c.a = transparent / count; + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGaussianBlurShader.ps1 b/Commands/Shaders/Get-OBSGaussianBlurShader.ps1 new file mode 100644 index 000000000..b293e9466 --- /dev/null +++ b/Commands/Shaders/Get-OBSGaussianBlurShader.ps1 @@ -0,0 +1,342 @@ +function Get-OBSGaussianBlurShader { + +[Alias('Set-OBSGaussianBlurShader','Add-OBSGaussianBlurShader')] +param( +# Set the ViewProj of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the imageSize of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('imageSize')] +[Single[]] +$ImageSize, +# Set the imageTexel of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('imageTexel')] +[Single[]] +$ImageTexel, +# Set the u_radius of OBSGaussianBlurShader +[Alias('u_radius')] +[ComponentModel.DefaultBindingProperty('u_radius')] +[Int32] +$URadius, +# Set the u_diameter of OBSGaussianBlurShader +[Alias('u_diameter')] +[ComponentModel.DefaultBindingProperty('u_diameter')] +[Int32] +$UDiameter, +# Set the u_texelDelta of OBSGaussianBlurShader +[Alias('u_texelDelta')] +[ComponentModel.DefaultBindingProperty('u_texelDelta')] +[Single[]] +$UTexelDelta, +# Set the elapsed_time of OBSGaussianBlurShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSGaussianBlurShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSGaussianBlurShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSGaussianBlurShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the kernel of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('kernel')] +[String] +$Kernel, +# Set the kernelTexel of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('kernelTexel')] +[Single[]] +$KernelTexel, +# Set the pixel_size of OBSGaussianBlurShader +[Alias('pixel_size')] +[ComponentModel.DefaultBindingProperty('pixel_size')] +[Single] +$PixelSize, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-blur' +$ShaderNoun = 'OBSGaussianBlurShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro March 11, 2022 +// OBS Default +uniform float4x4 ViewProj; + +// Settings (Shared) +uniform texture2d image; +uniform float2 imageSize; +uniform float2 imageTexel; +uniform int u_radius; +uniform int u_diameter; +uniform float2 u_texelDelta; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; + +// Settings (Private) +//uniform float registerkernel[25]; +uniform texture2d kernel; +uniform float2 kernelTexel; +uniform float pixel_size = 1.0; + +sampler_state pointClampSampler { + Filter = Point; + AddressU = Clamp; + AddressV = Clamp; +}; + +sampler_state bilinearClampSampler { + Filter = Bilinear; + AddressU = Clamp; + AddressV = Clamp; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float Gaussian(float x, float o) +{ + float pivalue = 3.1415926535897932384626433832795; + return (1.0 / (o * sqrt(2.0 * pivalue))) * exp((-(x * x)) / (2.0 * (o * o))); +} + +VertData VSDefault(VertData vert_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(vert_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = vert_in.uv; + return vert_out; +} + +float4 InternalGaussian(float2 p_uv, float2 p_uvStep, int p_radius, + texture2d p_image, float2 p_imageTexel) + { + float l_gauss = Gaussian(0.0, 1.0); + float4 l_value = image.Sample(pointClampSampler, p_uv) * l_gauss; + float2 l_uvoffset = float2(0, 0); + for (int k = 1; k <= p_radius; k++) { + l_uvoffset += p_uvStep; + float l_g = Gaussian(float(k), uv_pixel_interval.x + uv_pixel_interval.y); + float4 l_p = image.Sample(pointClampSampler, p_uv + l_uvoffset) * l_g; + float4 l_n = image.Sample(pointClampSampler, p_uv - l_uvoffset) * l_g; + l_value += l_p + l_n; + l_gauss += l_g; + } + l_value = l_value * (1.0 / l_gauss); + return l_value; +} + +float4 InternalGaussianPrecalculated(float2 p_uv, float2 p_uvStep, int p_radius, + texture2d p_image, float2 p_imageTexel, + texture2d p_kernel, float2 p_kernelTexel) + { + float4 l_value = image.Sample(pointClampSampler, p_uv) + * kernel.Sample(pointClampSampler, float2(0, 0)).r; + float2 l_uvoffset = float2(0, 0); + for (int k = 1; k <= p_radius; k++) { + l_uvoffset += p_uvStep; + float l_g = kernel.Sample(pointClampSampler, p_kernelTexel * k).r; + float4 l_p = image.Sample(pointClampSampler, p_uv + l_uvoffset) * l_g; + float4 l_n = image.Sample(pointClampSampler, p_uv - l_uvoffset) * l_g; + l_value += l_p + l_n; + } + return l_value; +} + +/*float4 InternalGaussianPrecalculatedNVOptimized(float2 p_uv, int pixel_size, + texture2d p_image, float2 p_imageTexel, + texture2d p_kernel, float2 p_kernelTexel) + { + if (pixel_size % 2 == 0) { + float4 l_value = image.Sample(pointClampSampler, p_uv) + * kernel.Sample(pointClampSampler, float2(0, 0)).r; + float2 l_uvoffset = p_texel; + float2 l_koffset = p_kernelTexel; + for (int k = 1; k <= pixel_size; k++) { + float l_g = kernel.Sample(pointClampSampler, l_koffset).r; + float4 l_p = image.Sample(pointClampSampler, p_uv + l_uvoffset) * l_g; + float4 l_n = image.Sample(pointClampSampler, p_uv - l_uvoffset) * l_g; + l_value += l_p + l_n; + l_uvoffset += p_texel; + l_koffset += p_kernelTexel; + } + return l_value; + } else { + return InternalGaussianPrecalculated(p_uv, p_image, p_texel, pixel_size, p_kernel, p_kerneltexel);) + } +}*/ + +float4 PSGaussian(VertData vert_in) : TARGET +{ + + float4 color = image.Sample(pointClampSampler, vert_in.uv); + + float intensity = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + + return InternalGaussian(vert_in.uv, uv_offset, int(sqrt((uv_pixel_interval.x * uv_pixel_interval.x) + (uv_pixel_interval.y * uv_pixel_interval.y))), image, uv_scale); + + /* + return InternalGaussianPrecalculated( + vert_in.uv, u_texelDelta, u_radius, + image, imageTexel, + kernel, kernelTexel); + */ + + /* + return InternalGaussianPrecalculatedNVOptimize( + vert_in.uv, u_texelDelta, u_radius, + image, imageTexel, + kernel, kernelTexel); + */ +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vert_in); + pixel_shader = PSGaussian(vert_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGaussianBlurSimpleShader.ps1 b/Commands/Shaders/Get-OBSGaussianBlurSimpleShader.ps1 new file mode 100644 index 000000000..f1893e0dd --- /dev/null +++ b/Commands/Shaders/Get-OBSGaussianBlurSimpleShader.ps1 @@ -0,0 +1,249 @@ +function Get-OBSGaussianBlurSimpleShader { + +[Alias('Set-OBSGaussianBlurSimpleShader','Add-OBSGaussianBlurSimpleShader')] +param( +# Set the Strength of OBSGaussianBlurSimpleShader +[ComponentModel.DefaultBindingProperty('Strength')] +[Int32] +$Strength, +# Set the Mask_Left of OBSGaussianBlurSimpleShader +[Alias('Mask_Left')] +[ComponentModel.DefaultBindingProperty('Mask_Left')] +[Single] +$MaskLeft, +# Set the Mask_Right of OBSGaussianBlurSimpleShader +[Alias('Mask_Right')] +[ComponentModel.DefaultBindingProperty('Mask_Right')] +[Single] +$MaskRight, +# Set the Mask_Top of OBSGaussianBlurSimpleShader +[Alias('Mask_Top')] +[ComponentModel.DefaultBindingProperty('Mask_Top')] +[Single] +$MaskTop, +# Set the Mask_Bottom of OBSGaussianBlurSimpleShader +[Alias('Mask_Bottom')] +[ComponentModel.DefaultBindingProperty('Mask_Bottom')] +[Single] +$MaskBottom, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-blur-simple' +$ShaderNoun = 'OBSGaussianBlurSimpleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int Strength< + string label = "Strength (1)"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 25; + int step = 1; +> = 1.0; +uniform float Mask_Left< + string label = "Mask left (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Right< + string label = "Mask right (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Top< + string label = "Mask top (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Bottom< + string label = "Mask bottom (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +float4 mainImage(VertData v_in) : TARGET +{ + if(Strength <= 0) + return image.Sample(textureSampler, v_in.uv); + + if(Mask_Left + Mask_Right > 1.0){ + if(v_in.uv.x > Mask_Left || 1.0 - v_in.uv.x > Mask_Right ){ + return image.Sample(textureSampler, v_in.uv); + } + }else{ + if((v_in.uv.x > Mask_Left) && (1.0-v_in.uv.x > Mask_Right)){ + return image.Sample(textureSampler, v_in.uv); + } + } + if(Mask_Top + Mask_Bottom > 1.0){ + if(v_in.uv.y > Mask_Top || 1.0 - v_in.uv.y > Mask_Bottom){ + return image.Sample(textureSampler, v_in.uv); + } + }else { + if((v_in.uv.y > Mask_Top) && (1.0-v_in.uv.y > Mask_Bottom)){ + return image.Sample(textureSampler, v_in.uv); + } + } + + float Pi = 6.28318530718; // Pi*2 + + float Directions = float(Strength) * 4.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower) + float Quality = float(Strength); // BLUR QUALITY (Default 4.0 - More is better but slower) + float Size = float(Strength) * float(Strength); // BLUR SIZE (Radius) + + float4 c = image.Sample(textureSampler, v_in.uv); + float4 oc = c; + float transparent = oc.a; + int count = 1; + float samples = oc.a; + + // Blur calculations + [loop] for( float d=0.0; d 0.0) + c /= samples; + + c.a = transparent / count; + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGaussianExampleShader.ps1 b/Commands/Shaders/Get-OBSGaussianExampleShader.ps1 new file mode 100644 index 000000000..c86b5d333 --- /dev/null +++ b/Commands/Shaders/Get-OBSGaussianExampleShader.ps1 @@ -0,0 +1,378 @@ +function Get-OBSGaussianExampleShader { + +[Alias('Set-OBSGaussianExampleShader','Add-OBSGaussianExampleShader')] +param( +# Set the ViewProj of OBSGaussianExampleShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSGaussianExampleShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSGaussianExampleShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSGaussianExampleShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSGaussianExampleShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_size of OBSGaussianExampleShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the uv_pixel_interval of OBSGaussianExampleShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the initial_image of OBSGaussianExampleShader +[Alias('initial_image')] +[ComponentModel.DefaultBindingProperty('initial_image')] +[String] +$InitialImage, +# Set the before_image of OBSGaussianExampleShader +[Alias('before_image')] +[ComponentModel.DefaultBindingProperty('before_image')] +[String] +$BeforeImage, +# Set the after_image of OBSGaussianExampleShader +[Alias('after_image')] +[ComponentModel.DefaultBindingProperty('after_image')] +[String] +$AfterImage, +# Set the text_color of OBSGaussianExampleShader +[Alias('text_color')] +[ComponentModel.DefaultBindingProperty('text_color')] +[String] +$TextColor, +# Set the max_distance of OBSGaussianExampleShader +[Alias('max_distance')] +[ComponentModel.DefaultBindingProperty('max_distance')] +[Single] +$MaxDistance, +# Set the exp of OBSGaussianExampleShader +[ComponentModel.DefaultBindingProperty('exp')] +[Single] +$Exp, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-example' +$ShaderNoun = 'OBSGaussianExampleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_size; +uniform float2 uv_pixel_interval; + +/*-------------------------. +| :: Texture and sampler:: | +''-------------------------*/ + + +uniform texture2d initial_image; +sampler_state initial_sampler +{ + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; + texture2d = initial_image; +}; + +uniform texture2d before_image; +sampler_state before_sampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; + texture2d = before_image; +}; + +uniform texture2d after_image; +sampler_state after_sampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; + texture2d = after_image; +}; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +struct ColorData { + float4 initial_color : SV_TARGET0; + float4 before_color: SV_TARGET1; + float4 after_color : SV_TARGET2; +}; + +uniform float4 text_color; +uniform float max_distance; +uniform float exp; + +#define PI 3.141592653589793238462643383279502884197169399375105820974 + +VertData mainTransform(VertData v_in) +{ + VertData vert_out = v_in; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +float4 grayscale(float4 color) +{ + float grayscale = color.r * 0.3 + color.g * 0.59 + color.b * 0.11; + return float4(grayscale, grayscale, grayscale, color.a); +} + +float4 gaussian(VertData v_in, float angle) +{ + float rad = radians(angle); + float2 dir = float2(sin(rad), cos(rad)) * (uv_pixel_interval * max_distance); + float2 dir_2 = dir * 2.0; + float4 ret = image.Sample(textureSampler, v_in.uv) * 0.375; + + float4 px_away = image.Sample(textureSampler, v_in.uv + dir); + px_away += image.Sample(textureSampler, v_in.uv - dir); + px_away *= 0.25; + + float4 px_2_away = image.Sample(textureSampler, v_in.uv + dir_2); + px_2_away += image.Sample(textureSampler, v_in.uv + dir_2); + px_2_away *= 0.0625; + + return ret + px_away + px_2_away; +} + +ColorData setColorData(VertData v_in): SV_TARGET0 +{ + //string RenderTarget0 = "initial_image"; + ColorData cd;// = (ColorData)0; + cd.initial_color = image.Sample(textureSampler, v_in.uv); + cd.before_color = float4(0.0,0.0,1.0,1.0); + cd.after_color = float4(1.0,0.0,0.0,1.0); + return cd; +} + +float4 blurImageH(VertData v_in) : SV_TARGET1 +{ + //string RenderTarget1 = "before_image"; + //ColorData cd = (ColorData)0; + //cd.initial_color = image.Sample(textureSampler, v_in.uv); + //cd.before_color = float4(0.0,0.0,1.0,1.0);//gaussian(v_in, 0); + return float4(0.0,0.0,1.0,1.0); +} + +float4 blurImageV(VertData v_in) : SV_TARGET2 +{ + //string RenderTarget2 = "after_image"; + //ColorData cd = (ColorData)0; + //cd.after_color = float4(1.0,0.0,0.0,1.0); //gaussian(v_in, 90); + return float4(1.0,0.0,0.0,1.0); +} + +float4 mainImage(VertData v_in) : SV_TARGET0 +{ + float4 color; + ColorData cd;// = (ColorData)0; + + //cd.initial_color = initial_image.Sample(initial_sampler, v_in.uv); + //cd.before_color = before_image.Sample(before_sampler, v_in.uv); + cd.after_color = after_image.Sample(before_sampler, v_in.uv); + + if (max_distance <= 5) { + color = cd.before_color; + } + else { + color = cd.after_color;//image.Sample(textureSampler, v_in.uv); + } + + float4 gray = grayscale(color); + float4 gray_text = grayscale(text_color); + float d = distance(gray.rgb, gray_text.rgb); + if (d <= dot(max_distance, uv_pixel_interval.x * max_distance)){ + float d_c = pow(d*2, exp) / pow(2, exp); + d_c = sin(d_c * PI / 2); + d = pow(1.0 - sin(d * PI/4), exp); + + color.rgb = float3(d,d,d); + } + + return color; +} + +technique Draw +{ + pass pre + { + vertex_shader = mainTransform(v_in); + pixel_shader = setColorData(v_in); + } + + pass b0 + { + vertex_shader = mainTransform(v_in); + pixel_shader = blurImageH(v_in); + } + + pass b1 + { + vertex_shader = mainTransform(v_in); + pixel_shader = blurImageV(v_in); + } + + pass p0 + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } + +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGaussianSimpleShader.ps1 b/Commands/Shaders/Get-OBSGaussianSimpleShader.ps1 new file mode 100644 index 000000000..ce507bd09 --- /dev/null +++ b/Commands/Shaders/Get-OBSGaussianSimpleShader.ps1 @@ -0,0 +1,290 @@ +function Get-OBSGaussianSimpleShader { + +[Alias('Set-OBSGaussianSimpleShader','Add-OBSGaussianSimpleShader')] +param( +# Set the ViewProj of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSGaussianSimpleShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSGaussianSimpleShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSGaussianSimpleShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSGaussianSimpleShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSGaussianSimpleShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSGaussianSimpleShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSGaussianSimpleShader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSGaussianSimpleShader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSGaussianSimpleShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the samples of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('samples')] +[Int32] +$Samples, +# Set the LOD of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('LOD')] +[Int32] +$LOD, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-simple' +$ShaderNoun = 'OBSGaussianSimpleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Single-pass gaussian blur - fast shader modified by Charles Fettinger for use with obs-shaderfilter 7/2020 v.01 +// https://github.com/Oncorporation/obs-shaderfilter +// https://www.shadertoy.com/view/ltScRG Converted inspiration + +//Section to converting GLSL to HLSL - can delete +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp +#define iTime float + +/* +**Shaders have these variables pre loaded by the plugin** +**this section can be deleted** + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; +*/ + +// 16x acceleration of https://www.shadertoy.com/view/4tSyzy +// by applying gaussian at intermediate MIPmap level. + +uniform int samples< + string label = "Samples"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 25; + int step = 1; +> = 16; +uniform int LOD< + string label = "LOD"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 25; + int step = 1; +> = 2; // gaussian done on MIPmap at scale LOD + +float gaussian(vec2 i) +{ + float sigma = (float(samples) * .25); + return exp(-.5 * dot(i /= sigma, i)) / (6.28 * sigma * sigma); +} + +vec4 blur(vec2 U, vec2 scale) +{ + vec4 O = vec4(0,0,0,0); + int sLOD = (1 << LOD); // tile size = 2^LOD + int s = samples / sLOD; + + for (int i = 0; i < s * s; i++) + { + vec2 d = vec2(i % s, i / s) * float(sLOD) - float(samples) * 0.5; + O += gaussian(d) * image.SampleLevel(textureSampler, U + (scale * gaussian(d)), float(LOD)); + //O += gaussian(d) * image.Sample(textureSampler, U + i * d * float(LOD)); + //O += image.Sample(textureSampler, U + gaussian(d) * float(LOD)); + } + + return O / O.a; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 iResolution = uv_scale;//uv_size * uv_scale + uv_offset; + //float2 iResolution = 1 - v_in.uv + 1.0; + //float4 rgba = image.SampleLevel(textureSampler, v_in.uv * uv_scale + uv_offset,4.0); + return blur(v_in.uv / iResolution, 1.0 / iResolution); + //return rgba; +} + + + + + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGbCameraShader.ps1 b/Commands/Shaders/Get-OBSGbCameraShader.ps1 new file mode 100644 index 000000000..ad1d81f6f --- /dev/null +++ b/Commands/Shaders/Get-OBSGbCameraShader.ps1 @@ -0,0 +1,335 @@ +function Get-OBSGbCameraShader { + +[Alias('Set-OBSGbCameraShader','Add-OBSGbCameraShader')] +param( +# Set the pixelSize of OBSGbCameraShader +[ComponentModel.DefaultBindingProperty('pixelSize')] +[Single] +$PixelSize, +# Set the dither_factor of OBSGbCameraShader +[Alias('dither_factor')] +[ComponentModel.DefaultBindingProperty('dither_factor')] +[Single] +$DitherFactor, +# Set the alternative_bayer of OBSGbCameraShader +[Alias('alternative_bayer')] +[ComponentModel.DefaultBindingProperty('alternative_bayer')] +[Management.Automation.SwitchParameter] +$AlternativeBayer, +# Set the brightness of OBSGbCameraShader +[ComponentModel.DefaultBindingProperty('brightness')] +[Single] +$Brightness, +# Set the contrast of OBSGbCameraShader +[ComponentModel.DefaultBindingProperty('contrast')] +[Single] +$Contrast, +# Set the gamma of OBSGbCameraShader +[ComponentModel.DefaultBindingProperty('gamma')] +[Single] +$Gamma, +# Set the color_1 of OBSGbCameraShader +[Alias('color_1')] +[ComponentModel.DefaultBindingProperty('color_1')] +[String] +$Color1, +# Set the color_2 of OBSGbCameraShader +[Alias('color_2')] +[ComponentModel.DefaultBindingProperty('color_2')] +[String] +$Color2, +# Set the color_3 of OBSGbCameraShader +[Alias('color_3')] +[ComponentModel.DefaultBindingProperty('color_3')] +[String] +$Color3, +# Set the color_4 of OBSGbCameraShader +[Alias('color_4')] +[ComponentModel.DefaultBindingProperty('color_4')] +[String] +$Color4, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gb-camera' +$ShaderNoun = 'OBSGbCameraShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +/* + * ------------------------------------------------------------ + * "THE BEERWARE LICENSE" (Revision 42): + * maple wrote this code. As long as you retain this + * notice, you can do whatever you want with this stuff. If we + * meet someday, and you think this stuff is worth it, you can + * buy me a beer in return. + * ------------------------------------------------------------ + * from https://www.shadertoy.com/view/3tSXRh + * adopted for OBS by Exeldro + * ------------------------------------------------------------ + */ + +uniform float pixelSize< + string label = "Pixel Size"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 50.0; + float step = 0.1; +> = 3.0; + +uniform float dither_factor< + string label = "Dither Factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 0.8; + +uniform bool alternative_bayer; + +uniform float brightness< + string label = "Brightness"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; +uniform float contrast< + string label = "Contrast"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform float gamma< + string label = "Gamma"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 0.6; + +uniform float4 color_1 = {0.18, 0, 0.18, 1.0}; +uniform float4 color_2 = {0.37, 0.15, 0.47, 1.0}; +uniform float4 color_3 = {0.97, 0.56, 0.12, 1.0}; +uniform float4 color_4 = {0.97, 0.94, 0.53, 1.0}; + +// quantize coords to low resolution +float2 pixelize(float2 uv, float2 pixelSize) { + float2 factor = pixelSize / uv_size; + return floor(uv / factor) * factor; +} + +float3 colorLUT(float3 color) { + float gray = color.r*0.3 + color.g*0.59 + color.b*0.11; + if(gray < 0.25) + return color_1.rgb; + if(gray < 0.50) + return color_2.rgb; + if(gray < 0.75) + return color_3.rgb; + return color_4.rgb; +} + +// adjust brightness, contrast and gamma levels of a color +float3 levels(float3 color, float brightness, float contrast, float3 gamma) { + float3 value = (color - 0.5) * contrast + 0.5; + value = clamp(value + brightness, 0.0, 1.0); + return clamp(float3(pow(abs(value.r), gamma.x),pow(abs(value.g), gamma.y),pow(abs(value.b), gamma.z)), 0.0, 1.0); +} +float3 levels(float3 color, float brightness, float contrast, float gamma) { + return levels(color, brightness, contrast, float3(gamma, gamma, gamma)); +} + +// applies the dithering filter to a color map +float3 dither8x8(float2 coord, float3 color, float2 pixelSize) { + // reduces pixel space to the selected pixel size + float2 pixelCoord = floor((coord * uv_size) / pixelSize + float2(0.5, 0.5)); + + // applies the bayer matrix filter to the color map + pixelCoord = pixelCoord - 8.0 * floor(pixelCoord/8.0); + int index = int(pixelCoord.x + (pixelCoord.y * 8.0)); + float bayer; + if (alternative_bayer){ +#ifdef OPENGL + const int[64] bayer8 = int[64]( +#else + const int bayer8[64] = { +#endif + 0, 32, 8, 40, 2, 34, 10, 42, /* 8x8 Bayer ordered dithering */ + 48, 16, 56, 24, 50, 18, 58, 26, /* pattern. Each input pixel */ + 12, 44, 4, 36, 14, 46, 6, 38, /* is scaled to the 0..63 range */ + 60, 28, 52, 20, 62, 30, 54, 22, /* before looking in this table */ + 3, 35, 11, 43, 1, 33, 9, 41, /* to determine the action. */ + 51, 19, 59, 27, 49, 17, 57, 25, + 15, 47, 7, 39, 13, 45, 5, 37, + 63, 31, 55, 23, 61, 29, 53, 21 +#ifdef OPENGL + ); +#else + }; +#endif + bayer = (bayer8[index]-31.0)/32.0; + } else { +#ifdef OPENGL + const int[64] bayer8 = int[64]( +#else + const int bayer8[64] = { +#endif + 0, 48, 12, 60, 3, 51, 15, 63, + 32, 16, 44, 28, 35, 19, 47, 31, + 8, 56, 4, 52, 11, 59, 7, 55, + 40, 24, 36, 20, 43, 27, 39, 23, + 2, 50, 14, 62, 1, 49, 13, 61, + 34, 18, 46, 30, 33, 17, 45, 29, + 10, 58, 6, 54, 9, 57, 5, 53, + 42, 26, 38, 22, 41, 25, 37, 21 +#ifdef OPENGL + ); +#else + }; +#endif + bayer = (bayer8[index]-31.0)/32.0; + } + float3 bayerColor = (color + float3(bayer,bayer,bayer) * (dither_factor / 8.0)); + // limits it to the selected palette + color = colorLUT(bayerColor); + + return color; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 texcoord = pixelize(v_in.uv, float2(pixelSize,pixelSize)); + texcoord = clamp(texcoord, 0.001, 1.0); + float4 c = image.Sample(textureSampler, texcoord); + float3 color = c.rgb; + + color = levels(color, brightness, contrast, float3(gamma, gamma, gamma)); + + color = dither8x8(texcoord, color, float2(pixelSize,pixelSize)); + + return float4(color.r, color.g, color.b, c.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGlassShader.ps1 b/Commands/Shaders/Get-OBSGlassShader.ps1 new file mode 100644 index 000000000..cca9236f7 --- /dev/null +++ b/Commands/Shaders/Get-OBSGlassShader.ps1 @@ -0,0 +1,267 @@ +function Get-OBSGlassShader { + +[Alias('Set-OBSGlassShader','Add-OBSGlassShader')] +param( +# Set the Alpha_Percent of OBSGlassShader +[Alias('Alpha_Percent')] +[ComponentModel.DefaultBindingProperty('Alpha_Percent')] +[Single] +$AlphaPercent, +# Set the Offset_Amount of OBSGlassShader +[Alias('Offset_Amount')] +[ComponentModel.DefaultBindingProperty('Offset_Amount')] +[Single] +$OffsetAmount, +# Set the xSize of OBSGlassShader +[ComponentModel.DefaultBindingProperty('xSize')] +[Int32] +$XSize, +# Set the ySize of OBSGlassShader +[ComponentModel.DefaultBindingProperty('ySize')] +[Int32] +$YSize, +# Set the Reflection_Offset of OBSGlassShader +[Alias('Reflection_Offset')] +[ComponentModel.DefaultBindingProperty('Reflection_Offset')] +[Int32] +$ReflectionOffset, +# Set the Horizontal_Border of OBSGlassShader +[Alias('Horizontal_Border')] +[ComponentModel.DefaultBindingProperty('Horizontal_Border')] +[Management.Automation.SwitchParameter] +$HorizontalBorder, +# Set the Border_Offset of OBSGlassShader +[Alias('Border_Offset')] +[ComponentModel.DefaultBindingProperty('Border_Offset')] +[Single] +$BorderOffset, +# Set the Border_Color of OBSGlassShader +[Alias('Border_Color')] +[ComponentModel.DefaultBindingProperty('Border_Color')] +[String] +$BorderColor, +# Set the Glass_Color of OBSGlassShader +[Alias('Glass_Color')] +[ComponentModel.DefaultBindingProperty('Glass_Color')] +[String] +$GlassColor, +# Set the notes of OBSGlassShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'glass' +$ShaderNoun = 'OBSGlassShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Glass shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGl by Q-mii & Exeldro February 25, 2022 +uniform float Alpha_Percent< + string label = "Alpha Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; +uniform float Offset_Amount< + string label = "Offset Amount"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 0.8; +uniform int xSize< + string label = "x Size"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 100; + int step = 1; +> = 8; +uniform int ySize< + string label = "y Size"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 100; + int step = 1; +> = 8; +uniform int Reflection_Offset< + string label = "Reflection Offset"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 2; +uniform bool Horizontal_Border; +uniform float Border_Offset< + string label = "Border Offset"; + string widget_type = "slider"; + float minimum = -0.01; + float maximum = 1.01; + float step = 0.01; +> = 0.5; +uniform float4 Border_Color = {.8,.5,1.0,1.0}; +uniform float4 Glass_Color; +uniform string notes< + string widget_type = "info"; +> = "xSize, ySize are for distortion. Offset Amount and Reflection Offset change glass properties. Alpha is Opacity of overlay."; + +float mod(float a, float b){ + float d = a / b; + return (d-floor(d))*b; +} + +float4 mainImage(VertData v_in) : TARGET +{ + + + int xSubPixel = int(mod((v_in.uv.x * uv_size.x) , float(clamp(xSize,1,100)))); + int ySubPixel = int(mod((v_in.uv.y * uv_size.y) , float(clamp(ySize,1,100)))); + float2 offsets = float2(Offset_Amount * xSubPixel / uv_size.x, Offset_Amount * ySubPixel / uv_size.y); + float2 uv = v_in.uv + offsets; + float2 uv2 = float2(uv.x + (Reflection_Offset / uv_size.x),uv.y + (Reflection_Offset / uv_size.y)); + + float4 rgba = image.Sample(textureSampler, v_in.uv); + float4 rgba_output = float4(rgba.rgb * Border_Color.rgb, rgba.a); + rgba = image.Sample(textureSampler, uv); + float4 rgba_glass = image.Sample(textureSampler, uv2); + + float uv_compare = v_in.uv.x; + if (Horizontal_Border) + uv_compare = v_in.uv.y; + + if (uv_compare < (Border_Offset - 0.005)) + { + rgba_output = (rgba + rgba_glass) *.5 * Glass_Color; + } + else if (uv_compare >= (Border_Offset + 0.005)) + { + rgba_output = image.Sample(textureSampler, v_in.uv); + } + return lerp(rgba,rgba_output,(Alpha_Percent * 0.01)); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGlitchAnalogShader.ps1 b/Commands/Shaders/Get-OBSGlitchAnalogShader.ps1 new file mode 100644 index 000000000..1b010fb76 --- /dev/null +++ b/Commands/Shaders/Get-OBSGlitchAnalogShader.ps1 @@ -0,0 +1,352 @@ +function Get-OBSGlitchAnalogShader { + +[Alias('Set-OBSGlitchAnalogShader','Add-OBSGlitchAnalogShader')] +param( +# Set the scan_line_jitter_displacement of OBSGlitchAnalogShader +[Alias('scan_line_jitter_displacement')] +[ComponentModel.DefaultBindingProperty('scan_line_jitter_displacement')] +[Single] +$ScanLineJitterDisplacement, +# Set the scan_line_jitter_threshold_percent of OBSGlitchAnalogShader +[Alias('scan_line_jitter_threshold_percent')] +[ComponentModel.DefaultBindingProperty('scan_line_jitter_threshold_percent')] +[Int32] +$ScanLineJitterThresholdPercent, +# Set the vertical_jump_amount of OBSGlitchAnalogShader +[Alias('vertical_jump_amount')] +[ComponentModel.DefaultBindingProperty('vertical_jump_amount')] +[Single] +$VerticalJumpAmount, +# Set the vertical_speed of OBSGlitchAnalogShader +[Alias('vertical_speed')] +[ComponentModel.DefaultBindingProperty('vertical_speed')] +[Single] +$VerticalSpeed, +# Set the horizontal_shake of OBSGlitchAnalogShader +[Alias('horizontal_shake')] +[ComponentModel.DefaultBindingProperty('horizontal_shake')] +[Single] +$HorizontalShake, +# Set the color_drift_amount of OBSGlitchAnalogShader +[Alias('color_drift_amount')] +[ComponentModel.DefaultBindingProperty('color_drift_amount')] +[Single] +$ColorDriftAmount, +# Set the color_drift_speed of OBSGlitchAnalogShader +[Alias('color_drift_speed')] +[ComponentModel.DefaultBindingProperty('color_drift_speed')] +[Single] +$ColorDriftSpeed, +# Set the pulse_speed_percent of OBSGlitchAnalogShader +[Alias('pulse_speed_percent')] +[ComponentModel.DefaultBindingProperty('pulse_speed_percent')] +[Int32] +$PulseSpeedPercent, +# Set the alpha_percent of OBSGlitchAnalogShader +[Alias('alpha_percent')] +[ComponentModel.DefaultBindingProperty('alpha_percent')] +[Int32] +$AlphaPercent, +# Set the rotate_colors of OBSGlitchAnalogShader +[Alias('rotate_colors')] +[ComponentModel.DefaultBindingProperty('rotate_colors')] +[Management.Automation.SwitchParameter] +$RotateColors, +# Set the Apply_To_Alpha_Layer of OBSGlitchAnalogShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the Replace_Image_Color of OBSGlitchAnalogShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Apply_To_Specific_Color of OBSGlitchAnalogShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSGlitchAnalogShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the notes of OBSGlitchAnalogShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'glitch_analog' +$ShaderNoun = 'OBSGlitchAnalogShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// analog glitch shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float scan_line_jitter_displacement< + string label = "Scan line jitter"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 33.0; // (displacement, threshold) +uniform int scan_line_jitter_threshold_percent< + string label = "scan line jitter threshold percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 95; +uniform float vertical_jump_amount< + string label = "Vertical jump amount"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>; +uniform float vertical_speed< + string label = "Vertical speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>;// (amount, speed) +uniform float horizontal_shake< + string label = "Horizontal shake"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>; +uniform float color_drift_amount< + string label = "Color drift amount"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>; +uniform float color_drift_speed< + string label = "Color drift speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>;// (amount, speed) +uniform int pulse_speed_percent< + string label = "Pulse speed percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform int alpha_percent< + string label = "Aplha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform bool rotate_colors; +uniform bool Apply_To_Alpha_Layer = false; +uniform bool Replace_Image_Color; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform string notes< + string widget_type = "info"; +> ="play with settings!"; + + +float nrand(float x, float y) +{ + float value = dot(float2(x, y), float2(12.9898 , 78.233 )); + return frac(sin(value) * 43758.5453); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float speed = pulse_speed_percent * 0.01; + float alpha = alpha_percent * 0.01; + float scan_line_jitter_threshold = scan_line_jitter_threshold_percent * 0.01; + float u = v_in.uv.x; + float v = v_in.uv.y; + float t = sin(elapsed_time * speed) * 2 - 1; + float4 rgba = image.Sample(textureSampler, v_in.uv); + + // Scan line jitter + float jitter = nrand(v, t) * 2 - 1; + jitter *= step(scan_line_jitter_threshold, abs(jitter)) * scan_line_jitter_displacement; + + // Vertical jump + float jump = lerp(v, frac(v + (t * vertical_speed)), vertical_jump_amount); + + // Horizontal shake + float shake = ((t * (u + rand_f)/2) - 0.5) * horizontal_shake; + + //// Color drift + float drift = sin(jump + color_drift_speed) * color_drift_amount; + + float2 src1 = float2(rgba.x, rgba.z) * clamp(frac(float2(u + jitter + shake, jump)), -10.0, 10.0); + float2 src2 = float2(rgba.y, rgba.w) * frac(float2(u + jitter + shake + drift, jump)); + + if(rotate_colors) + { + // get general time number between 0 and 4 + float tx = (t + 1) * 2; + // 3 steps c1->c2, c2->c3, c3->c1 + //when between 0 - 1 only c1 rises then falls + //(min(tx, 2.0) * 0.5) range between 0-2 converted to 0-1-0 + src1.x = lerp(src1.x, rgba.x, clamp((min(tx, 2.0) * 0.5),0.0,0.5)); + //((min(max(1.0, tx),3.0) - 1) * 0.5) range between 1-3 converted to 0-1-0 + src2.x = lerp(src2.x, rgba.y, clamp(((min(max(1.0, tx),3.0) - 1) * 0.5),0.0,0.5)); + //((min(2.0, tx) -2) * 0.5) range between 2 and 4 converted to 0-1-0 + src1.y = lerp(src1.y, rgba.z, clamp(((min(2.0, tx) -2) * 0.5),0.0,0.5)); + + } + + float4 color = rgba; + float4 original_color = color; + rgba = float4(src1.x, src2.x, src1.y, alpha); + + if (Apply_To_Alpha_Layer) + { + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, rgba * color, alpha); + } + + if (Apply_To_Specific_Color) + { + color = original_color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, alpha); + } + + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGlitchShader.ps1 b/Commands/Shaders/Get-OBSGlitchShader.ps1 new file mode 100644 index 000000000..7076f5474 --- /dev/null +++ b/Commands/Shaders/Get-OBSGlitchShader.ps1 @@ -0,0 +1,213 @@ +function Get-OBSGlitchShader { + +[Alias('Set-OBSGlitchShader','Add-OBSGlitchShader')] +param( +# Set the AMT of OBSGlitchShader +[ComponentModel.DefaultBindingProperty('AMT')] +[Single] +$AMT, +# Set the SPEED of OBSGlitchShader +[ComponentModel.DefaultBindingProperty('SPEED')] +[Single] +$SPEED, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'glitch' +$ShaderNoun = 'OBSGlitchShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/MtXBDs +//inputs +uniform float AMT< + string label = "AMT"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.2; //0 - 1 glitch amount +uniform float SPEED< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; //0 - 1 speed + +//2D (returns 0 - 1) +float random2d(float2 n) { + return frac(sin(dot(n, float2(12.9898, 4.1414))) * 43758.5453); +} + +float randomRange (in float2 seed, in float min, in float max) { + return min + random2d(seed) * (max - min); +} + +// return 1 if v inside 1d range +float insideRange(float v, float bottom, float top) { + return step(bottom, v) - step(top, v); +} + + + +float4 mainImage(VertData v_in) : TARGET +{ + + float time = floor(elapsed_time * SPEED * 60.0); + float2 uv = v_in.uv; + + //copy orig + float4 outCol = image.Sample(textureSampler, uv); + + //randomly offset slices horizontally + float maxOffset = AMT/2.0; + for (float i = 0.0; i < 10.0 * AMT; i += 1.0) { + float sliceY = random2d(float2(time , 2345.0 + float(i))); + float sliceH = random2d(float2(time , 9035.0 + float(i))) * 0.25; + float hOffset = randomRange(float2(time , 9625.0 + float(i)), -maxOffset, maxOffset); + float2 uvOff = uv; + uvOff.x += hOffset; + if (insideRange(uv.y, sliceY, frac(sliceY+sliceH)) == 1.0 ){ + outCol = image.Sample(textureSampler, uvOff); + } + } + + //do slight offset on one entire channel + float maxColOffset = AMT/6.0; + float rnd = random2d(float2(time , 9545.0)); + float2 colOffset = float2(randomRange(float2(time , 9545.0),-maxColOffset,maxColOffset), + randomRange(float2(time , 7205.0),-maxColOffset,maxColOffset)); + if (rnd < 0.33){ + outCol.r = image.Sample(textureSampler, uv + colOffset).r; + + }else if (rnd < 0.66){ + outCol.g = image.Sample(textureSampler, uv + colOffset).g; + + } else{ + outCol.b = image.Sample(textureSampler, uv + colOffset).b; + } + + return outCol; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGlowShader.ps1 b/Commands/Shaders/Get-OBSGlowShader.ps1 new file mode 100644 index 000000000..3ad136f79 --- /dev/null +++ b/Commands/Shaders/Get-OBSGlowShader.ps1 @@ -0,0 +1,260 @@ +function Get-OBSGlowShader { + +[Alias('Set-OBSGlowShader','Add-OBSGlowShader')] +param( +# Set the glow_percent of OBSGlowShader +[Alias('glow_percent')] +[ComponentModel.DefaultBindingProperty('glow_percent')] +[Int32] +$GlowPercent, +# Set the blur of OBSGlowShader +[ComponentModel.DefaultBindingProperty('blur')] +[Int32] +$Blur, +# Set the min_brightness of OBSGlowShader +[Alias('min_brightness')] +[ComponentModel.DefaultBindingProperty('min_brightness')] +[Int32] +$MinBrightness, +# Set the max_brightness of OBSGlowShader +[Alias('max_brightness')] +[ComponentModel.DefaultBindingProperty('max_brightness')] +[Int32] +$MaxBrightness, +# Set the pulse_speed of OBSGlowShader +[Alias('pulse_speed')] +[ComponentModel.DefaultBindingProperty('pulse_speed')] +[Int32] +$PulseSpeed, +# Set the ease of OBSGlowShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the notes of OBSGlowShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'glow' +$ShaderNoun = 'OBSGlowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Exeldro February 21, 2022 +uniform int glow_percent< + string label = "Glow percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 10; +uniform int blur< + string label = "Blur"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 1; +uniform int min_brightness< + string label = "Min brightness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 27; +uniform int max_brightness< + string label = "Max brightness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform int pulse_speed< + string label = "Pulse speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform bool ease; +uniform string notes< + string widget_type = "info"; +> = "''ease'' - makes the animation pause at the begin and end for a moment,''glow_percent'' - how much brightness to add (recommend 0-100). ''blur'' - how far should the glow extend (recommend 1-4).''pulse_speed'' - (0-100). ''min/max brightness'' - floor and ceiling brightness level to target for glows."; + + +float EaseInOutCircTimer(float t,float b,float c,float d){ + t /= d/2.0; + if (t < 1.0) return -c/2.0 * (sqrt(1.0 - t*t) - 1.0) + b; + t -= 2.0; + return c/2.0 * (sqrt(1.0 - t*t) + 1.0) + b; +} + +float BlurStyler(float t,float b,float c,float d,bool ease) +{ + if (ease) return EaseInOutCircTimer(t,0.0,c,d); + return t; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 offsets[4]; + offsets[0] = float2(-0.1, 0.125); + offsets[1] = float2(-0.1, -0.125); + offsets[2] = float2(0.1, -0.125); + offsets[3] = float2(0.1, 0.125); + + // convert input for vector math + float4 col = image.Sample(textureSampler, v_in.uv); + float blur_amount = float(blur) /100.0; + float glow_amount = float(glow_percent) * 0.01; + float speed = float(pulse_speed) * 0.01; + float luminance_floor = float(min_brightness) /100.0; + float luminance_ceiling = float(max_brightness) /100.0; + + if (col.a > 0.0) + { + //circular easing variable + float t = 1.0 + sin(elapsed_time * speed); + float b = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + // simple glow calc + for (int n = 0; n < 4; n++) { + b = BlurStyler(t, 0, c, d, ease); + float4 ncolor = image.Sample(textureSampler, v_in.uv + (blur_amount * b) * offsets[n]); + float intensity = ncolor.r * 0.299 + ncolor.g * 0.587 + ncolor.b * 0.114; + if ((intensity >= luminance_floor) && (intensity <= luminance_ceiling)) + { + ncolor.a = clamp(ncolor.a * glow_amount, 0.0, 1.0); + col += (ncolor * (glow_amount * b)); + } + } + } + return col; + +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSGradientShader.ps1 b/Commands/Shaders/Get-OBSGradientShader.ps1 new file mode 100644 index 000000000..78c997150 --- /dev/null +++ b/Commands/Shaders/Get-OBSGradientShader.ps1 @@ -0,0 +1,418 @@ +function Get-OBSGradientShader { + +[Alias('Set-OBSGradientShader','Add-OBSGradientShader')] +param( +# Set the start_color of OBSGradientShader +[Alias('start_color')] +[ComponentModel.DefaultBindingProperty('start_color')] +[String] +$StartColor, +# Set the start_step of OBSGradientShader +[Alias('start_step')] +[ComponentModel.DefaultBindingProperty('start_step')] +[Single] +$StartStep, +# Set the middle_color of OBSGradientShader +[Alias('middle_color')] +[ComponentModel.DefaultBindingProperty('middle_color')] +[String] +$MiddleColor, +# Set the middle_step of OBSGradientShader +[Alias('middle_step')] +[ComponentModel.DefaultBindingProperty('middle_step')] +[Single] +$MiddleStep, +# Set the end_color of OBSGradientShader +[Alias('end_color')] +[ComponentModel.DefaultBindingProperty('end_color')] +[String] +$EndColor, +# Set the end_step of OBSGradientShader +[Alias('end_step')] +[ComponentModel.DefaultBindingProperty('end_step')] +[Single] +$EndStep, +# Set the alpha_percent of OBSGradientShader +[Alias('alpha_percent')] +[ComponentModel.DefaultBindingProperty('alpha_percent')] +[Int32] +$AlphaPercent, +# Set the pulse_speed of OBSGradientShader +[Alias('pulse_speed')] +[ComponentModel.DefaultBindingProperty('pulse_speed')] +[Int32] +$PulseSpeed, +# Set the ease of OBSGradientShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the rotate_colors of OBSGradientShader +[Alias('rotate_colors')] +[ComponentModel.DefaultBindingProperty('rotate_colors')] +[Management.Automation.SwitchParameter] +$RotateColors, +# Set the Apply_To_Alpha_Layer of OBSGradientShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the Apply_To_Specific_Color of OBSGradientShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSGradientShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the horizontal of OBSGradientShader +[ComponentModel.DefaultBindingProperty('horizontal')] +[Management.Automation.SwitchParameter] +$Horizontal, +# Set the vertical of OBSGradientShader +[ComponentModel.DefaultBindingProperty('vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# Set the gradient_center_width_percentage of OBSGradientShader +[Alias('gradient_center_width_percentage')] +[ComponentModel.DefaultBindingProperty('gradient_center_width_percentage')] +[Int32] +$GradientCenterWidthPercentage, +# Set the gradient_center_height_percentage of OBSGradientShader +[Alias('gradient_center_height_percentage')] +[ComponentModel.DefaultBindingProperty('gradient_center_height_percentage')] +[Int32] +$GradientCenterHeightPercentage, +# Set the notes of OBSGradientShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gradient' +$ShaderNoun = 'OBSGradientShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// gradient shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform float4 start_color = { 0.1, 0.3, 0.1, 1.0 }; +uniform float start_step< + string label = "Start step"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.15; +uniform float4 middle_color = { 1.0, 1.0, 1.0, 1.0 }; +uniform float middle_step< + string label = "Middle step"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.4; +uniform float4 end_color = { 0.75, 0.75, 0.75, 1.0}; +uniform float end_step< + string label = "End step"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform int alpha_percent< + string label = "Alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 90; +uniform int pulse_speed< + string label = "Pulse speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform bool ease; +uniform bool rotate_colors; +uniform bool Apply_To_Alpha_Layer = true; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform bool horizontal; +uniform bool vertical; +uniform int gradient_center_width_percentage< + string label = "gradient center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int gradient_center_height_percentage< + string label = "gradient center height percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform string notes< + string widget_type = "info"; +> = "gradient center items will change the center location. Pulse Speed greater than 0 will animate. Easing seem to be too fast."; + +float EaseInOutCircTimer(float t, float b, float c, float d) { + t /= d / 2; + if (t < 1) return -c / 2 * (sqrt(1 - t * t) - 1) + b; + t -= 2; + return c / 2 * (sqrt(1 - t * t) + 1) + b; +} + +float BlurStyler(float t, float b, float c, float d, bool ease) +{ + if (ease) return EaseInOutCircTimer(t, 0, c, d); + return t; +} + +struct gradient +{ + float4 color; + float step; +}; + + +float4 mainImage(VertData v_in) : TARGET +{ + const float PI = 3.14159265f;//acos(-1); + float speed = float(pulse_speed) * 0.01; + float alpha = float(alpha_percent) * 0.01; + + //circular easing variable + float t = sin(elapsed_time * speed) * 2 - 1; + float b = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + float2 gradient_center = float2(float(gradient_center_width_percentage) * 0.01,float(gradient_center_height_percentage) * 0.01); + float4 color = image.Sample(textureSampler, v_in.uv); + float luminance = color.a * 0.299 + color.g * 0.587 + color.b * 0.114; + float4 gray = float4(luminance,luminance,luminance, 1); + + // skip if (alpha is zero and only apply to alpha layer is true) + if (!(color.a <= 0.0 && Apply_To_Alpha_Layer == true)) + { + b = BlurStyler(t, 0, c, d, ease); + + const int no_colors = 3; + float4 s_color = start_color; + float4 m_color = middle_color; + float4 e_color = end_color; + + if (rotate_colors) + { + // get general time number between 0 and 4 + float tx = (b + 1) * 2; + // 3 steps c1->c2, c2->c3, c3->c1 + //when between 0 - 1 only c1 rises then falls + + if (tx <= 2.0) + { + s_color = lerp(start_color, middle_color, clamp((min(tx, 2.0) * 0.5) * 2, 0.0, 1.0)); + m_color = lerp(middle_color, end_color, clamp((min(tx, 2.0) * 0.5) * 2, 0.0, 1.0)); + e_color = lerp(end_color, start_color, clamp((min(tx, 2.0) * 0.5) * 2, 0.0, 1.0)); + } + + if ((tx >= 1.0) && (tx <= 3.0)) + { + s_color = lerp(middle_color, end_color, clamp(((min(max(1.0, tx), 3.0) - 1) * 0.5) * 2, 0.0, 1.0)); + m_color = lerp(end_color, start_color, clamp(((min(max(1.0, tx), 3.0) - 1) * 0.5) * 2, 0.0, 1.0)); + e_color = lerp(start_color, middle_color, clamp(((min(max(1.0, tx), 3.0) - 1) * 0.5) * 2, 0.0, 1.0)); + } + + if (tx >= 2.0) + { + s_color = lerp(end_color, start_color, clamp(((min(2.0, tx) - 2) * 0.5) * 2, 0.0, 1.0)); + m_color = lerp(start_color, middle_color, clamp(((min(2.0, tx) - 2) * 0.5) * 2, 0.0, 1.0)); + e_color = lerp(middle_color, end_color, clamp(((min(2.0, tx) - 2) * 0.5) * 2, 0.0, 1.0)); + } + + if (tx < 0) + { + s_color = lerp(end_color, start_color, clamp(abs(max(1.0, tx)) * 2, 0.0, 1.0)); + m_color = lerp(start_color, middle_color, clamp(abs(max(1.0, tx)) * 2, 0.0, 1.0)); + e_color = lerp(middle_color, end_color, clamp(abs(max(1.0, tx)) * 2, 0.0, 1.0)); + } + } + + float4 colors[no_colors]; + colors[0] =s_color; + colors[1] = m_color; + colors[2] = e_color; + float step[no_colors]; + step[0] = start_step; + step[1] = middle_step; + step[2] = end_step; + + float redness = max(min(color.r - color.g, color.r - color.b) / color.r, 0); + float greenness = max(min(color.g - color.r, color.g - color.b) / color.g, 0); + float blueness = max(min(color.b - color.r, color.b - color.g) / color.b, 0); + + float dist = distance(v_in.uv, gradient_center); + if (horizontal && (vertical == false)) + { + dist = distance(v_in.uv.y, gradient_center.y); + } + if (vertical && (horizontal == false)) + { + dist = distance(v_in.uv.x, gradient_center.x); + } + + float4 col = colors[0]; + for (int i = 1; i < no_colors; ++i) { + col = lerp(col, colors[i], smoothstep(step[i - 1], step[i], dist)); + } + col.a = clamp(alpha, 0.0, 1.0); + if (Apply_To_Alpha_Layer == false) + color.a = alpha; + if (Apply_To_Specific_Color) + { + col.a = alpha; + float4 original_color = image.Sample(textureSampler, v_in.uv); + col.rgb = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? col.rgb : original_color.rgb; + } + // result = float4(redness, greenness,blueness,1); + //color *= float4(col.r, col.g, col.b, clamp(dot(color, luminance)* alpha, 0.0, 1.0)); + //color.rgb += col * alpha; + //color.a += clamp(1.0 - alpha, 0.0,1.0); + ///color.rgb *= (color.rgb * clamp(1.0- alpha, 0.0, 1.0)) + (col.rgb * clamp(alpha, 0.0, 1.0)); + //color = float4(max(color.r, col.r), max(color.g, col.g), max(color.b, col.b), clamp(dot(color, luminance) * alpha, 0.0, 1.0)); + color.rgb = lerp(color.rgb, col.rgb, clamp(alpha, 0.0, 1.0)); + + } + return color; + + +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSHalftoneShader.ps1 b/Commands/Shaders/Get-OBSHalftoneShader.ps1 new file mode 100644 index 000000000..96b92e761 --- /dev/null +++ b/Commands/Shaders/Get-OBSHalftoneShader.ps1 @@ -0,0 +1,191 @@ +function Get-OBSHalftoneShader { + +[Alias('Set-OBSHalftoneShader','Add-OBSHalftoneShader')] +param( +# Set the threshold of OBSHalftoneShader +[ComponentModel.DefaultBindingProperty('threshold')] +[Single] +$Threshold, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'halftone' +$ShaderNoun = 'OBSHalftoneShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.1415926535897932384626433832795 +#define PI180 float(PI / 180.0) + +uniform float threshold< + string label = "Threshold"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.6; + +float sind(float a) +{ + return sin(a * PI180); +} + +float cosd(float a) +{ + return cos(a * PI180); +} + +float added(float2 sh, float sa, float ca, float2 c, float d) +{ + return 0.5 + 0.25 * cos((sh.x * sa + sh.y * ca + c.x) * d) + 0.25 * cos((sh.x * ca - sh.y * sa + c.y) * d); +} + +float4 mainImage(VertData v_in) : TARGET +{ + // Halftone dot matrix shader + // @author Tomek Augustyn 2010 + + // Ported from my old PixelBender experiment + // https://github.com/og2t/HiSlope/blob/master/src/hislope/pbk/fx/halftone/Halftone.pbk + + float coordX = v_in.uv.x; + float coordY = v_in.uv.y; + float2 dstCoord = float2(coordX, coordY); + float2 rotationCenter = float2(0.5, 0.5); + float2 shift = dstCoord - rotationCenter; + + float dotSize = 3.0; + float angle = 45.0; + + float rasterPattern = added(shift, sind(angle), cosd(angle), rotationCenter, PI / dotSize * 680.0); + float4 srcPixel = image.Sample(textureSampler, dstCoord); + + float avg = 0.2125 * srcPixel.r + 0.7154 * srcPixel.g + 0.0721 * srcPixel.b; + float gray = (rasterPattern * threshold + avg - threshold) / (1.0 - threshold); + + // uncomment to see how the raster pattern looks + // gray = rasterPattern; + + return float4(gray, gray, gray, 1.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSHeatWaveSimpleShader.ps1 b/Commands/Shaders/Get-OBSHeatWaveSimpleShader.ps1 new file mode 100644 index 000000000..3575df0ba --- /dev/null +++ b/Commands/Shaders/Get-OBSHeatWaveSimpleShader.ps1 @@ -0,0 +1,212 @@ +function Get-OBSHeatWaveSimpleShader { + +[Alias('Set-OBSHeatWaveSimpleShader','Add-OBSHeatWaveSimpleShader')] +param( +# Set the Rate of OBSHeatWaveSimpleShader +[ComponentModel.DefaultBindingProperty('Rate')] +[Single] +$Rate, +# Set the Strength of OBSHeatWaveSimpleShader +[ComponentModel.DefaultBindingProperty('Strength')] +[Single] +$Strength, +# Set the Distortion of OBSHeatWaveSimpleShader +[ComponentModel.DefaultBindingProperty('Distortion')] +[Single] +$Distortion, +# Set the Opacity of OBSHeatWaveSimpleShader +[ComponentModel.DefaultBindingProperty('Opacity')] +[Single] +$Opacity, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'heat-wave-simple' +$ShaderNoun = 'OBSHeatWaveSimpleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Heat Wave Simple, Version 0.03, for OBS Shaderfilter +// Copyright ©️ 2022 by SkeletonBow +// License: GNU General Public License, version 2 +// +// Contact info: +// Twitter: +// Twitch: +// +// Description: +// Generate a crude pseudo heat wave displacement on an image source. +// +// Based on: https://www.shadertoy.com/view/td3GRn by Dombass +// +// Changelog: +// 0.03 - Added Opacity control +// 0.02 - Added crude Rate, Strength, and Distortion controls +// 0.01 - Initial release + +uniform float Rate< + string label = "Rate"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 5.0; +uniform float Strength< + string label = "Strength"; + string widget_type = "slider"; + float minimum = -25.0; + float maximum = 25.0; + float step = 0.01; +> = 1.0; +uniform float Distortion< + string label = "Distortion"; + string widget_type = "slider"; + float minimum = 3.0; + float maximum = 20.0; + float step = 0.01; +> = 10.0; +uniform float Opacity< + string label = "Opacity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100.00; + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float distort = clamp(Distortion, 3.0, 20.0); + + // Time varying pixel color + float jacked_time = Rate*elapsed_time; + float2 scale = float2(0.5, 0.5); + float str = clamp(Strength, -25.0, 25.0) * 0.01; + + uv += str * sin(scale*jacked_time + length( uv ) * distort); + float4 c = image.Sample( textureSampler, uv); + c.a *= saturate(Opacity*0.01); + return c; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSHexagonShader.ps1 b/Commands/Shaders/Get-OBSHexagonShader.ps1 new file mode 100644 index 000000000..229b5d808 --- /dev/null +++ b/Commands/Shaders/Get-OBSHexagonShader.ps1 @@ -0,0 +1,321 @@ +function Get-OBSHexagonShader { + +[Alias('Set-OBSHexagonShader','Add-OBSHexagonShader')] +param( +# Set the Hex_Color of OBSHexagonShader +[Alias('Hex_Color')] +[ComponentModel.DefaultBindingProperty('Hex_Color')] +[String] +$HexColor, +# Set the Alpha_Percent of OBSHexagonShader +[Alias('Alpha_Percent')] +[ComponentModel.DefaultBindingProperty('Alpha_Percent')] +[Int32] +$AlphaPercent, +# Set the Quantity of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('Quantity')] +[Single] +$Quantity, +# Set the Border_Width of OBSHexagonShader +[Alias('Border_Width')] +[ComponentModel.DefaultBindingProperty('Border_Width')] +[Int32] +$BorderWidth, +# Set the Blend of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('Blend')] +[Management.Automation.SwitchParameter] +$Blend, +# Set the Equilateral of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('Equilateral')] +[Management.Automation.SwitchParameter] +$Equilateral, +# Set the Zoom_Animate of OBSHexagonShader +[Alias('Zoom_Animate')] +[ComponentModel.DefaultBindingProperty('Zoom_Animate')] +[Management.Automation.SwitchParameter] +$ZoomAnimate, +# Set the Speed_Percent of OBSHexagonShader +[Alias('Speed_Percent')] +[ComponentModel.DefaultBindingProperty('Speed_Percent')] +[Int32] +$SpeedPercent, +# Set the Glitch of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('Glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the Distort_X of OBSHexagonShader +[Alias('Distort_X')] +[ComponentModel.DefaultBindingProperty('Distort_X')] +[Single] +$DistortX, +# Set the Distort_Y of OBSHexagonShader +[Alias('Distort_Y')] +[ComponentModel.DefaultBindingProperty('Distort_Y')] +[Single] +$DistortY, +# Set the Offset_X of OBSHexagonShader +[Alias('Offset_X')] +[ComponentModel.DefaultBindingProperty('Offset_X')] +[Single] +$OffsetX, +# Set the Offset_Y of OBSHexagonShader +[Alias('Offset_Y')] +[ComponentModel.DefaultBindingProperty('Offset_Y')] +[Single] +$OffsetY, +# Set the notes of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'hexagon' +$ShaderNoun = 'OBSHexagonShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Hexagon shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform float4 Hex_Color; +uniform int Alpha_Percent< + string label = "Alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform float Quantity< + string label = "Quantity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 25; +uniform int Border_Width< + string label = "Border Width"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 115; + int step = 1; +> = 15; // <- -15 to 85, -15 off top +uniform bool Blend; +uniform bool Equilateral; +uniform bool Zoom_Animate; +uniform int Speed_Percent< + string label = "Speed Percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform bool Glitch; +uniform float Distort_X< + string label = "Distort X"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform float Distort_Y< + string label = "Distort Y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform float Offset_X< + string label = "Offset X"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float Offset_Y< + string label = "Offset X"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform string notes< + string widget_type = "info"; +>= "Tiles:equilateral: around 12.33,nonequilateral: square rootable number. Distort of 1 is normal."; + +float mod(float x, float y) +{ + return x - y * floor(x/y); +} + +float2 mod2(float2 x, float2 y) +{ + return x - y * floor(x/y); +} + +// 0 on edges, 1 in non_edge +float hex(float2 p) { + float xyratio = 1; + if (Equilateral) + xyratio = uv_size.x /uv_size.y; + + // calc p + p.x = mul(p.x,xyratio); + p.y += mod(floor(p.x) , 2.0)*0.5; + p = abs((mod2(p , float2(1.0, 1.0)) - 0.5)); + return abs(max(p.x*1.5 + p.y, p.y*2.0) -1); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv * uv_scale + uv_offset); + float alpha = float(Alpha_Percent) * 0.01; + float quantity = sqrt(clamp(Quantity, 0.0, 100.0)); + float border_width = clamp(float(Border_Width - 15), -15, 100) * 0.01; + float speed = float(Speed_Percent) * 0.01; + float time = (1 + sin(elapsed_time * speed))*0.5; + if (Zoom_Animate) + quantity *= time; + + // create a (pos)ition reference, hex radius and smoothstep out the non_edge + float2 pos = float2(v_in.uv.x * max(0,Distort_X), (1 - v_in.uv.y) * max(0,Distort_Y)) * uv_scale + uv_offset + float2(Offset_X, Offset_Y); + if (Glitch) + quantity *= lerp(pos.x, pos.y, rand_f); + float2 p = (pos * quantity); // number of hexes to be created + float r = (1.0 -0.7)*0.5; // cell default radius + float non_edge = smoothstep(0.0, r + border_width, hex(p)); // approach border become edge + + // make the border colorable - non_edge is scaled + float4 c = float4(non_edge, non_edge,non_edge,1.0) ; + if (non_edge < 1) + { + c = Hex_Color; + c.a = alpha; + if (Blend) + c = lerp(rgba, c, 1 - non_edge); + return lerp(rgba,c,alpha); + } + return lerp(rgba, c * rgba, alpha); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSHslHsvSaturationShader.ps1 b/Commands/Shaders/Get-OBSHslHsvSaturationShader.ps1 new file mode 100644 index 000000000..540c8f428 --- /dev/null +++ b/Commands/Shaders/Get-OBSHslHsvSaturationShader.ps1 @@ -0,0 +1,316 @@ +function Get-OBSHslHsvSaturationShader { + +[Alias('Set-OBSHslHsvSaturationShader','Add-OBSHslHsvSaturationShader')] +param( +# Set the hslSaturationFactor of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('hslSaturationFactor')] +[Single] +$HslSaturationFactor, +# Set the hslGamma of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('hslGamma')] +[Single] +$HslGamma, +# Set the hsvSaturationFactor of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('hsvSaturationFactor')] +[Single] +$HsvSaturationFactor, +# Set the hsvGamma of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('hsvGamma')] +[Single] +$HsvGamma, +# Set the adjustmentOrder of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('adjustmentOrder')] +[Int32] +$AdjustmentOrder, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'hsl_hsv_saturation' +$ShaderNoun = 'OBSHslHsvSaturationShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' + +// Adjusted Saturation Shader for obs-shaderfilter using HLSL conventions + +uniform float hslSaturationFactor< + string label = "HSL Sat Gain"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.01; +> = 1.0; + +uniform float hslGamma< + string label = "HSL Sat Gamma"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 1.0; + +uniform float hsvSaturationFactor< + string label = "HSV Sat Gain"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.01; +> = 1.0; + +uniform float hsvGamma< + string label = "HSV Sat Gamma"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 1.0; + +uniform int adjustmentOrder< + string label = "Order"; + string widget_type = "select"; + int option_0_value = 1; + string option_0_label = "Parallel adjustment (both HSL and HSV operate on the original image and then blend)"; + int option_1_value = 2; + string option_1_label = "HSL first, then HSV"; + int option_2_value = 3; + string option_2_label = "HSV first, then HSL"; +> = 1; + +// HSV conversion + +float3 rgb2hsv(float3 c) { + float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + float4 p = lerp(float4(c.bg, K.wz), float4(c.gb, K.xy), step(c.b, c.g)); + float4 q = lerp(float4(p.xyw, c.r), float4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +float3 hsv2rgb(float3 c) { + float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * lerp(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +// HSL conversion + +float3 rgb2hsl(float3 c) { + float maxVal = max(c.r, max(c.g, c.b)); + float minVal = min(c.r, min(c.g, c.b)); + float delta = maxVal - minVal; + float h = 0.0; + float s = 0.0; + float l = (maxVal + minVal) / 2.0; + + if(delta != 0) { + if(l < 0.5) s = delta / (maxVal + minVal); + else s = delta / (2.0 - maxVal - minVal); + + if(c.r == maxVal) h = (c.g - c.b) / delta + (c.g < c.b ? 6.0 : 0.0); + else if(c.g == maxVal) h = (c.b - c.r) / delta + 2.0; + else h = (c.r - c.g) / delta + 4.0; + + h /= 6.0; + } + + return float3(h, s, l); +} + +float hue2rgb(float p, float q, float t) { + if(t < 0.0) t += 1.0; + if(t > 1.0) t -= 1.0; + if(t < 1.0/6.0) return p + (q - p) * 6.0 * t; + if(t < 1.0/2.0) return q; + if(t < 2.0/3.0) return p + (q - p) * (2.0/3.0 - t) * 6.0; + return p; +} + +float3 hsl2rgb(float3 c) { + float r, g, b; + + if(c.y == 0.0) { + r = g = b = c.z; + } else { + float q = c.z < 0.5 ? c.z * (1.0 + c.y) : c.z + c.y - c.z * c.y; + float p = 2.0 * c.z - q; + r = hue2rgb(p, q, c.x + 1.0/3.0); + g = hue2rgb(p, q, c.x); + b = hue2rgb(p, q, c.x - 1.0/3.0); + } + + return float3(r, g, b); +} + +float3 adjustColorWithOrder(float3 originalColor) { + if (adjustmentOrder == 1) { + // Parallel adjustment (both HSL and HSV operate on the original image and then blend) + float3 hslAdjusted = rgb2hsl(originalColor); + hslAdjusted.y = pow(hslAdjusted.y, (1/hslGamma)); + hslAdjusted.y *= hslSaturationFactor; + float3 hslAdjustedColor = hsl2rgb(hslAdjusted); + + float3 hsvAdjusted = rgb2hsv(originalColor); + hsvAdjusted.y = pow(hsvAdjusted.y, (1/hsvGamma)); + hsvAdjusted.y *= hsvSaturationFactor; + float3 hsvAdjustedColor = hsv2rgb(hsvAdjusted); + + float3 finalColor = (hslAdjustedColor + hsvAdjustedColor) * 0.5; + return finalColor; + } + else if (adjustmentOrder == 2) { + // HSL first, then HSV + float3 hslAdjusted = rgb2hsl(originalColor); + hslAdjusted.y = pow(hslAdjusted.y, (1/hslGamma)); + hslAdjusted.y *= hslSaturationFactor; + float3 afterHSL = hsl2rgb(hslAdjusted); + float3 hsvAdjusted = rgb2hsv(afterHSL); + hsvAdjusted.y = pow(hsvAdjusted.y, (1/hsvGamma)); + hsvAdjusted.y *= hsvSaturationFactor; + return hsv2rgb(hsvAdjusted); + } + else if (adjustmentOrder == 3) { + // HSV first, then HSL + float3 hsvAdjusted = rgb2hsv(originalColor); + hsvAdjusted.y = pow(hsvAdjusted.y, (1/hsvGamma)); + hsvAdjusted.y *= hsvSaturationFactor; + float3 afterHSV = hsv2rgb(hsvAdjusted); + float3 hslAdjusted = rgb2hsl(afterHSV); + hslAdjusted.y = pow(hslAdjusted.y, (1/hslGamma)); + hslAdjusted.y *= hslSaturationFactor; + return hsl2rgb(hslAdjusted); + } + return originalColor; // Default to original color in case of unexpected values +} + +// Final composite + +float4 mainImage(VertData v_in) : TARGET +{ + float3 originalColor = image.Sample(textureSampler, v_in.uv).rgb; + float3 adjustedColor = adjustColorWithOrder(originalColor); + return float4(adjustedColor, 1.0); // preserving the original alpha +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSHueRotatonShader.ps1 b/Commands/Shaders/Get-OBSHueRotatonShader.ps1 new file mode 100644 index 000000000..6ee9e420e --- /dev/null +++ b/Commands/Shaders/Get-OBSHueRotatonShader.ps1 @@ -0,0 +1,235 @@ +function Get-OBSHueRotatonShader { + +[Alias('Set-OBSHueRotatonShader','Add-OBSHueRotatonShader')] +param( +# Set the Speed of OBSHueRotatonShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Hue_Override of OBSHueRotatonShader +[Alias('Hue_Override')] +[ComponentModel.DefaultBindingProperty('Hue_Override')] +[Management.Automation.SwitchParameter] +$HueOverride, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'hue-rotaton' +$ShaderNoun = 'OBSHueRotatonShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Hue Rotation shader, version 1.0 for OBS Shaderfilter +// Copyright ©️ 2023 by SkeletonBow +// License: GNU General Public License, version 2 +// +// Contact info: +// Twitter: +// Twitch: +// YouTube: +// Soundcloud: +// +// Description: +// Rotates hue of input at a user configurable speed. Negative speed values reverse rotation. A hue +// override option is provided to force a specific rotating hue instead of the original image''s hue. +// +// Changelog: +// 1.0 - Initial release + +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.001; +> = 10.00; +uniform bool Hue_Override = false; + +float3 HUEtoRGB(in float H) +{ + float R = abs(H * 6 - 3) - 1; + float G = 2 - abs(H * 6 - 2); + float B = 2 - abs(H * 6 - 4); + return saturate(float3(R,G,B)); +} + +#define Epsilon 1e-10 + +float3 RGBtoHCV(in float3 RGB) +{ + // Based on work by Sam Hocevar and Emil Persson + float4 P = (RGB.g < RGB.b) ? float4(RGB.bg, -1.0, 2.0/3.0) : float4(RGB.gb, 0.0, -1.0/3.0); + float4 Q = (RGB.r < P.x) ? float4(P.xyw, RGB.r) : float4(RGB.r, P.yzx); + float C = Q.x - min(Q.w, Q.y); + float H = abs((Q.w - Q.y) / (6 * C + Epsilon) + Q.z); + return float3(H, C, Q.x); +} + +float3 HSVtoRGB(in float3 HSV) +{ + float3 RGB = HUEtoRGB(HSV.x); + return ((RGB - 1) * HSV.y + 1) * HSV.z; +} + +float3 RGBtoHSV(in float3 RGB) +{ + float3 HCV = RGBtoHCV(RGB); + float S = HCV.y / (HCV.z + Epsilon); + return float3(HCV.x, S, HCV.z); +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float4 col_in = image.Sample(textureSampler, uv); + float3 col_out; + float3 HSV = RGBtoHSV(col_in.rgb); + + if(Hue_Override) + HSV.x = elapsed_time * Speed * 0.01; + else + HSV.x += elapsed_time * Speed * 0.01; + + // Normalize Hue + HSV.x = frac(HSV.x); + + col_out = HSVtoRGB(HSV); + return float4(col_out, col_in.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSIntensityScopeShader.ps1 b/Commands/Shaders/Get-OBSIntensityScopeShader.ps1 new file mode 100644 index 000000000..eb37459e7 --- /dev/null +++ b/Commands/Shaders/Get-OBSIntensityScopeShader.ps1 @@ -0,0 +1,192 @@ +function Get-OBSIntensityScopeShader { + +[Alias('Set-OBSIntensityScopeShader','Add-OBSIntensityScopeShader')] +param( +# Set the gain of OBSIntensityScopeShader +[ComponentModel.DefaultBindingProperty('gain')] +[Single] +$Gain, +# Set the blend of OBSIntensityScopeShader +[ComponentModel.DefaultBindingProperty('blend')] +[Single] +$Blend, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'intensity-scope' +$ShaderNoun = 'OBSIntensityScopeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Robin Green, Dec 2016 +// Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. +// https://www.shadertoy.com/view/XtcSRs adopted for OBS by Exeldro +uniform float gain< + string label = "Gain"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 1.00; + float step = 0.01; +> = 0.3; +uniform float blend< + string label = "Blend"; + string widget_type = "slider"; + float minimum = 0.00; + float maximum = 1.00; + float step = 0.01; +> = 0.6; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + uv.y = 1.0 - uv.y; + + // calculate the intensity bucket for this pixel based on column height (padded at the top) + const float max_value = 270.0; + const float buckets = 512.0; + float bucket_min = log( max_value * floor(uv.y * buckets) / buckets ); + float bucket_max = log( max_value * floor((uv.y * buckets) + 1.0) / buckets ); + + // count the count the r,g,b and luma in this column that match the bucket + float4 count = float4(0.0, 0.0, 0.0, 0.0); + for( int i=0; i < 512; ++i ) { + float j = float(i) / buckets; + float4 pixel = image.Sample(textureSampler, float2(uv.x, j )) * 256.0; + + // calculate the Rec.709 luma for this pixel + pixel.a = pixel.r * 0.2126 + pixel.g * 0.7152 + pixel.b * 0.0722; + + float4 logpixel = log(pixel); + if( logpixel.r >= bucket_min && logpixel.r < bucket_max) count.r += 1.0; + if( logpixel.g >= bucket_min && logpixel.g < bucket_max) count.g += 1.0; + if( logpixel.b >= bucket_min && logpixel.b < bucket_max) count.b += 1.0; + if( logpixel.a >= bucket_min && logpixel.a < bucket_max) count.a += 1.0; + } + + // sum luma into RGB, tweak log intensity for readability + count.rgb = log(count.rgb * (1.0-blend) + count.aaa * blend) * gain; + + // output + return count; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSInvertLumaShader.ps1 b/Commands/Shaders/Get-OBSInvertLumaShader.ps1 new file mode 100644 index 000000000..f2cf98454 --- /dev/null +++ b/Commands/Shaders/Get-OBSInvertLumaShader.ps1 @@ -0,0 +1,266 @@ +function Get-OBSInvertLumaShader { + +[Alias('Set-OBSInvertLumaShader','Add-OBSInvertLumaShader')] +param( +# Set the Invert_Color of OBSInvertLumaShader +[Alias('Invert_Color')] +[ComponentModel.DefaultBindingProperty('Invert_Color')] +[Management.Automation.SwitchParameter] +$InvertColor, +# Set the Invert_Luma of OBSInvertLumaShader +[Alias('Invert_Luma')] +[ComponentModel.DefaultBindingProperty('Invert_Luma')] +[Management.Automation.SwitchParameter] +$InvertLuma, +# Set the Gamma_Correction of OBSInvertLumaShader +[Alias('Gamma_Correction')] +[ComponentModel.DefaultBindingProperty('Gamma_Correction')] +[Management.Automation.SwitchParameter] +$GammaCorrection, +# Set the Test_Ramp of OBSInvertLumaShader +[Alias('Test_Ramp')] +[ComponentModel.DefaultBindingProperty('Test_Ramp')] +[Management.Automation.SwitchParameter] +$TestRamp, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'invert-luma' +$ShaderNoun = 'OBSInvertLumaShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Invert shader 1.0 - for OBS Shaderfilter +// Copyright 2021 by SkeletonBow +// https://twitter.com/skeletonbowtv +// https://twitch.tv/skeletonbowtv + +// Performs RGB color inversion or YUV luma inversion with optional sRGB gamma handling + +uniform bool Invert_Color = false; +uniform bool Invert_Luma = true; +uniform bool Gamma_Correction = true; +uniform bool Test_Ramp = false; + +float3 encodeSRGB(float3 linearRGB) +{ + float3 a = float3(12.92,12.92,12.92) * linearRGB; + float3 b = float3(1.055,1.055,1.055) * pow(linearRGB, float3(1.0 / 2.4,1.0 / 2.4,1.0 / 2.4)) - float3(0.055,0.055,0.055); + float3 c = step(float3(0.0031308,0.0031308,0.0031308), linearRGB); + return float3(lerp(a, b, c)); +} + +float3 decodeSRGB(float3 screenRGB) +{ + float3 a = screenRGB / float3(12.92,12.92,12.92); + float3 b = pow((screenRGB + float3(0.055,0.055,0.055)) / float3(1.055,1.055,1.055), float3(2.4,2.4,2.4)); + float3 c = step(float3(0.04045,0.04045,0.04045), screenRGB); + return float3(lerp(a, b, c)); +} + +float3 HUEtoRGB(in float H) +{ + float R = abs(H * 6 - 3) - 1; + float G = 2 - abs(H * 6 - 2); + float B = 2 - abs(H * 6 - 4); + return float3(clamp(float3(R,G,B), float3(0.0, 0.0, 0.0), float3(1.0, 1.0, 1.0))); +} + +float3 RGBtoYUV(float3 color) +{ + // YUV matriz (BT709 luma coefficients) +#ifdef OPENGL + float3x3 toYUV = float3x3( + float3(0.2126, -0.09991, 0.615), + float3(0.7152, -0.33609, -0.55861), + float3(0.0722, 0.436, -0.05639)); +#else + float3x3 toYUV = { + { 0.2126, -0.09991, 0.615 }, + { 0.7152, -0.33609, -0.55861 }, + { 0.0722, 0.436, -0.05639 }, + }; +#endif + return mul(color, toYUV); +} + +float3 YUVtoRGB(float3 color) +{ + // YUV matriz (BT709) +#ifdef OPENGL + float3x3 fromYUV = float3x3( + float3(1.000, 1.000, 1.000), + float3(0.0, -0.21482, 2.12798), + float3(1.28033, -0.38059, 0.0)); +#else + float3x3 fromYUV = { + { 1.000, 1.000, 1.000 }, + { 0.0, -0.21482, 2.12798 }, + { 1.28033, -0.38059, 0.0 }, + }; +#endif + return mul(color, fromYUV); +} + +float3 generate_ramps(float3 color, float2 uv) +{ + float3 ramp = float3(0.0, 0.0, 0.0); + if(uv.y < 0.2) + ramp.r = uv.x; // Red ramp + else if(uv.y < 0.4) + ramp.g = uv.x; // Green ramp + else if(uv.y < 0.6) + ramp.b = uv.x; // Blue ramp + else if(uv.y < 0.8) + ramp = float3(uv.x, uv.x, uv.x); // Grey ramp + else + ramp = HUEtoRGB(uv.x); // Hue rainbow + + return ramp; +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float4 obstex = image.Sample( textureSampler, uv ); + float3 color = obstex.rgb; + // Apply sRGB gamma transfer encode + if(Gamma_Correction) color = encodeSRGB( color ); + // Override display with test patterns to visually see what is happening + if( Test_Ramp ) color = generate_ramps( obstex.rgb, uv ); + // RGB color invert + if( Invert_Color ) { + color = float3(1.0, 1.0, 1.0) - color; + } + // YUV luma invert + if( Invert_Luma ) { + float3 yuv = RGBtoYUV( color ); + yuv.x = 1.0 - yuv.x; + color = YUVtoRGB(yuv); + } + // Apply sRGB gamma transfer decode + if(Gamma_Correction) color = decodeSRGB( color ); + return float4(color, obstex.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSLuminance2Shader.ps1 b/Commands/Shaders/Get-OBSLuminance2Shader.ps1 new file mode 100644 index 000000000..ab2788d34 --- /dev/null +++ b/Commands/Shaders/Get-OBSLuminance2Shader.ps1 @@ -0,0 +1,240 @@ +function Get-OBSLuminance2Shader { + +[Alias('Set-OBSLuminance2Shader','Add-OBSLuminance2Shader')] +param( +# Set the color of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('color')] +[String] +$Color, +# Set the lumaMax of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('lumaMax')] +[Single] +$LumaMax, +# Set the lumaMin of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMaxSmooth of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('lumaMaxSmooth')] +[Single] +$LumaMaxSmooth, +# Set the lumaMinSmooth of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the invertImageColor of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('invertImageColor')] +[Management.Automation.SwitchParameter] +$InvertImageColor, +# Set the invertAlphaChannel of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('invertAlphaChannel')] +[Management.Automation.SwitchParameter] +$InvertAlphaChannel, +# Set the notes of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'luminance2' +$ShaderNoun = 'OBSLuminance2Shader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform float4 color; +uniform float lumaMax< + string label = "Luma Max"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 1.05; +uniform float lumaMin< + string label = "Luma Min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.01; +uniform float lumaMaxSmooth< + string label = "Luma Max Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.10; +uniform float lumaMinSmooth< + string label = "Luma Min Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.01; +uniform bool invertImageColor; +uniform bool invertAlphaChannel; +uniform string notes< + string widget_type = "info"; +> = "''luma max'' - anything above will be transparent. ''luma min'' - anything below will be transparent. ''luma(min or max)Smooth - make the transparency fade in or out by a distance. ''invert color'' - inverts the color of the screen. ''invert alpha channel'' - flips all settings on thier head, which is excellent for testing."; + +float4 InvertColor(float4 rgba_in) +{ + rgba_in.r = 1.0 - rgba_in.r; + rgba_in.g = 1.0 - rgba_in.g; + rgba_in.b = 1.0 - rgba_in.b; + rgba_in.a = 1.0 - rgba_in.a; + return rgba_in; +} + +float4 mainImage(VertData v_in) : TARGET +{ + + float4 rgba = image.Sample(textureSampler, v_in.uv); + if (rgba.a > 0.0) + { + + if (invertImageColor) + { + rgba = InvertColor(rgba); + } + float luminance = rgba.r * color.r * 0.299 + rgba.g * color.g * 0.587 + rgba.b * color.b * 0.114; + + //intensity = min(max(intensity,minIntensity),maxIntensity); + float clo = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luminance); + float chi = 1. - smoothstep(lumaMax - lumaMaxSmooth, lumaMax, luminance); + + float amask = clo * chi; + + if (invertAlphaChannel) + { + amask = 1.0 - amask; + } + rgba *= color; + rgba.a = clamp(amask, 0.0, 1.0); + + } + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSLuminanceAlphaShader.ps1 b/Commands/Shaders/Get-OBSLuminanceAlphaShader.ps1 new file mode 100644 index 000000000..5185c5aeb --- /dev/null +++ b/Commands/Shaders/Get-OBSLuminanceAlphaShader.ps1 @@ -0,0 +1,298 @@ +function Get-OBSLuminanceAlphaShader { + +[Alias('Set-OBSLuminanceAlphaShader','Add-OBSLuminanceAlphaShader')] +param( +# Set the ViewProj of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSLuminanceAlphaShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSLuminanceAlphaShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSLuminanceAlphaShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSLuminanceAlphaShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSLuminanceAlphaShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSLuminanceAlphaShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the color_matrix of OBSLuminanceAlphaShader +[Alias('color_matrix')] +[ComponentModel.DefaultBindingProperty('color_matrix')] +[Single[][]] +$ColorMatrix, +# Set the color of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('color')] +[String] +$Color, +# Set the mul_val of OBSLuminanceAlphaShader +[Alias('mul_val')] +[ComponentModel.DefaultBindingProperty('mul_val')] +[Single] +$MulVal, +# Set the add_val of OBSLuminanceAlphaShader +[Alias('add_val')] +[ComponentModel.DefaultBindingProperty('add_val')] +[Single] +$AddVal, +# Set the level of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('level')] +[Single] +$Level, +# Set the invertAlphaChannel of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('invertAlphaChannel')] +[Management.Automation.SwitchParameter] +$InvertAlphaChannel, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'luminance_alpha' +$ShaderNoun = 'OBSLuminanceAlphaShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Luminance Alpha Effect By Charles Fettinger (https://github.com/Oncorporation) 2/2019 +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +uniform float4x4 color_matrix; +uniform float4 color; +uniform float mul_val< + string label = "Mulitply"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; +uniform float add_val< + string label = "Add"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = 0.0; +uniform float level< + string label = "Level"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> =1.0; +uniform bool invertAlphaChannel; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertDataIn { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +struct VertDataOut { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + float2 uv2 : TEXCOORD1; +}; + +VertDataOut mainTransform(VertDataIn v_in) +{ + VertDataOut vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0 ), ViewProj); + vert_out.uv = v_in.uv * mul_val + add_val; + vert_out.uv2 = v_in.uv ; + return vert_out; +} + +/*float3 GetLuminance(float4 rgba) +{ + float red = rbga.r; + float green = rgba.g; + float blue = rgba.b; + return (.299 * red) + (.587 * green) + (.114 * blue); +}*/ + +float4 PSAlphaMaskRGBA(VertDataOut v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv) ; + if (rgba.a > 0.0) + { + + float intensity = rgba.r * color.r * 0.299 + rgba.g * color.g * 0.587 + rgba.b * color.b * 0.114; + if (invertAlphaChannel) + { + intensity = 1.0 - intensity; + } + rgba *= color; + rgba.a = clamp((intensity * level), 0.0, 1.0); + + } + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = PSAlphaMaskRGBA(v_in); + } +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSLuminanceShader.ps1 b/Commands/Shaders/Get-OBSLuminanceShader.ps1 new file mode 100644 index 000000000..667832556 --- /dev/null +++ b/Commands/Shaders/Get-OBSLuminanceShader.ps1 @@ -0,0 +1,205 @@ +function Get-OBSLuminanceShader { + +[Alias('Set-OBSLuminanceShader','Add-OBSLuminanceShader')] +param( +# Set the color of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('color')] +[String] +$Color, +# Set the level of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('level')] +[Single] +$Level, +# Set the invertImageColor of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('invertImageColor')] +[Management.Automation.SwitchParameter] +$InvertImageColor, +# Set the invertAlphaChannel of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('invertAlphaChannel')] +[Management.Automation.SwitchParameter] +$InvertAlphaChannel, +# Set the notes of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Luminance' +$ShaderNoun = 'OBSLuminanceShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Exeldro February 22, 2022 +uniform float4 color; +uniform float level< + string label = "Level"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform bool invertImageColor; +uniform bool invertAlphaChannel; + +uniform string notes< + string widget_type = "info"; +> = "''color'' - the color to add to the original image. Multiplies the color against the original color giving it a tint. White represents no tint. ''invertImageColor'' - - inverts the color of the screen, great for testing and fine tuning. ''level'' - transparency amount modifier where 1.0 = base luminance (recommend 0.00 - 10.00). ''invertAlphaChannel'' - flip what is transparent from darks (default) to lights"; + +float4 InvertColor(float4 rgba_in) +{ + rgba_in.r = 1.0 - rgba_in.r; + rgba_in.g = 1.0 - rgba_in.g; + rgba_in.b = 1.0 - rgba_in.b; + rgba_in.a = 1.0 - rgba_in.a; + return rgba_in; +} + +float4 mainImage(VertData v_in) : TARGET +{ + + float4 rgba = image.Sample(textureSampler, v_in.uv); + if (rgba.a > 0.0) + { + + if (invertImageColor) + { + rgba = InvertColor(rgba); + } + float intensity = rgba.r * color.r * 0.299 + rgba.g * color.g * 0.587 + rgba.b * color.b * 0.114; + + //intensity = min(max(intensity,minIntensity),maxIntensity); + + + if (invertAlphaChannel) + { + intensity = 1.0 - intensity; + } + rgba *= color; + rgba.a = clamp((intensity * level), 0.0, 1.0); + + } + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSMatrixShader.ps1 b/Commands/Shaders/Get-OBSMatrixShader.ps1 new file mode 100644 index 000000000..b3bfa9228 --- /dev/null +++ b/Commands/Shaders/Get-OBSMatrixShader.ps1 @@ -0,0 +1,439 @@ +function Get-OBSMatrixShader { + +[Alias('Set-OBSMatrixShader','Add-OBSMatrixShader')] +param( +# Set the ViewProj of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSMatrixShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSMatrixShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSMatrixShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_size of OBSMatrixShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the uv_pixel_interval of OBSMatrixShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSMatrixShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSMatrixShader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSMatrixShader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSMatrixShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the mouse of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('mouse')] +[Single[]] +$Mouse, +# Set the Invert_Direction of OBSMatrixShader +[Alias('Invert_Direction')] +[ComponentModel.DefaultBindingProperty('Invert_Direction')] +[Management.Automation.SwitchParameter] +$InvertDirection, +# Set the lumaMin of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMinSmooth of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the Ratio of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('Ratio')] +[Single] +$Ratio, +# Set the Alpha_Percentage of OBSMatrixShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Apply_To_Alpha_Layer of OBSMatrixShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'matrix' +$ShaderNoun = 'OBSMatrixShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Matrix effect by Charles Fettinger for obs-shaderfilter plugin 7/2020 v.2 +// https://github.com/Oncorporation/obs-shaderfilter +// https://www.shadertoy.com/view/XljBW3 The cat is a glitch (Matrix) - coverted from and updated + +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp +#define iTime float + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_size; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; + + +uniform float2 mouse< + string label = "Virtual Mouse Coordinates"; + string widget_type = "slider"; + float2 minimum = {0, 0}; + float2 maximum = {100., 100.}; + float2 scale = {.01, .01}; + float2 step = {.01, .01}; +> = {0., 0.}; + + +int2 iMouse() { + return int2(mouse.x * uv_size.x, mouse.y * uv_size.y); +} + +sampler_state textureSampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +/* ps start + +*/ + +uniform bool Invert_Direction< + string label = "Invert Direction"; +> = true; + +uniform float lumaMin< + string label = "Luma Min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.01; +uniform float lumaMinSmooth< + string label = "Luma Min Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.01; +uniform float Ratio< + string label = "Ratio"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 4.0; +uniform float Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100; // +uniform bool Apply_To_Alpha_Layer = true; + +#define PI2 6.28318530718 +#define PI 3.1416 + + +float vorocloud(float2 p){ + float f = 0.0; + float flow = 1.0; + float time = elapsed_time; + if(Invert_Direction){ + flow *= -1; + } + /* + //periodically stop + if (loops % 16 >= 8.0) + { + time = local_time - elapsed_time; + } + */ + + float r = clamp(Ratio,-50,50); + float2 pp = cos(float2(p.x * 14.0, (16.0 * p.y + cos(floor(p.x * 30.0)) + flow * time * PI2)) ); + p = cos(p * 12.1 + pp * r + sin(time/PI)*(r/PI) + 0.5 * cos(pp.x * r + sin(time/PI)*(r/PI))); + + float2 pts[4]; + + pts[0] = float2(0.5, 0.6); + pts[1] = float2(-0.4, 0.4); + pts[2] = float2(0.2, -0.7); + pts[3] = float2(-0.3, -0.4); + + float d = 5.0; + + for(int i = 0; i < 4; i++){ + pts[i].x += 0.03 * cos(float(i)) + p.x; + pts[i].y += 0.03 * sin(float(i)) + p.y; + d = min(d, distance(pts[i], pp)); + } + + f = 2.0 * pow(1.0 - 0.3 * d, 13.0); + + f = min(f, 1.0); + + return f; +} + +vec4 scene(float2 UV){ + float alpha = clamp(Alpha_Percentage *.01 ,0,1.0); + + float x = UV.x; + float y = UV.y; + + float2 p = float2(x, y) - 0.5; + + vec4 col = vec4(0.0,0.0,0.0,0.0); + col.g += 0.02; + + float v = vorocloud(p); + v = 0.2 * floor(v * 5.0); + + col.r += 0.1 * v; + col.g += 0.6 * v; + col.b += 0.5 * pow(v, 5.0); + + + v = vorocloud(p * 2.0); + v = 0.2 * floor(v * 5.0); + + col.r += 0.1 * v; + col.g += 0.2 * v; + col.b += 0.01 * pow(v, 5.0); + + col.a = 1.0; + float luma = dot(col.rgb,float3(0.299,0.587,0.114)); + float luma_min = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luma); + col.a = clamp(luma_min,0.0,1.0); + + float4 original_color = image.Sample(textureSampler, UV); + + // skip if (alpha is zero and only apply to alpha layer is true) + if (!(original_color.a <= 0.0 && Apply_To_Alpha_Layer == true)) + { + if (Apply_To_Alpha_Layer == false) + original_color.a = alpha; + + col.rgb = lerp(original_color.rgb, col.rgb, alpha); //apply alpha slider + col = lerp(original_color, col, col.a); //remove black background color + } + else + { + col.a = original_color.a; + } + + return col; +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord.xy / uv_size; + fragColor = scene(uv); +} + +/*ps end*/ + +struct VertFragData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertFragData VSDefault(VertFragData vtx) { + vtx.pos = mul(float4(vtx.pos.xyz, 1.0), ViewProj); + return vtx; +} + +float4 PSDefault(VertFragData vtx) : TARGET { + float4 col = float4(1., 1., 1., 1.); + mainImage(col, vtx.uv * uv_size); + return col; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vtx); + pixel_shader = PSDefault(vtx); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSMultiplyShader.ps1 b/Commands/Shaders/Get-OBSMultiplyShader.ps1 new file mode 100644 index 000000000..7320a7db2 --- /dev/null +++ b/Commands/Shaders/Get-OBSMultiplyShader.ps1 @@ -0,0 +1,147 @@ +function Get-OBSMultiplyShader { + +[Alias('Set-OBSMultiplyShader','Add-OBSMultiplyShader')] +param( +# Set the other_image of OBSMultiplyShader +[Alias('other_image')] +[ComponentModel.DefaultBindingProperty('other_image')] +[String] +$OtherImage, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'multiply' +$ShaderNoun = 'OBSMultiplyShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d other_image; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 other = other_image.Sample(textureSampler, v_in.uv); + float4 base = image.Sample(textureSampler, v_in.uv); + return base * other; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSNightSkyShader.ps1 b/Commands/Shaders/Get-OBSNightSkyShader.ps1 new file mode 100644 index 000000000..4a7971a4e --- /dev/null +++ b/Commands/Shaders/Get-OBSNightSkyShader.ps1 @@ -0,0 +1,511 @@ +function Get-OBSNightSkyShader { + +[Alias('Set-OBSNightSkyShader','Add-OBSNightSkyShader')] +param( +# Set the speed of OBSNightSkyShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the Include_Clouds of OBSNightSkyShader +[Alias('Include_Clouds')] +[ComponentModel.DefaultBindingProperty('Include_Clouds')] +[Management.Automation.SwitchParameter] +$IncludeClouds, +# Set the Include_Moon of OBSNightSkyShader +[Alias('Include_Moon')] +[ComponentModel.DefaultBindingProperty('Include_Moon')] +[Management.Automation.SwitchParameter] +$IncludeMoon, +# Set the center_width_percentage of OBSNightSkyShader +[Alias('center_width_percentage')] +[ComponentModel.DefaultBindingProperty('center_width_percentage')] +[Int32] +$CenterWidthPercentage, +# Set the center_height_percentage of OBSNightSkyShader +[Alias('center_height_percentage')] +[ComponentModel.DefaultBindingProperty('center_height_percentage')] +[Int32] +$CenterHeightPercentage, +# Set the Alpha_Percentage of OBSNightSkyShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Apply_To_Image of OBSNightSkyShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSNightSkyShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the number_stars of OBSNightSkyShader +[Alias('number_stars')] +[ComponentModel.DefaultBindingProperty('number_stars')] +[Int32] +$NumberStars, +# Set the SKY_COLOR of OBSNightSkyShader +[Alias('SKY_COLOR')] +[ComponentModel.DefaultBindingProperty('SKY_COLOR')] +[String] +$SKYCOLOR, +# Set the STAR_COLOR of OBSNightSkyShader +[Alias('STAR_COLOR')] +[ComponentModel.DefaultBindingProperty('STAR_COLOR')] +[String] +$STARCOLOR, +# Set the LIGHT_SKY of OBSNightSkyShader +[Alias('LIGHT_SKY')] +[ComponentModel.DefaultBindingProperty('LIGHT_SKY')] +[String] +$LIGHTSKY, +# Set the SKY_LIGHTNESS of OBSNightSkyShader +[Alias('SKY_LIGHTNESS')] +[ComponentModel.DefaultBindingProperty('SKY_LIGHTNESS')] +[Single] +$SKYLIGHTNESS, +# Set the MOON_COLOR of OBSNightSkyShader +[Alias('MOON_COLOR')] +[ComponentModel.DefaultBindingProperty('MOON_COLOR')] +[String] +$MOONCOLOR, +# Set the moon_size of OBSNightSkyShader +[Alias('moon_size')] +[ComponentModel.DefaultBindingProperty('moon_size')] +[Single] +$MoonSize, +# Set the moon_bump_size of OBSNightSkyShader +[Alias('moon_bump_size')] +[ComponentModel.DefaultBindingProperty('moon_bump_size')] +[Single] +$MoonBumpSize, +# Set the Moon_Position_x of OBSNightSkyShader +[Alias('Moon_Position_x')] +[ComponentModel.DefaultBindingProperty('Moon_Position_x')] +[Single] +$MoonPositionX, +# Set the Moon_Position_y of OBSNightSkyShader +[Alias('Moon_Position_y')] +[ComponentModel.DefaultBindingProperty('Moon_Position_y')] +[Single] +$MoonPositionY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'night_sky' +$ShaderNoun = 'OBSNightSkyShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Night Sky shader by Charles Fettinger for obs-shaderfilter plugin 6/2020 v.65 +// https://github.com/Oncorporation/obs-shaderfilter +//https://www.shadertoy.com/view/3tfXRM Simple Night Sky - converted from and updated +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 20.0; +uniform bool Include_Clouds = true; +uniform bool Include_Moon = true; +uniform int center_width_percentage< + string label = "Center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_height_percentage< + string label = "Center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 95.0; // +uniform bool Apply_To_Image = false; +uniform bool Replace_Image_Color = false; +uniform int number_stars< + string label = "Number stars"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 20; // + +uniform float4 SKY_COLOR = { 0.027, 0.151, 0.354, 1.0 }; +uniform float4 STAR_COLOR = { 0.92, 0.92, 0.14, 1.0 }; +uniform float4 LIGHT_SKY = { 0.45, 0.61, 0.98, 1.0 }; +uniform float SKY_LIGHTNESS< + string label = "SKY LIGHTNESS"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = .3; + + // Moon +uniform float4 MOON_COLOR = { .4, .25, 0.25, 1.0 }; +uniform float moon_size< + string label = "Moon size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.18; +uniform float moon_bump_size< + string label = "Moon bump size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.14; +uniform float Moon_Position_x< + string label = "Moon Position x"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = -0.6; +uniform float Moon_Position_y< + string label = "Moon Position y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = -0.3; + +#define PI 3.1416 + +//Noise functions from https://www.youtube.com/watch?v=zXsWftRdsvU +float noise11(float p) { + return frac(sin(p*633.1847) * 9827.95); +} + +float noise21(float2 p) { + return frac(sin(p.x*827.221 + p.y*3228.8275) * 878.121); +} + +float2 noise22(float2 p) { + return frac(float2(sin(p.x*9378.35), sin(p.y*75.589)) * 556.89); +} + +//From https://codepen.io/Tobsta/post/procedural-generation-part-1-1d-perlin-noise +float cosineInterpolation(float a, float b, float x) { + float ft = x * PI; + float f = (1. - cos(ft)) * .5; + return a * (1. - f) + b * f; +} + +float smoothNoise11(float p, float dist) { + float prev = noise11(p-dist); + float next = noise11(p+dist); + + return cosineInterpolation(prev, next, .5); +} + +float smoothNoise21(float2 uv, float cells) { + float2 lv = frac(uv*cells); + float2 id = floor(uv*cells); + + //smoothstep function: maybe change it later! + lv = lv*lv*(3.-2.*lv); + + float bl = noise21(id); + float br = noise21(id+float2(1.,0.)); + float b = lerp(bl, br, lv.x); + + float tl = noise21(id+float2(0.,1.)); + float tr = noise21(id+float2(1.,1.)); + float t = lerp(tl, tr, lv.x); + + return lerp(b, t, lv.y); +} + +float2 smoothNoise22(float2 uv, float cells) { + float2 lv = frac(uv*cells); + float2 id = floor(uv*cells); + + lv = lv*lv*(3.-2.*lv); + + float2 bl = noise22(id); + float2 br = noise22(id+float2(1.,0.)); + float2 b = lerp(bl, br, lv.x); + + float2 tl = noise22(id+float2(0.,1.)); + float2 tr = noise22(id+float2(1.,1.)); + float2 t = lerp(tl, tr, lv.x); + + return lerp(b, t, lv.y); +} + +float valueNoise11(float p) { + float c = smoothNoise11(p, 0.5); + c += smoothNoise11(p, 0.25)*.5; + c += smoothNoise11(p, 0.125)*.25; + c += smoothNoise11(p, 0.0625)*.125; + + return c /= .875; +} + +float valueNoise21(float2 uv) { + float c = smoothNoise21(uv, 4.); + c += smoothNoise21(uv, 8.)*.5; + c += smoothNoise21(uv, 16.)*.25; + c += smoothNoise21(uv, 32.)*.125; + c += smoothNoise21(uv, 64.)*.0625; + + return c /= .9375; +} + +float2 valueNoise22(float2 uv) { + float2 c = smoothNoise22(uv, 4.); + c += smoothNoise22(uv, 8.)*.5; + c += smoothNoise22(uv, 16.)*.25; + c += smoothNoise22(uv, 32.)*.125; + c += smoothNoise22(uv, 64.)*.0625; + + return c /= .9375; +} + +float3 points(float2 p, float2 uv, float3 color, float size, float blur) { + float dist = distance(p, uv); + return color*smoothstep(size, size*(0.999-blur), dist); +} + +float mapInterval(float x, float a, float b, float c, float d) { + return (x-a)/(b-a) * (d-c) + c; +} + +float blink(float time, float timeInterval) { + float halfInterval = timeInterval / 2.0; + //Get relative position in the bucket + float p = fmod(time, timeInterval); + + + if (p <= timeInterval / 2.) { + return smoothstep(0., 1., p/halfInterval); + } else { + return smoothstep(1., 0., (p-halfInterval)/halfInterval); + } +} + +float3 sampleBumps(float2 p, float2 uv, float radius, float spin) { + float dist = distance(p, uv); + float3 BumpSamples = float3(0.,0.,0.); + + if (dist < radius) { + float bumps = (1.-valueNoise21(uv*spin))*.1; + BumpSamples = float3(bumps, bumps, bumps); + } + return BumpSamples; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 rgba;// = image.Sample(textureSampler, v_in.uv); + float alpha = clamp(Alpha_Percentage *.01 ,0,1.0); + float2 center_pixel_coordinates = float2((center_width_percentage * 0.01), (center_height_percentage * 0.01)); + float2 st = v_in.uv* uv_scale; + float2 toCenter = center_pixel_coordinates - st; + + // Normalized pixel coordinates (from 0 to 1) + float2 uv = v_in.uv; + float2 ouv = uv; + uv -= .5; + uv.x *= uv_size.x/uv_size.y; + + float2 seed = toCenter / uv_size.xy; + + float time = elapsed_time + seed.x*speed; + + //float3 col = float3(0.0); + //float m = valueNoise21(uv); + float3 col = lerp(SKY_COLOR.rgb, LIGHT_SKY.rgb, ouv.y-SKY_LIGHTNESS); + + col *= SKY_LIGHTNESS - (1.-ouv.y); + + //Add clouds + if (Include_Clouds) + { + float2 timeUv = uv; + timeUv.x += time*.1; + timeUv.y += valueNoise11(timeUv.x+.352)*.01; + float cloud = valueNoise21(timeUv); + col += cloud*.1; + } + + //Add stars in the top part of the scene + float timeInterval = speed *.5; //5.0 + float timeBucket = floor(time / timeInterval); + + float2 moonPosition = float2(-1000, -1000); + if (Include_Moon) + { + moonPosition = float2(Moon_Position_x, Moon_Position_y); + col += points(moonPosition, uv, MOON_COLOR.rgb,moon_size, 0.3); + // Moon bumps + col += sampleBumps(moonPosition, uv, moon_bump_size, 9. + fmod(time*.1,9)); + } + + for (float i = 0.; i < clamp(number_stars,0,100); i++) { + float2 starPosition = float2(i/10., i/10.); + + starPosition.x = mapInterval(valueNoise11(timeBucket + i*827.913)-.4, 0., 1., 0.825, -0.825); + starPosition.y = mapInterval(valueNoise11(starPosition.x)-.3, 0., 1., 0.445, -0.445); + + float starIntensity = blink(time+ (rand_f * i), timeInterval ); + //Hide stars that are behind the moon + if (distance(starPosition, moonPosition) > moon_size) { + col += points(starPosition, uv, STAR_COLOR.rgb, 0.001, 0.0)*clamp(starIntensity-.1, 0.0, 1.0)*10.0; + col += points(starPosition, uv, STAR_COLOR.rgb, 0.009, 3.5)*starIntensity*3.0; + } + } + //col = float3(blink(time, timeInterval)); + rgba = float4(col,alpha); + + // Output to screen + if (Apply_To_Image) + { + float4 color = image.Sample(textureSampler, v_in.uv); + float4 original_color = color; + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, rgba * color,alpha); + + } + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSOpacityShader.ps1 b/Commands/Shaders/Get-OBSOpacityShader.ps1 new file mode 100644 index 000000000..bae86d82a --- /dev/null +++ b/Commands/Shaders/Get-OBSOpacityShader.ps1 @@ -0,0 +1,155 @@ +function Get-OBSOpacityShader { + +[Alias('Set-OBSOpacityShader','Add-OBSOpacityShader')] +param( +# Set the Opacity of OBSOpacityShader +[ComponentModel.DefaultBindingProperty('Opacity')] +[Single] +$Opacity, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'opacity' +$ShaderNoun = 'OBSOpacityShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Opacity shader - for OBS Shaderfilter +// Copyright 2021 by SkeltonBowTV +// https://twitter.com/skeletonbowtv +// https://twitch.tv/skeletonbowtv + +uniform float Opacity< + string label = "Opacity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200.0; + float step = 0.01; +> = 100.00; // 0.00 - 100.00 percent + +float4 mainImage( VertData v_in ) : TARGET +{ + float4 color = image.Sample( textureSampler, v_in.uv ); + return float4( color.rgb, color.a * Opacity * 0.01 ); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSPagePeelShader.ps1 b/Commands/Shaders/Get-OBSPagePeelShader.ps1 new file mode 100644 index 000000000..24affeb0a --- /dev/null +++ b/Commands/Shaders/Get-OBSPagePeelShader.ps1 @@ -0,0 +1,217 @@ +function Get-OBSPagePeelShader { + +[Alias('Set-OBSPagePeelShader','Add-OBSPagePeelShader')] +param( +# Set the Speed of OBSPagePeelShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Position of OBSPagePeelShader +[ComponentModel.DefaultBindingProperty('Position')] +[Single] +$Position, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'page-peel' +$ShaderNoun = 'OBSPagePeelShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simple Page Peel, Version 0.01, for OBS Shaderfilter +// Copyright ©️ 2023 by SkeletonBow +// License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License +// Contact info: +// Twitter: +// Twitch: +// YouTube: +// Soundcloud: +// +// Based on Shadertoy shader by droozle +// +// Description: +// +// +// Changelog: +// 0.01 - Initial release + +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 50.0; + float step = 0.001; +> = 1.00; +uniform float Position< + string label = "Position"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.001; +> = 0.0; + +float4 mainImage( VertData v_in ) : TARGET +{ + // Normalized pixel coordinates (from 0 to 1) + float2 aspect = float2( uv_size.x / uv_size.y, 1.0 ); + float2 uv = v_in.uv; + + float t = Position + elapsed_time * Speed; + // Define the fold. + float2 origin = float2( 0.6 + 0.4 * sin( t * 0.2 ), 0.5 + 0.5 * cos( t * 0.13 ) ) * aspect; + float2 normal = normalize( float2( 1.0, 2.0 * sin( t * 0.3 ) ) * aspect ); + + // Sample texture. + float3 col = image.Sample( textureSampler, uv ).rgb; // Front color. + + // Check on which side the pixel lies. + float2 pt = uv * aspect - origin; + float side = dot( pt, normal ); + if( side > 0.0 ) { + col *= 0.25; // Background color (peeled off). + + float shadow = smoothstep( 0.0, 0.05, side ); + col = lerp( col * 0.6, col, shadow ); + } + else { + // Find the mirror pixel. + pt = ( uv * aspect - 2.0 * side * normal ) / aspect; + + // Check if we''re still inside the image bounds. + if( pt.x >= 0.0 && pt.x < 1.0 && pt.y >= 0.0 && pt.y < 1.0 ) { + float4 back = image.Sample( textureSampler, pt ); // Back color. + back.rgb = back.rgb * 0.25 + 0.75; + + float shadow = smoothstep( 0.0, 0.2, -side ); + back.rgb = lerp( back.rgb * 0.2, back.rgb, shadow ); + + // Support for transparency. + col = lerp( col, back.rgb, back.a ); + } + } + + // Output to screen + return float4(col,1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSPagePeelTransitionShader.ps1 b/Commands/Shaders/Get-OBSPagePeelTransitionShader.ps1 new file mode 100644 index 000000000..b9f162f70 --- /dev/null +++ b/Commands/Shaders/Get-OBSPagePeelTransitionShader.ps1 @@ -0,0 +1,230 @@ +function Get-OBSPagePeelTransitionShader { + +[Alias('Set-OBSPagePeelTransitionShader','Add-OBSPagePeelTransitionShader')] +param( +# Set the image_a of OBSPagePeelTransitionShader +[Alias('image_a')] +[ComponentModel.DefaultBindingProperty('image_a')] +[String] +$ImageA, +# Set the image_b of OBSPagePeelTransitionShader +[Alias('image_b')] +[ComponentModel.DefaultBindingProperty('image_b')] +[String] +$ImageB, +# Set the transition_time of OBSPagePeelTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBSPagePeelTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# Set the page_color of OBSPagePeelTransitionShader +[Alias('page_color')] +[ComponentModel.DefaultBindingProperty('page_color')] +[String] +$PageColor, +# Set the page_transparency of OBSPagePeelTransitionShader +[Alias('page_transparency')] +[ComponentModel.DefaultBindingProperty('page_transparency')] +[Single] +$PageTransparency, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'page-peel-transition' +$ShaderNoun = 'OBSPagePeelTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d image_a; +uniform texture2d image_b; +uniform float transition_time< + string label = "Transittion Time"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform bool convert_linear = true; +uniform float4 page_color = {1.0, 1.0, 1.0, 1.0}; +uniform float page_transparency< + string label = "Page Transparency"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + // Normalized pixel coordinates (from 0 to 1) + float2 aspect = float2( uv_size.x / uv_size.y, 1.0 ); + float2 uv = v_in.uv; + + float t = transition_time * 12.0 + 11.0; + // Define the fold. + float2 origin = float2( 0.6 + 0.6 * sin( t * 0.2 ), 0.5 + 0.5 * cos( t * 0.13 ) ) * aspect; + float2 normal = normalize( float2( 1.0, 2.0 * sin( t * 0.3 ) ) * aspect ); + + // Sample texture. + float3 col = float3(1.0,0.0,0.0); + + // Check on which side the pixel lies. + float2 pt = uv * aspect - origin; + float side = dot( pt, normal ); + if( side > 0.0 ) { + // Next page + col = image_b.Sample( textureSampler, uv ).rgb; + + float shadow = smoothstep( 0.0, 0.05, side ); + col = lerp( col * 0.6, col, shadow ); + } + else { + + + // Find the mirror pixel. + pt = ( uv * aspect - 2.0 * side * normal ) / aspect; + + // Check if we''re still inside the image bounds. + if( pt.x >= 0.0 && pt.x < 1.0 && pt.y >= 0.0 && pt.y < 1.0 ) { + col = image_a.Sample( textureSampler, pt ).rgb; // Back color. + col = lerp(page_color.rgb, col, page_transparency); + + float shadow = smoothstep( 0.0, 0.2, -side ); + col = lerp( col * 0.2, col, shadow ); + }else{ + col = image_a.Sample( textureSampler, uv ).rgb; + } + } + + // Output to screen + if(convert_linear) + col = srgb_nonlinear_to_linear(col); + return float4(col,1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSPerlinNoiseShader.ps1 b/Commands/Shaders/Get-OBSPerlinNoiseShader.ps1 new file mode 100644 index 000000000..51a2dadf2 --- /dev/null +++ b/Commands/Shaders/Get-OBSPerlinNoiseShader.ps1 @@ -0,0 +1,429 @@ +function Get-OBSPerlinNoiseShader { + +[Alias('Set-OBSPerlinNoiseShader','Add-OBSPerlinNoiseShader')] +param( +# Set the speed of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the animated of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('animated')] +[Management.Automation.SwitchParameter] +$Animated, +# Set the apply_to_channel of OBSPerlinNoiseShader +[Alias('apply_to_channel')] +[ComponentModel.DefaultBindingProperty('apply_to_channel')] +[Management.Automation.SwitchParameter] +$ApplyToChannel, +# Set the inverted of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('inverted')] +[Management.Automation.SwitchParameter] +$Inverted, +# Set the multiply of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('multiply')] +[Management.Automation.SwitchParameter] +$Multiply, +# Set the speed_horizonal of OBSPerlinNoiseShader +[Alias('speed_horizonal')] +[ComponentModel.DefaultBindingProperty('speed_horizonal')] +[Single] +$SpeedHorizonal, +# Set the speed_vertical of OBSPerlinNoiseShader +[Alias('speed_vertical')] +[ComponentModel.DefaultBindingProperty('speed_vertical')] +[Single] +$SpeedVertical, +# Set the iterations of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('iterations')] +[Int32] +$Iterations, +# Set the white_noise of OBSPerlinNoiseShader +[Alias('white_noise')] +[ComponentModel.DefaultBindingProperty('white_noise')] +[Single] +$WhiteNoise, +# Set the black_noise of OBSPerlinNoiseShader +[Alias('black_noise')] +[ComponentModel.DefaultBindingProperty('black_noise')] +[Single] +$BlackNoise, +# Set the notes of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'perlin_noise' +$ShaderNoun = 'OBSPerlinNoiseShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// +// Noise Shader Library for Unity - https://github.com/keijiro/NoiseShader +// Modified and improved my Charles Fettinger (https://github.com/Oncorporation) 1/2019 +// +// Original work (webgl-noise) Copyright (C) 2011 Stefan Gustavson +// Translation and modification was made by Keijiro Takahashi. +// Conversion for OBS by Charles Fettinger. +// +// This shader is based on the webgl-noise GLSL shader. For further details +// of the original shader, please see the following description from the +// original source code. +// + // +// GLSL textureless classic 2D noise "cnoise", (white_noise) +// with an RSL-style periodic variant "pnoise" (black_noise). +// Author: Stefan Gustavson (stefan.gustavson@liu.se) +// Version: 2011-08-22 +// +// Many thanks to Ian McEwan of Ashima Arts for the +// ideas for permutation and gradient selection. +// +// Copyright (c) 2011 Stefan Gustavson. All rights reserved. +// Distributed under the MIT license. See LICENSE file. +// https://github.com/ashima/webgl-noise +//Converted to OpenGL by Q-mii & Exeldro March 8, 2022 + float4 mod(float4 x, float4 y) +{ + return x - y * floor(x / y); +} + float4 mod289(float4 x) +{ + return x - floor(x / 289.0) * 289.0; +} + float4 permute(float4 x) +{ + return mod289(((x*34.0)+1.0)*x); +} + float4 taylorInvSqrt(float4 r) +{ + return 1.79284291400159 - r * 0.85373472095314; +} + float2 fade(float2 t) { + return t*t*t*(t*(t*6.0-15.0)+10.0); +} + // Classic Perlin noise +float cnoise(float2 P) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac (P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + float4 i = permute(permute(ix) + iy); + float4 gx = frac(i / 41.0) * 2.0 - 1.0 ; + float4 gy = abs(gx) - 0.5 ; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + float2 g00 = float2(gx.x,gy.x); + float2 g10 = float2(gx.y,gy.y); + float2 g01 = float2(gx.z,gy.z); + float2 g11 = float2(gx.w,gy.w); + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} + // Classic Perlin noise, periodic variant +float pnoise(float2 P, float2 rep) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac (P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod(Pi, rep.xyxy); // To create noise with explicit period + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + float4 i = permute(permute(ix) + iy); + float4 gx = frac(i / 41.0) * 2.0 - 1.0 ; + float4 gy = abs(gx) - 0.5 ; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + float2 g00 = float2(gx.x,gy.x); + float2 g10 = float2(gx.y,gy.y); + float2 g01 = float2(gx.z,gy.z); + float2 g11 = float2(gx.w,gy.w); + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} + //The good bits~ adapting the noise generator for the plugin and giving some control over the shader + //todo: pseudorandom number generator w/ seed +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.5; +uniform bool animated; +uniform bool apply_to_channel; +uniform bool inverted; +uniform bool multiply; +uniform float speed_horizonal< + string label = "Speed horizontal"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.5; +uniform float speed_vertical< + string label = "Speed vertical"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0; +uniform int iterations< + string label = "Iterations"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 20; + int step = 1; +> = 4; +//how much c_noise do we want? white +uniform float white_noise< + string label = "White noise"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.5; +//how much p_noise do we want? black +uniform float black_noise< + string label = "Black noise"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.5; +uniform string notes< + string widget_type = "info"; +> = "white noise and black noise and iterations.. enjoy!"; + + float2 noisePosition(float t){ + return float2(sin(2.2 * t) - cos(1.4 * t), cos(1.3 * t) + sin(-1.9 *t)); +} + float4 mainImage(VertData v_in) : TARGET +{ + float4 color = image.Sample(textureSampler, v_in.uv); + float t = elapsed_time * speed; + float2 dir = float2(speed_horizonal,speed_vertical); + + if(!animated){ + float o = 0.5; + float scale = 1.0; + float w = 0.5; + for(int i = 0; i < iterations; i++){ + float2 coord = v_in.uv * scale; + float2 period = float2(scale * 2.0, scale * 2.0); + + if(white_noise == 0.0 && black_noise == 0.0){ + o += pnoise(coord, period) * w; + } else { + if(white_noise != 0.0){ + o += cnoise(coord) * w * white_noise; + } + if(black_noise != 0.0){ + o += pnoise(coord, period) * w * black_noise; + } + } + + //o += pnoise(coord, period) * w; + + scale *= 2.0; + w *= 0.5; + } + if(inverted){ + o = 1 - o; + } + if(apply_to_channel){ + if(multiply){ + return float4(color.r,color.g,color.b,color.a*o); + } else { + return float4(color.r,color.g,color.b,o); + } + } else { + return float4(o,o,o,1.0); + } + } else { + float o = 0.5; + float scale = 1.0; + float w = 0.5; + for(int i = 0; i < iterations; i++){ + float2 coord = (v_in.uv + t*dir) * scale; + float2 period = float2(scale * 2.0, scale * 2.0); + + if(white_noise == 0.0 && black_noise == 0.0){ + o += pnoise(coord, period) * w; + } else { + if(white_noise != 0.0){ + o += cnoise(coord) * w * white_noise; + } + if(black_noise != 0.0){ + o += pnoise(coord, period) * w * black_noise; + } + } + + scale *= 2.0; + w *= 0.5; + } + if(inverted){ + o = 1 - o; + } + if(apply_to_channel){ + if(multiply){ + return float4(color.r,color.g,color.b,color.a*o); + } else { + return float4(color.r,color.g,color.b,o); + } + } else { + return float4(o,o,o,1.0); + } + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSPieChartShader.ps1 b/Commands/Shaders/Get-OBSPieChartShader.ps1 new file mode 100644 index 000000000..83e5ea0d8 --- /dev/null +++ b/Commands/Shaders/Get-OBSPieChartShader.ps1 @@ -0,0 +1,402 @@ +function Get-OBSPieChartShader { + +[Alias('Set-OBSPieChartShader','Add-OBSPieChartShader')] +param( +# Set the inner_radius of OBSPieChartShader +[Alias('inner_radius')] +[ComponentModel.DefaultBindingProperty('inner_radius')] +[Single] +$InnerRadius, +# Set the outer_radius of OBSPieChartShader +[Alias('outer_radius')] +[ComponentModel.DefaultBindingProperty('outer_radius')] +[Single] +$OuterRadius, +# Set the start_angle of OBSPieChartShader +[Alias('start_angle')] +[ComponentModel.DefaultBindingProperty('start_angle')] +[Single] +$StartAngle, +# Set the total of OBSPieChartShader +[ComponentModel.DefaultBindingProperty('total')] +[Int32] +$Total, +# Set the part_1 of OBSPieChartShader +[Alias('part_1')] +[ComponentModel.DefaultBindingProperty('part_1')] +[Int32] +$Part1, +# Set the color_1 of OBSPieChartShader +[Alias('color_1')] +[ComponentModel.DefaultBindingProperty('color_1')] +[String] +$Color1, +# Set the part_2 of OBSPieChartShader +[Alias('part_2')] +[ComponentModel.DefaultBindingProperty('part_2')] +[Int32] +$Part2, +# Set the color_2 of OBSPieChartShader +[Alias('color_2')] +[ComponentModel.DefaultBindingProperty('color_2')] +[String] +$Color2, +# Set the part_3 of OBSPieChartShader +[Alias('part_3')] +[ComponentModel.DefaultBindingProperty('part_3')] +[Int32] +$Part3, +# Set the color_3 of OBSPieChartShader +[Alias('color_3')] +[ComponentModel.DefaultBindingProperty('color_3')] +[String] +$Color3, +# Set the part_4 of OBSPieChartShader +[Alias('part_4')] +[ComponentModel.DefaultBindingProperty('part_4')] +[Int32] +$Part4, +# Set the color_4 of OBSPieChartShader +[Alias('color_4')] +[ComponentModel.DefaultBindingProperty('color_4')] +[String] +$Color4, +# Set the part_5 of OBSPieChartShader +[Alias('part_5')] +[ComponentModel.DefaultBindingProperty('part_5')] +[Int32] +$Part5, +# Set the color_5 of OBSPieChartShader +[Alias('color_5')] +[ComponentModel.DefaultBindingProperty('color_5')] +[String] +$Color5, +# Set the part_6 of OBSPieChartShader +[Alias('part_6')] +[ComponentModel.DefaultBindingProperty('part_6')] +[Int32] +$Part6, +# Set the color_6 of OBSPieChartShader +[Alias('color_6')] +[ComponentModel.DefaultBindingProperty('color_6')] +[String] +$Color6, +# Set the part_7 of OBSPieChartShader +[Alias('part_7')] +[ComponentModel.DefaultBindingProperty('part_7')] +[Int32] +$Part7, +# Set the color_7 of OBSPieChartShader +[Alias('color_7')] +[ComponentModel.DefaultBindingProperty('color_7')] +[String] +$Color7, +# Set the part_8 of OBSPieChartShader +[Alias('part_8')] +[ComponentModel.DefaultBindingProperty('part_8')] +[Int32] +$Part8, +# Set the color_8 of OBSPieChartShader +[Alias('color_8')] +[ComponentModel.DefaultBindingProperty('color_8')] +[String] +$Color8, +# Set the part_9 of OBSPieChartShader +[Alias('part_9')] +[ComponentModel.DefaultBindingProperty('part_9')] +[Int32] +$Part9, +# Set the color_9 of OBSPieChartShader +[Alias('color_9')] +[ComponentModel.DefaultBindingProperty('color_9')] +[String] +$Color9, +# Set the part_10 of OBSPieChartShader +[Alias('part_10')] +[ComponentModel.DefaultBindingProperty('part_10')] +[Int32] +$Part10, +# Set the color_10 of OBSPieChartShader +[Alias('color_10')] +[ComponentModel.DefaultBindingProperty('color_10')] +[String] +$Color10, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'pie-chart' +$ShaderNoun = 'OBSPieChartShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float inner_radius< + string label = "inner radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 32.0; +uniform float outer_radius< + string label = "outer radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 50.0; +uniform float start_angle< + string label = "Start angle"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 360.0; + float step = 0.1; +> = 90.0; + +uniform int total< + string label = "Total"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 100; +uniform int part_1< + string label = "Part 1"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 50; +uniform float4 color_1 = {0.0,0.26,0.62,1.0}; +uniform int part_2< + string label = "Part 2"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 25; +uniform float4 color_2 = {0.24,0.40,0.68,1.0}; +uniform int part_3< + string label = "Part 3"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 10; +uniform float4 color_3 = {0.38,0.56,0.75,1.0}; +uniform int part_4< + string label = "Part 4"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 5; +uniform float4 color_4 = {0.52,0.72,0.81,1.0}; +uniform int part_5< + string label = "Part 5"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 3; +uniform float4 color_5 = {0.69,0.87,0.86,1.0}; +uniform int part_6< + string label = "Part 6"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 2; +uniform float4 color_6 = {1.0,0.79,0.73,1.0}; +uniform int part_7< + string label = "Part 7"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 1; +uniform float4 color_7 = {0.99,0.57,0.57,1.0}; +uniform int part_8< + string label = "Part 8"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 1; +uniform float4 color_8 = {0.91,0.36,0.44,1.0}; +uniform int part_9< + string label = "Part 9"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 1; +uniform float4 color_9 = {0.77,0.16,0.32,1.0}; +uniform int part_10< + string label = "Part 10"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 0; +uniform float4 color_10 = {0.58,0.0,0.23,1.0}; + +float4 mainImage(VertData v_in) : TARGET +{ + const float pi = 3.14159265358979323846; +#ifdef OPENGL + float[10] parts = float[10](part_1, part_2, part_3, part_4, part_5, part_6, part_7, part_8, part_9, part_10); + float4[10] colors = float4[10](color_1, color_2, color_3, color_4, color_5, color_6, color_7, color_8, color_9, color_10); +#else + float parts[] = {part_1, part_2, part_3, part_4, part_5, part_6, part_7, part_8, part_9, part_10}; + float4 colors[] = {color_1, color_2, color_3, color_4, color_5, color_6, color_7, color_8, color_9, color_10}; +#endif + float2 center = float2(0.5, 0.5); + float2 factor; + if(uv_size.x < uv_size.y){ + factor = float2(1.0, uv_size.y/uv_size.x); + }else{ + factor = float2(uv_size.x/uv_size.y, 1.0); + } + center = center * factor; + float d = distance(center, v_in.uv * factor); + if(d > outer_radius/100.0 || d < inner_radius/100.0){ + return image.Sample(textureSampler, v_in.uv); + } + float2 toCenter = center - v_in.uv*factor; + float angle = atan2(toCenter.y ,toCenter.x); + angle = angle - (start_angle / 180.0 * pi); + if(angle < 0.0) + angle = pi + pi + angle; + if(angle < 0.0) + angle = pi + pi + angle; + angle = angle / (pi + pi); + float t = 0.0; + for(int i = 0; i < 10; i+=1) { + float part = parts[i]/total; + if(angle > t && angle <= t+part){ + return colors[i]; + } + t = t + part; + } + return image.Sample(textureSampler, v_in.uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSPixelationShader.ps1 b/Commands/Shaders/Get-OBSPixelationShader.ps1 new file mode 100644 index 000000000..08ec513f5 --- /dev/null +++ b/Commands/Shaders/Get-OBSPixelationShader.ps1 @@ -0,0 +1,192 @@ +function Get-OBSPixelationShader { + +[Alias('Set-OBSPixelationShader','Add-OBSPixelationShader')] +param( +# Set the Target_Width of OBSPixelationShader +[Alias('Target_Width')] +[ComponentModel.DefaultBindingProperty('Target_Width')] +[Single] +$TargetWidth, +# Set the Target_Height of OBSPixelationShader +[Alias('Target_Height')] +[ComponentModel.DefaultBindingProperty('Target_Height')] +[Single] +$TargetHeight, +# Set the notes of OBSPixelationShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'pixelation' +$ShaderNoun = 'OBSPixelationShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// pixelation shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +// with help from SkeltonBowTV +// https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 15, 2022 +uniform float Target_Width< + string label = "Target Width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2000.0; + float step = 0.1; +> = 320.0; +uniform float Target_Height< + string label = "Target Height"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2000.0; + float step = 0.1; +> = 180.0; +uniform string notes< + string widget_type = "info"; +> = "adjust width and height to your screen dimension"; + +float4 mainImage(VertData v_in) : TARGET +{ + float targetWidth = Target_Width; + if(targetWidth < 2.0) + targetWidth = 2.0; + float targetHeight = Target_Height; + if(targetHeight < 2.0) + targetHeight = 2.0; + float2 tex1; + int pixelSizeX = int(uv_size.x / targetWidth); + int pixelSizeY = int(uv_size.y / targetHeight); + + int pixelX = int(v_in.uv.x * uv_size.x); + int pixelY = int(v_in.uv.y * uv_size.y); + + tex1.x = ((float(pixelX / pixelSizeX)*float(pixelSizeX)) / uv_size.x) + (float(pixelSizeX) / uv_size.x)/2.0; + tex1.y = ((float(pixelY / pixelSizeY)*float(pixelSizeY)) / uv_size.y) + (float(pixelSizeY) / uv_size.y)/2.0; + + float4 c1 = image.Sample(textureSampler, tex1 ); + + return c1; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSPixelationTransitionShader.ps1 b/Commands/Shaders/Get-OBSPixelationTransitionShader.ps1 new file mode 100644 index 000000000..6c3773df1 --- /dev/null +++ b/Commands/Shaders/Get-OBSPixelationTransitionShader.ps1 @@ -0,0 +1,210 @@ +function Get-OBSPixelationTransitionShader { + +[Alias('Set-OBSPixelationTransitionShader','Add-OBSPixelationTransitionShader')] +param( +# Set the transition_time of OBSPixelationTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBSPixelationTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# Set the power of OBSPixelationTransitionShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# Set the center_x of OBSPixelationTransitionShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSPixelationTransitionShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'pixelation-transition' +$ShaderNoun = 'OBSPixelationTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float transition_time< + string label = "Transittion Time"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform bool convert_linear = true; +uniform float power< + string label = "Power"; + string widget_type = "slider"; + float minimum = 0.5; + float maximum = 8.0; + float step = 0.01; +> = 3.0; +uniform float center_x< + string label = "X"; + string widget_type = "slider"; + string group = "Center"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform float center_y< + string label = "Y"; + string widget_type = "slider"; + string group = "Center"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + //1..0..1 + float scale = abs(transition_time - 0.5) * 2.0; + scale = pow(scale, power); + + float2 uv = v_in.uv; + uv -= float2(center_x, center_y); + uv *= uv_size; + uv *= scale; + uv = floor(uv); + uv /= scale; + uv /= uv_size; + uv += float2(center_x, center_y); + uv = clamp(uv, 1.0/uv_size, 1.0); + float4 rgba = image.Sample(textureSampler, uv); + if(convert_linear) + rgba.rgb = srgb_nonlinear_to_linear(rgba.rgb); + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSPolarShader.ps1 b/Commands/Shaders/Get-OBSPolarShader.ps1 new file mode 100644 index 000000000..e9d001945 --- /dev/null +++ b/Commands/Shaders/Get-OBSPolarShader.ps1 @@ -0,0 +1,238 @@ +function Get-OBSPolarShader { + +[Alias('Set-OBSPolarShader','Add-OBSPolarShader')] +param( +# Set the center_x of OBSPolarShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSPolarShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# Set the point_y of OBSPolarShader +[Alias('point_y')] +[ComponentModel.DefaultBindingProperty('point_y')] +[Single] +$PointY, +# Set the flip of OBSPolarShader +[ComponentModel.DefaultBindingProperty('flip')] +[Management.Automation.SwitchParameter] +$Flip, +# Set the rotate of OBSPolarShader +[ComponentModel.DefaultBindingProperty('rotate')] +[Single] +$Rotate, +# Set the repeat of OBSPolarShader +[ComponentModel.DefaultBindingProperty('repeat')] +[Single] +$Repeat, +# Set the scale of OBSPolarShader +[ComponentModel.DefaultBindingProperty('scale')] +[Single] +$Scale, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'polar' +$ShaderNoun = 'OBSPolarShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.14159265359 +#define PI_2 6.2831 +#define mod(x,y) (x - y * floor(x / y)) + +uniform float center_x< + string label = "Center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform float center_y< + string label = "Center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +uniform float point_y< + string label = "Point y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform bool flip; + +uniform float rotate< + string label = "Rotate"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float repeat< + string label = "Repeat"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 20.0; + float step = 0.001; +> = 1.0; + +uniform float scale< + string label = "Scale"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + uv.x -= center_x ; + uv.y -= center_y ; + uv.x = uv.x * ( uv_size.x / uv_size.y); + float pixel_angle = atan2(uv.x,uv.y)/PI_2+0.5; + if(repeat < 1.0){ + pixel_angle = mod(pixel_angle+rotate,1.0); + if(pixel_angle > repeat) + return float4(0,0,0,0); + pixel_angle = mod(pixel_angle/repeat,1.0); + } else { + pixel_angle = mod(pixel_angle*repeat+rotate, 1.0); + } + float pixel_distance = length(uv)/ scale - point_y; + float2 uv2 = float2(pixel_angle , pixel_distance); + if(flip) + uv2 = float2(1.0,1.0) - uv2; + return image.Sample(textureSampler,uv2); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSPulseShader.ps1 b/Commands/Shaders/Get-OBSPulseShader.ps1 new file mode 100644 index 000000000..09cc4fcde --- /dev/null +++ b/Commands/Shaders/Get-OBSPulseShader.ps1 @@ -0,0 +1,259 @@ +function Get-OBSPulseShader { + +[Alias('Set-OBSPulseShader','Add-OBSPulseShader')] +param( +# Set the ViewProj of OBSPulseShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSPulseShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSPulseShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSPulseShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSPulseShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSPulseShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSPulseShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSPulseShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the speed of OBSPulseShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the min_growth_pixels of OBSPulseShader +[Alias('min_growth_pixels')] +[ComponentModel.DefaultBindingProperty('min_growth_pixels')] +[Single] +$MinGrowthPixels, +# Set the max_growth_pixels of OBSPulseShader +[Alias('max_growth_pixels')] +[ComponentModel.DefaultBindingProperty('max_growth_pixels')] +[Single] +$MaxGrowthPixels, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'pulse' +$ShaderNoun = 'OBSPulseShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 1.0; +uniform float min_growth_pixels< + string label = "min growth pixels"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1000.0; + float step = 0.1; +> = 0.0; +uniform float max_growth_pixels< + string label = "max growth pixels"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1000.0; + float step = 0.1; +> = 200.0; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + + float3 pos = v_in.pos.xyz; + float3 direction_from_center = float3((v_in.uv.x - 0.5) * uv_pixel_interval.y / uv_pixel_interval.x, v_in.uv.y - 0.5, 0); + float3 min_pos = pos + direction_from_center * min_growth_pixels / 2; + float3 max_pos = pos + direction_from_center * max_growth_pixels / 2; + + float t = (1 + sin(elapsed_time * speed)) / 2; + float3 current_pos = min_pos * (1 - t) + max_pos * t; + + vert_out.pos = mul(float4(current_pos, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRGBAPercentShader.ps1 b/Commands/Shaders/Get-OBSRGBAPercentShader.ps1 new file mode 100644 index 000000000..f22eec066 --- /dev/null +++ b/Commands/Shaders/Get-OBSRGBAPercentShader.ps1 @@ -0,0 +1,199 @@ +function Get-OBSRGBAPercentShader { + +[Alias('Set-OBSRGBAPercentShader','Add-OBSRGBAPercentShader')] +param( +# Set the RedPercent of OBSRGBAPercentShader +[ComponentModel.DefaultBindingProperty('RedPercent')] +[Single] +$RedPercent, +# Set the GreenPercent of OBSRGBAPercentShader +[ComponentModel.DefaultBindingProperty('GreenPercent')] +[Single] +$GreenPercent, +# Set the BluePercent of OBSRGBAPercentShader +[ComponentModel.DefaultBindingProperty('BluePercent')] +[Single] +$BluePercent, +# Set the AlphaPercent of OBSRGBAPercentShader +[ComponentModel.DefaultBindingProperty('AlphaPercent')] +[Single] +$AlphaPercent, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'RGBA_Percent' +$ShaderNoun = 'OBSRGBAPercentShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simple RGBA Percent Shader +// Allows Red, Green, or Blue to be adjusted between 0-200% +// Allows Alpha to be adjusted between 0/100% +uniform float RedPercent< + string label = "Red percentage"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 200; + float step = 1.0; +> = 100; + +uniform float GreenPercent< + string label = "Green percentage"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 200; + float step = 1.0; +> = 100; + +uniform float BluePercent< + string label = "Blue percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200; + float step = 1.0; +> = 100.0; + + +uniform float AlphaPercent< + string label = "Alpha percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 100.0; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + + float4 imageColors = image.Sample(textureSampler, v_in.uv); + float4 adjustedColor = float4( + imageColors.r * (RedPercent * 0.01), + imageColors.g * (GreenPercent * 0.01), + imageColors.b * (BluePercent * 0.01), + imageColors.a * (AlphaPercent * 0.01) + ); + return adjustedColor; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRGSSAAShader.ps1 b/Commands/Shaders/Get-OBSRGSSAAShader.ps1 new file mode 100644 index 000000000..fe73fe24e --- /dev/null +++ b/Commands/Shaders/Get-OBSRGSSAAShader.ps1 @@ -0,0 +1,291 @@ +function Get-OBSRGSSAAShader { + +[Alias('Set-OBSRGSSAAShader','Add-OBSRGSSAAShader')] +param( +# Set the ColorSigma of OBSRGSSAAShader +[ComponentModel.DefaultBindingProperty('ColorSigma')] +[Single] +$ColorSigma, +# Set the SpatialSigma of OBSRGSSAAShader +[ComponentModel.DefaultBindingProperty('SpatialSigma')] +[Single] +$SpatialSigma, +# Set the notes of OBSRGSSAAShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'RGSSAA' +$ShaderNoun = 'OBSRGSSAAShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// RGSSAA shader by Eliseu Amaro for obs-shaderfilter plugin 2/2024 +// https://github.com/exeldro/obs-shaderfilter/tree/master +// Using edge detection shader as a base, created by Hallatore +// https://forums.unrealengine.com/t/sharper-image-without-the-edge-artifacts/108461 + +uniform float ColorSigma< + string label = "Color Sigma"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 1.0; + float step = 0.1; +> = 1.0; + +uniform float SpatialSigma< + string label = "Spatial Sigma"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 1.0; + float step = 0.1; +> = 1.0; + +uniform string notes< + string widget_type = "info"; +> = "Performs RGSSAA, a form of anti-aliasing. Implementation roughly follows the original with color and spatial sigma (or strengths) parameters. Useful to apply before a sharpen pass (e.g on a webcam feed)." + +float Luminance(float3 rgb) +{ + return rgb.r * 0.299 + rgb.g * 0.587 + rgb.b * 0.114; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float3 SceneColor = image.Sample(textureSampler, v_in.uv).rgb; + float2 SceneUV = v_in.uv; + float2 TexelScale = 1.0f/uv_size; + + const float SQRT2 = 1.4142135624; + const float PI = 3.141592654; + const float angle = PI / 8.0; + const float cs = cos(angle); + const float sn = sin(angle); + + // Rotated grid samples + float3 C1 = + image.Sample(textureSampler, SceneUV + float2(cs, -sn) * TexelScale).rgb; + float3 C2 = + image.Sample(textureSampler, SceneUV + float2(-cs, -sn) * TexelScale).rgb; + float3 C3 = + image.Sample(textureSampler, SceneUV + float2(-sn, cs) * TexelScale).rgb; + float3 C4 = + image.Sample(textureSampler, SceneUV + float2(sn, cs) * TexelScale).rgb; + float3 C5 = + image.Sample(textureSampler, SceneUV + float2(cs * SQRT2, 0) * TexelScale).rgb; + float3 C6 = + image.Sample(textureSampler, SceneUV + float2(0, sn *SQRT2) * TexelScale).rgb; + float3 C7 = + image.Sample(textureSampler, SceneUV + float2(-cs * SQRT2, 0) * TexelScale).rgb; + float3 C8 = + image.Sample(textureSampler, SceneUV + float2(0, -sn *SQRT2) * TexelScale).rgb; + + // Luminance edge detection + float A0 = Luminance(SceneColor); + float CL1 = Luminance(C1); + float L1 = ((max(CL1, A0)) / (min(CL1, A0) + 0.001) - 1); + float CL2 = Luminance(C2); + float L2 = ((max(CL2, A0)) / (min(CL2, A0) + 0.001) - 1); + float CL3 = Luminance(C3); + float L3 = ((max(CL3, A0)) / (min(CL3, A0) + 0.001) - 1); + float CL4 = Luminance(C4); + float L4 = ((max(CL4, A0)) / (min(CL4, A0) + 0.001) - 1); + float CL5 = Luminance(C5); + float L5 = ((max(CL5, A0)) / (min(CL5, A0) + 0.001) - 1); + float CL6 = Luminance(C6); + float L6 = ((max(CL6, A0)) / (min(CL6, A0) + 0.001) - 1); + float CL7 = Luminance(C7); + float L7 = ((max(CL7, A0)) / (min(CL7, A0) + 0.001) - 1); + float CL8 = Luminance(C8); + float L8 = ((max(CL8, A0)) / (min(CL8, A0) + 0.001) - 1); + float NeighborDifference = max(max(max(L1, L2), max(L3, L4)), max(max(L5, L6), max(L7, L8))); + + // Calculate distance-based weights + float2 Dist1 = float2(cs, -sn); + float2 Dist2 = float2(-cs, -sn); + float2 Dist3 = float2(-sn, cs); + float2 Dist4 = float2(sn, cs); + float2 Dist5 = float2(cs * SQRT2, 0); + float2 Dist6 = float2(0, sn * SQRT2); + float2 Dist7 = float2(-cs * SQRT2, 0); + float2 Dist8 = float2(0, -sn * SQRT2); + float SW1 = exp(-dot(Dist1, Dist1) / (2.0 * SpatialSigma * SpatialSigma)); + float SW2 = exp(-dot(Dist2, Dist2) / (2.0 * SpatialSigma * SpatialSigma)); + float SW3 = exp(-dot(Dist3, Dist3) / (2.0 * SpatialSigma * SpatialSigma)); + float SW4 = exp(-dot(Dist4, Dist4) / (2.0 * SpatialSigma * SpatialSigma)); + float SW5 = exp(-dot(Dist5, Dist5) / (2.0 * SpatialSigma * SpatialSigma)); + float SW6 = exp(-dot(Dist6, Dist6) / (2.0 * SpatialSigma * SpatialSigma)); + float SW7 = exp(-dot(Dist7, Dist7) / (2.0 * SpatialSigma * SpatialSigma)); + float SW8 = exp(-dot(Dist8, Dist8) / (2.0 * SpatialSigma * SpatialSigma)); + + // Color weights + float3 ColorDiff1 = SceneColor.rgb - C1; + float3 ColorDiff2 = SceneColor.rgb - C2; + float3 ColorDiff3 = SceneColor.rgb - C3; + float3 ColorDiff4 = SceneColor.rgb - C4; + float3 ColorDiff5 = SceneColor.rgb - C5; + float3 ColorDiff6 = SceneColor.rgb - C6; + float3 ColorDiff7 = SceneColor.rgb - C7; + float3 ColorDiff8 = SceneColor.rgb - C8; + + float CW1 = exp(-dot(ColorDiff1, ColorDiff1) / (2.0 * ColorSigma * ColorSigma)); + float CW2 = exp(-dot(ColorDiff2, ColorDiff2) / (2.0 * ColorSigma * ColorSigma)); + float CW3 = exp(-dot(ColorDiff3, ColorDiff3) / (2.0 * ColorSigma * ColorSigma)); + float CW4 = exp(-dot(ColorDiff4, ColorDiff4) / (2.0 * ColorSigma * ColorSigma)); + float CW5 = exp(-dot(ColorDiff5, ColorDiff5) / (2.0 * ColorSigma * ColorSigma)); + float CW6 = exp(-dot(ColorDiff6, ColorDiff6) / (2.0 * ColorSigma * ColorSigma)); + float CW7 = exp(-dot(ColorDiff7, ColorDiff7) / (2.0 * ColorSigma * ColorSigma)); + float CW8 = exp(-dot(ColorDiff8, ColorDiff8) / (2.0 * ColorSigma * ColorSigma)); + + // Mixing weights + float W1 = SW1 * CW1; + float W2 = SW2 * CW2; + float W3 = SW3 * CW3; + float W4 = SW4 * CW4; + float W5 = SW5 * CW5; + float W6 = SW6 * CW6; + float W7 = SW7 * CW7; + float W8 = SW8 * CW8; + float TotalWeight = W1 + W2 + W3 + W4 + W5 + W6 + W7 + W8; + + // Weighted color + float3 AAResult = (C1 * W1 + C2 * W2 + C3 * W3 + C4 * W4 + C5 * W5 + C6 * W6 + + C7 * W7 + C8 * W8) / + max(TotalWeight, 0.0001); + + // Blend it + float4 LuminanceNeightbors = float4(CL1, CL2, CL3, CL4); + float4 LuminanceNeightbors2 = float4(CL5, CL6, CL7, CL8); + float4 A0LuminanceNeightbors = abs(A0 - LuminanceNeightbors); + float4 A0LuminanceNeightbors2 = abs(A0 - LuminanceNeightbors2); + float A0Max = max(max(A0LuminanceNeightbors.r, A0LuminanceNeightbors.g), max(A0LuminanceNeightbors.b, A0LuminanceNeightbors.a)); + float A0Max2 = max(max(A0LuminanceNeightbors2.r, A0LuminanceNeightbors2.g), max(A0LuminanceNeightbors2.b, A0LuminanceNeightbors2.a)); + float HDREdge = max(A0Max, A0Max2); + float EdgeMask = saturate(1.0f - HDREdge); + + return float4(lerp(SceneColor.rgb, AAResult, EdgeMask), 1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRainWindowShader.ps1 b/Commands/Shaders/Get-OBSRainWindowShader.ps1 new file mode 100644 index 000000000..4ace9caeb --- /dev/null +++ b/Commands/Shaders/Get-OBSRainWindowShader.ps1 @@ -0,0 +1,396 @@ +function Get-OBSRainWindowShader { + +[Alias('Set-OBSRainWindowShader','Add-OBSRainWindowShader')] +param( +# Set the size of OBSRainWindowShader +[ComponentModel.DefaultBindingProperty('size')] +[Single] +$Size, +# Set the blurSize of OBSRainWindowShader +[ComponentModel.DefaultBindingProperty('blurSize')] +[Single] +$BlurSize, +# Set the trail_strength of OBSRainWindowShader +[Alias('trail_strength')] +[ComponentModel.DefaultBindingProperty('trail_strength')] +[Single] +$TrailStrength, +# Set the trail_color of OBSRainWindowShader +[Alias('trail_color')] +[ComponentModel.DefaultBindingProperty('trail_color')] +[Single] +$TrailColor, +# Set the speed of OBSRainWindowShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the debug of OBSRainWindowShader +[ComponentModel.DefaultBindingProperty('debug')] +[Management.Automation.SwitchParameter] +$DebugShader, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rain-window' +$ShaderNoun = 'OBSRainWindowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// https://www.shadertoy.com/view/slfSzS adopted for OBS by Exeldro +// shader derived from Heartfelt - by Martijn Steinrucken aka BigWings - 2017 +// https://www.shadertoy.com/view/ltffzl +// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. + +uniform float size< + string label = "Rain Drop Size"; + string widget_type = "slider"; + float minimum = 0.001; + float maximum = 0.5; + float step = 0.01; +> = 0.2; +uniform float blurSize< + string label = "Blur Radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 32.0; // BLUR SIZE (Radius) +uniform float trail_strength< + string label = "Trail Strength"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100.0; +uniform float trail_color< + string label = "Trail Color"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 40.0; +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200.0; + float step = 0.01; +> = 100.0; +uniform bool debug = false; + + +float fract(float v){ + return v - floor(v); +} + +float2 fract2(float2 v){ + return float2(v.x - floor(v.x), v.y - floor(v.y)); +} + +float3 fract3(float3 v){ + return float3(v.x - floor(v.x), v.y - floor(v.y), v.z - floor(v.z)); +} + +float3 fract4(float4 v){ + return float4(v.x - floor(v.x), v.y - floor(v.y), v.z - floor(v.z), v.w - floor(v.w)); +} + + +float3 N13(float p) { + // from DAVE HOSKINS + float3 p3 = fract3(float3(p, p, p) * float3(.1031,.11369,.13787)); + p3 += dot(p3, p3.yzx + 19.19); + return fract3(float3((p3.x + p3.y)*p3.z, (p3.x+p3.z)*p3.y, (p3.y+p3.z)*p3.x)); +} + +float4 N14(float t) { + return fract4(sin(t*float4(123., 1024., 1456., 264.))*float4(6547., 345., 8799., 1564.)); +} +float N(float t) { + return fract(sin(t*12345.564)*7658.76); +} + +float Saw(float b, float t) { + return smoothstep(0., b, t)*smoothstep(1., b, t); +} + +float2 Drops(float2 uv, float t) { + + float2 UV = uv; + + // DEFINE GRID + uv.y += t*0.8; + float2 a = float2(6., 1.); + float2 grid = a*2.; + float2 id = floor(uv*grid); + + // RANDOM SHIFT Y + float colShift = N(id.x); + uv.y += colShift; + + // DEFINE SPACES + id = floor(uv*grid); + float3 n = N13(id.x*35.2+id.y*2376.1); + float2 st = fract2(uv*grid)-float2(.5, 0); + + // POSITION DROPS + //clamp(2*x,0,2)+clamp(1-x*.5, -1.5, .5)+1.5-2 + float x = n.x-.5; + + float y = UV.y*20.; + + float distort = sin(y+sin(y)); + x += distort*(.5-abs(x))*(n.z-.5); + x *= .7; + float ti = fract(t+n.z); + y = (Saw(.85, ti)-.5)*.9+.5; + float2 p = float2(x, y); + + // DROPS + float d = length((st-p)*a.yx); + + float dSize = size; + + float Drop = smoothstep(dSize, .0, d); + + + float r = sqrt(smoothstep(1., y, st.y)); + float cd = abs(st.x-x); + + // TRAILS + float trail = smoothstep((dSize*.5+.03)*r, (dSize*.5-.05)*r, cd); + float trailFront = smoothstep(-.02, .02, st.y-y); + trail *= trailFront; + + + // DROPLETS + y = UV.y; + y += N(id.x); + float trail2 = smoothstep(dSize*r, .0, cd); + float droplets = max(0., (sin(y*(1.-y)*120.)-st.y))*trail2*trailFront*n.z; + y = fract(y*10.)+(st.y-.5); + float dd = length(st-float2(x, y)); + droplets = smoothstep(dSize*N(id.x), 0., dd); + float m = Drop+droplets*r*trailFront; + if(debug){ + m += st.x>a.y*.45 || st.y>a.x*.165 ? 1.2 : 0.; //DEBUG SPACES + } + + + return float2(m, trail); +} + +float StaticDrops(float2 uv, float t) { + uv *= 30.; + + float2 id = floor(uv); + uv = fract2(uv)-.5; + float3 n = N13(id.x*107.45+id.y*3543.654); + float2 p = (n.xy-.5)*0.5; + float d = length(uv-p); + + float fade = Saw(.025, fract(t+n.z)); + float c = smoothstep(size, 0., d)*fract(n.z*10.)*fade; + + return c; +} + +float2 Rain(float2 uv, float t) { + //float s = StaticDrops(uv, t); + float2 r1 = Drops(uv, t); + float2 r2 = Drops(uv*1.8, t); + float c; + if(debug){ + c = r1.x; + }else{ + c = r1.x+r2.x;//s+r1.x+r2.x; + } + + c = smoothstep(.3, 1., c); + + if(debug){ + return float2(c, r1.y); + }else{ + return float2(c, max(r1.y, r2.y)); + } +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv;//(fragCoord.xy-.5*iResolution.xy) / iResolution.y; + uv.y = 1.0 - uv.y; + uv = uv * uv_scale; + float2 UV = v_in.uv; + float T = elapsed_time * speed / 100.0; + + float t = T*.2; + + UV = (UV-.5)*(.9)+.5; + + float2 c = Rain(uv, t); + + float2 e = float2(.001, 0.); //pixel offset + float cx = Rain(uv+e, t).x; + float cy = Rain(uv+e.yx, t).x; + float2 n = float2(cx-c.x, cy-c.x); //normals + + // BLUR derived from existical https://www.shadertoy.com/view/Xltfzj + float Pi = 6.28318530718; // Pi*2 + + // GAUSSIAN BLUR SETTINGS {{{ + float Directions = 32.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower) + float Quality = 8.0; // BLUR QUALITY (Default 4.0 - More is better but slower) + // GAUSSIAN BLUR SETTINGS }}} + float2 Radius = blurSize/uv_size; + float3 col = image.Sample(textureSampler, UV).rgb; + + if(blurSize > 0.0){ + // Blur calculations + for(float d=0.0; dAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRainbowShader.ps1 b/Commands/Shaders/Get-OBSRainbowShader.ps1 new file mode 100644 index 000000000..c631b79cf --- /dev/null +++ b/Commands/Shaders/Get-OBSRainbowShader.ps1 @@ -0,0 +1,331 @@ +function Get-OBSRainbowShader { + +[Alias('Set-OBSRainbowShader','Add-OBSRainbowShader')] +param( +# Set the Saturation of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Saturation')] +[Single] +$Saturation, +# Set the Luminosity of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Luminosity')] +[Single] +$Luminosity, +# Set the Spread of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Spread')] +[Single] +$Spread, +# Set the Speed of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Alpha_Percentage of OBSRainbowShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Vertical of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# Set the Rotational of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Rotational')] +[Management.Automation.SwitchParameter] +$Rotational, +# Set the Rotation_Offset of OBSRainbowShader +[Alias('Rotation_Offset')] +[ComponentModel.DefaultBindingProperty('Rotation_Offset')] +[Single] +$RotationOffset, +# Set the Apply_To_Image of OBSRainbowShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSRainbowShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Apply_To_Specific_Color of OBSRainbowShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSRainbowShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Notes of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rainbow' +$ShaderNoun = 'OBSRainbowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Rainbow shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +// https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 13, 2022 +uniform float Saturation< + string label = "Saturation"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.8; // +uniform float Luminosity< + string label = "Luminosity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; // +uniform float Spread< + string label = "Spread"; + string widget_type = "slider"; + float minimum = 0.5; + float maximum = 10.0; + float step = 0.01; +> = 3.8; // +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 2.4; // +uniform float Alpha_Percentage< + string label = "Rotation Offset"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; // +uniform bool Vertical; +uniform bool Rotational; +uniform float Rotation_Offset< + string label = "Rotation Offset"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 6.28318531; + float step = 0.001; +> = 0.0; // +uniform bool Apply_To_Image; +uniform bool Replace_Image_Color; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform string Notes< + string widget_type = "info"; +> = "Spread is wideness of color and is limited between .25 and 10. Edit at your own risk"; + +float hueToRGB(float v1, float v2, float vH) { + vH = frac(vH); + if ((6.0 * vH) < 1.0) return (v1 + (v2 - v1) * 6.0 * vH); + if ((2.0 * vH) < 1.0) return (v2); + if ((3.0 * vH) < 2.0) return (v1 + (v2 - v1) * ((0.6666666666666667) - vH) * 6.0); + return clamp(v1, 0.0, 1.0); +} + +float4 HSLtoRGB(float4 hsl) { + float4 rgb = float4(0.0, 0.0, 0.0, hsl.w); + float v1 = 0.0; + float v2 = 0.0; + + if (hsl.y == 0) { + rgb.xyz = hsl.zzz; + } + else { + + if (hsl.z < 0.5) { + v2 = hsl.z * (1 + hsl.y); + } + else { + v2 = (hsl.z + hsl.y) - (hsl.y * hsl.z); + } + + v1 = 2.0 * hsl.z - v2; + + rgb.x = hueToRGB(v1, v2, hsl.x + (0.3333333333333333)); + rgb.y = hueToRGB(v1, v2, hsl.x); + rgb.z = hueToRGB(v1, v2, hsl.x - (0.3333333333333333)); + + } + + return rgb; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 lPos = (v_in.uv * uv_scale + uv_offset)/ clamp(Spread, 0.25, 10.0); + float time = (elapsed_time * clamp(Speed, -5.0, 5.0)) / clamp(Spread, 0.25, 10.0); + + //set colors and direction + float hue = (-1 * lPos.x) / 2.0; + + if (Rotational && (Vertical == false)) + { + float timeWithOffset = time + Rotation_Offset; + float sine = sin(timeWithOffset); + float cosine = cos(timeWithOffset); + hue = (lPos.x * cosine + lPos.y * sine) * 0.5; + } + + if (Vertical && (Rotational == false)) + { + hue = (-1 * lPos.y) * 0.5; + } + + hue += time; + hue = frac(hue); + float4 hsl = float4(hue, clamp(Saturation, 0.0, 1.0), clamp(Luminosity, 0.0, 1.0), 1.0); + float4 rgba = HSLtoRGB(hsl); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + float luma = 0.30*color.r+0.59*color.g+0.11*color.b+1.0*color.a; + float4 luma_color = float4(luma, luma, luma, luma); + if (Replace_Image_Color) + color = luma_color; + rgba = lerp(original_color, rgba * color,clamp(Alpha_Percentage *.01 ,0,1.0)); + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, clamp(Alpha_Percentage * .01, 0, 1.0)); + } + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRectangularDropShadowShader.ps1 b/Commands/Shaders/Get-OBSRectangularDropShadowShader.ps1 new file mode 100644 index 000000000..c7d77937f --- /dev/null +++ b/Commands/Shaders/Get-OBSRectangularDropShadowShader.ps1 @@ -0,0 +1,199 @@ +function Get-OBSRectangularDropShadowShader { + +[Alias('Set-OBSRectangularDropShadowShader','Add-OBSRectangularDropShadowShader')] +param( +# Set the shadow_offset_x of OBSRectangularDropShadowShader +[Alias('shadow_offset_x')] +[ComponentModel.DefaultBindingProperty('shadow_offset_x')] +[Int32] +$ShadowOffsetX, +# Set the shadow_offset_y of OBSRectangularDropShadowShader +[Alias('shadow_offset_y')] +[ComponentModel.DefaultBindingProperty('shadow_offset_y')] +[Int32] +$ShadowOffsetY, +# Set the shadow_blur_size of OBSRectangularDropShadowShader +[Alias('shadow_blur_size')] +[ComponentModel.DefaultBindingProperty('shadow_blur_size')] +[Int32] +$ShadowBlurSize, +# Set the shadow_color of OBSRectangularDropShadowShader +[Alias('shadow_color')] +[ComponentModel.DefaultBindingProperty('shadow_color')] +[String] +$ShadowColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rectangular_drop_shadow' +$ShaderNoun = 'OBSRectangularDropShadowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Exeldro February 22, 2022 +uniform int shadow_offset_x< + string label = "shadow offset x"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +>; +uniform int shadow_offset_y< + string label = "shadow offset y"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +>; +uniform int shadow_blur_size< + string label = "shadow blur size"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 100; + int step = 1; +> = 1; + +uniform float4 shadow_color; + +float4 mainImage(VertData v_in) : TARGET +{ + int shadow_blur_samples = int(pow(shadow_blur_size * 2 + 1, 2)); + + float4 color = image.Sample(textureSampler, v_in.uv); + float2 shadow_uv = float2(v_in.uv.x - uv_pixel_interval.x * int(shadow_offset_x), + v_in.uv.y - uv_pixel_interval.y * int(shadow_offset_y)); + + float start_of_overlap_x = max(0, shadow_uv.x - shadow_blur_size * uv_pixel_interval.x); + float end_of_overlap_x = min(1, shadow_uv.x + shadow_blur_size * uv_pixel_interval.x); + float x_proportion = (end_of_overlap_x - start_of_overlap_x) / (2 * shadow_blur_size * uv_pixel_interval.x); + + float start_of_overlap_y = max(0, shadow_uv.y - shadow_blur_size * uv_pixel_interval.y); + float end_of_overlap_y = min(1, shadow_uv.y + shadow_blur_size * uv_pixel_interval.y); + float y_proportion = (end_of_overlap_y - start_of_overlap_y) / (2 * shadow_blur_size * uv_pixel_interval.y); + + float4 final_shadow_color = float4(shadow_color.r, shadow_color.g, shadow_color.b, shadow_color.a * x_proportion * y_proportion); + + return final_shadow_color * (1-color.a) + color; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSReflectShader.ps1 b/Commands/Shaders/Get-OBSReflectShader.ps1 new file mode 100644 index 000000000..92a129a46 --- /dev/null +++ b/Commands/Shaders/Get-OBSReflectShader.ps1 @@ -0,0 +1,204 @@ +function Get-OBSReflectShader { + +[Alias('Set-OBSReflectShader','Add-OBSReflectShader')] +param( +# Set the Horizontal of OBSReflectShader +[ComponentModel.DefaultBindingProperty('Horizontal')] +[Management.Automation.SwitchParameter] +$Horizontal, +# Set the Vertical of OBSReflectShader +[ComponentModel.DefaultBindingProperty('Vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# Set the center_x_percent of OBSReflectShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Int32] +$CenterXPercent, +# Set the center_y_percent of OBSReflectShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Int32] +$CenterYPercent, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Reflect' +$ShaderNoun = 'OBSReflectShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simple Reflect Shader + +// Reflects horizontally and/or vertically. + +uniform bool Horizontal< + string label = "Reflect horizontally"; +> = false; +uniform bool Vertical< + string label = "Reflect vertically"; +> = true; + +uniform int center_x_percent< + string label = "center x percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; + + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + + if (Horizontal == true) { + if (pos.x < center_pos.x) { + pos.x = center_pos.x - pos.x; + } else if (pos.x == center_pos.x) { + pos.x = pos.x; + } else { + pos.x = pos.x - center_pos.x; + } + } + if (Vertical == true) { + if (pos.y < center_pos.y) { + pos.y = center_pos.y - pos.y; + } else if (pos.y == center_pos.y) { + pos.y = pos.y; + } else { + pos.y = pos.y - center_pos.y; + } + } + + return image.Sample(textureSampler, pos); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRemovePartialPixelsShader.ps1 b/Commands/Shaders/Get-OBSRemovePartialPixelsShader.ps1 new file mode 100644 index 000000000..3a1310012 --- /dev/null +++ b/Commands/Shaders/Get-OBSRemovePartialPixelsShader.ps1 @@ -0,0 +1,169 @@ +function Get-OBSRemovePartialPixelsShader { + +[Alias('Set-OBSRemovePartialPixelsShader','Add-OBSRemovePartialPixelsShader')] +param( +# Set the minimum_alpha_percent of OBSRemovePartialPixelsShader +[Alias('minimum_alpha_percent')] +[ComponentModel.DefaultBindingProperty('minimum_alpha_percent')] +[Int32] +$MinimumAlphaPercent, +# Set the notes of OBSRemovePartialPixelsShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'remove_partial_pixels' +$ShaderNoun = 'OBSRemovePartialPixelsShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Remove Partial Pixels shader by Charles Fettinger for obs-shaderfilter plugin 8/2020 +// https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 21, 2022 +uniform int minimum_alpha_percent< + string label = "minimum alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform string notes< + string widget_type = "info"; +> = "Removes partial pixels, excellent for cleaning greenscreen. Default Minimum Alpha Percent is 50%, lowering will reveal more pixels"; + +float4 mainImage(VertData v_in) : TARGET +{ + float min_alpha = clamp(minimum_alpha_percent * .01, -1.0, 101.0); + float4 output_color = image.Sample(textureSampler, v_in.uv); + if (output_color.a < min_alpha) + { + return float4(0.0, 0.0, 0.0, 0.0); + } + else + { + return float4(output_color); + } +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRepeatShader.ps1 b/Commands/Shaders/Get-OBSRepeatShader.ps1 new file mode 100644 index 000000000..cbb0b92ed --- /dev/null +++ b/Commands/Shaders/Get-OBSRepeatShader.ps1 @@ -0,0 +1,267 @@ +function Get-OBSRepeatShader { + +[Alias('Set-OBSRepeatShader','Add-OBSRepeatShader')] +param( +# Set the ViewProj of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the color_matrix of OBSRepeatShader +[Alias('color_matrix')] +[ComponentModel.DefaultBindingProperty('color_matrix')] +[Single[][]] +$ColorMatrix, +# Set the color_range_min of OBSRepeatShader +[Alias('color_range_min')] +[ComponentModel.DefaultBindingProperty('color_range_min')] +[Single[]] +$ColorRangeMin, +# Set the color_range_max of OBSRepeatShader +[Alias('color_range_max')] +[ComponentModel.DefaultBindingProperty('color_range_max')] +[Single[]] +$ColorRangeMax, +# Set the image of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSRepeatShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSRepeatShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSRepeatShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSRepeatShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSRepeatShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSRepeatShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the alpha of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('alpha')] +[Single] +$Alpha, +# Set the copies of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('copies')] +[Single] +$Copies, +# Set the notes of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'repeat' +$ShaderNoun = 'OBSRepeatShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Repeat Effect By Charles Fettinger (https://github.com/Oncorporation) 2/2019 + +uniform float4x4 ViewProj; +uniform float4x4 color_matrix; +uniform float3 color_range_min = {0.0, 0.0, 0.0}; +uniform float3 color_range_max = {1.0, 1.0, 1.0}; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; + +uniform float alpha< + string label = "Alpha"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 3.0; + float step = 0.001; +> = 1.0; +uniform float copies< + string label = "Copies"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 4.0; +uniform string notes< + string widget_type = "info"; +> = ''copies, use a number that has a square root. Alpha adjusts the alpha level of the copies (recommend 0.5-2.0 recommend)''; + +sampler_state def_sampler { + Filter = Linear; + AddressU = Repeat; + AddressV = Repeat; +}; + +struct VertInOut { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertInOut VSDefault(VertInOut vert_in) +{ + VertInOut vert_out; + vert_out.pos = mul(float4(vert_in.pos.xyz, 1 ), ViewProj); + vert_out.uv = vert_in.uv * sqrt(copies); + return vert_out; +} + +float4 PSDrawBare(VertInOut vert_in) : TARGET +{ + float4 rgba = image.Sample(def_sampler, vert_in.uv); + rgba.a *= alpha; + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vert_in); + pixel_shader = PSDrawBare(vert_in); + } +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRepeatTextureShader.ps1 b/Commands/Shaders/Get-OBSRepeatTextureShader.ps1 new file mode 100644 index 000000000..363d173e2 --- /dev/null +++ b/Commands/Shaders/Get-OBSRepeatTextureShader.ps1 @@ -0,0 +1,300 @@ +function Get-OBSRepeatTextureShader { + +[Alias('Set-OBSRepeatTextureShader','Add-OBSRepeatTextureShader')] +param( +# Set the ViewProj of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the color_matrix of OBSRepeatTextureShader +[Alias('color_matrix')] +[ComponentModel.DefaultBindingProperty('color_matrix')] +[Single[][]] +$ColorMatrix, +# Set the color_range_min of OBSRepeatTextureShader +[Alias('color_range_min')] +[ComponentModel.DefaultBindingProperty('color_range_min')] +[Single[]] +$ColorRangeMin, +# Set the color_range_max of OBSRepeatTextureShader +[Alias('color_range_max')] +[ComponentModel.DefaultBindingProperty('color_range_max')] +[Single[]] +$ColorRangeMax, +# Set the image of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the tex_image of OBSRepeatTextureShader +[Alias('tex_image')] +[ComponentModel.DefaultBindingProperty('tex_image')] +[String] +$TexImage, +# Set the elapsed_time of OBSRepeatTextureShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSRepeatTextureShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSRepeatTextureShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSRepeatTextureShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSRepeatTextureShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSRepeatTextureShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the blend of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('blend')] +[Single] +$Blend, +# Set the copies of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('copies')] +[Single] +$Copies, +# Set the notes of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the alpha_percentage of OBSRepeatTextureShader +[Alias('alpha_percentage')] +[ComponentModel.DefaultBindingProperty('alpha_percentage')] +[Single] +$AlphaPercentage, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'repeat_texture' +$ShaderNoun = 'OBSRepeatTextureShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Repeat Effect By Charles Fettinger (https://github.com/Oncorporation) 2/2019 + +uniform float4x4 ViewProj; +uniform float4x4 color_matrix; +uniform float3 color_range_min = {0.0, 0.0, 0.0}; +uniform float3 color_range_max = {1.0, 1.0, 1.0}; +uniform texture2d image; +uniform texture2d tex_image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; + +uniform float blend< + string label = "Blend"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 3.0; + float step = 0.001; +> = 1.0; +uniform float copies< + string label = "Copies"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 4.0; +uniform string notes< + string widget_type = "info"; +> = ''copies, use a number that has a square root. Blend adjusts the ratio of source and texture''; +uniform float alpha_percentage< + string label = "alpha percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; + +sampler_state tex_sampler { + Filter = Linear; + AddressU = Repeat; + AddressV = Repeat; +}; + +sampler_state base_sampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +struct VertIn { + float4 pos : POSITION; + float2 uv_0 : TEXCOORD0; + float2 uv_1 : TEXCOORD1; +}; + +struct VertOut { + float4 pos : POSITION; + float2 uv_0 : TEXCOORD0; + float2 uv_1 : TEXCOORD1; +}; + +VertOut VSDefault(VertIn vert_in) +{ + VertOut vert_out; + vert_out.pos = mul(float4(vert_in.pos.xyz, 1 ), ViewProj); + vert_out.uv_1 = vert_in.uv_0; + vert_out.uv_0 = vert_in.uv_0 * sqrt(copies); + return vert_out; +} + +float4 PSDrawBare(VertOut vert_in) : TARGET +{ + float alpha = clamp(alpha_percentage * 0.01 ,-1.0,2.0); + float4 tex = tex_image.Sample(tex_sampler, vert_in.uv_0); + float4 base = image.Sample(base_sampler, vert_in.uv_1); + + return (1 - alpha) * base + (alpha) * tex; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vert_in); + pixel_shader = PSDrawBare(vert_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRgbColorWheelShader.ps1 b/Commands/Shaders/Get-OBSRgbColorWheelShader.ps1 new file mode 100644 index 000000000..ecea1ff8f --- /dev/null +++ b/Commands/Shaders/Get-OBSRgbColorWheelShader.ps1 @@ -0,0 +1,268 @@ +function Get-OBSRgbColorWheelShader { + +[Alias('Set-OBSRgbColorWheelShader','Add-OBSRgbColorWheelShader')] +param( +# Set the speed of OBSRgbColorWheelShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the color_depth of OBSRgbColorWheelShader +[Alias('color_depth')] +[ComponentModel.DefaultBindingProperty('color_depth')] +[Single] +$ColorDepth, +# Set the Apply_To_Image of OBSRgbColorWheelShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSRgbColorWheelShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Apply_To_Specific_Color of OBSRgbColorWheelShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSRgbColorWheelShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Alpha_Percentage of OBSRgbColorWheelShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the center_width_percentage of OBSRgbColorWheelShader +[Alias('center_width_percentage')] +[ComponentModel.DefaultBindingProperty('center_width_percentage')] +[Int32] +$CenterWidthPercentage, +# Set the center_height_percentage of OBSRgbColorWheelShader +[Alias('center_height_percentage')] +[ComponentModel.DefaultBindingProperty('center_height_percentage')] +[Int32] +$CenterHeightPercentage, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rgb_color_wheel' +$ShaderNoun = 'OBSRgbColorWheelShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// RGB Color Wheel shader by Charles Fettinger for obs-shaderfilter plugin 5/2020 +// https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGl by Q-mii & Exeldro February 25, 2022 +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 15.0; + float step = 0.1; +> = 2.0; +uniform float color_depth< + string label = "Color Depth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.1; +> = 2.10; +uniform bool Apply_To_Image; +uniform bool Replace_Image_Color; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform float Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100; // +uniform int center_width_percentage< + string label = "center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_height_percentage< + string label = "center height percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; + +float3 hsv2rgb(float3 c) +{ + float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y); +} + +float mod(float x, float y) +{ + return x - y * floor(x / y); +} + +float4 mainImage(VertData v_in) : TARGET +{ + const float PI = 3.14159265f;//acos(-1); + float PI180th = 0.0174532925; //PI divided by 180 + float4 rgba = image.Sample(textureSampler, v_in.uv); + float2 center_pixel_coordinates = float2((center_width_percentage * 0.01), (center_height_percentage * 0.01) ); + float2 st = v_in.uv* uv_scale; + float2 toCenter = center_pixel_coordinates - st ; + float r = length(toCenter) * color_depth; + float angle = atan2(toCenter.y ,toCenter.x ); + float angleMod = (elapsed_time * mod(speed ,18)) / 18; + + rgba.rgb = hsv2rgb(float3((angle / PI*0.5) + angleMod,r,1.0)); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, rgba * color,clamp(Alpha_Percentage *.01 ,0,1.0)); + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, clamp(Alpha_Percentage * .01, 0, 1.0)); + } + + return rgba; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRgbSplitShader.ps1 b/Commands/Shaders/Get-OBSRgbSplitShader.ps1 new file mode 100644 index 000000000..c5a454a7d --- /dev/null +++ b/Commands/Shaders/Get-OBSRgbSplitShader.ps1 @@ -0,0 +1,212 @@ +function Get-OBSRgbSplitShader { + +[Alias('Set-OBSRgbSplitShader','Add-OBSRgbSplitShader')] +param( +# Set the redx of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('redx')] +[Single] +$Redx, +# Set the redy of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('redy')] +[Single] +$Redy, +# Set the greenx of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('greenx')] +[Single] +$Greenx, +# Set the greeny of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('greeny')] +[Single] +$Greeny, +# Set the bluex of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('bluex')] +[Single] +$Bluex, +# Set the bluey of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('bluey')] +[Single] +$Bluey, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rgb_split' +$ShaderNoun = 'OBSRgbSplitShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float redx< + string label = "Red X"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 2.00; +uniform float redy< + string label = "Red Y"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.00; +uniform float greenx< + string label = "Green X"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.00; +uniform float greeny< + string label = "Green Y"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.00; +uniform float bluex< + string label = "Blue X"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = -2.00; +uniform float bluey< + string label = "Blue Y"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.00; + + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + if(redx != 0.0 || redy != 0.0) + c.r = image.Sample(textureSampler, v_in.uv + float2(redx/100.0, redy/100.0)).r; + if(greenx != 0.0 || greeny != 0.0) + c.g = image.Sample(textureSampler, v_in.uv + float2(greenx/100.0, greeny/100.0)).g; + if(bluex != 0.0 || bluey != 0.0) + c.b = image.Sample(textureSampler, v_in.uv + float2(bluex/100.0, bluey/100.0)).b; + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRgbvisibilityShader.ps1 b/Commands/Shaders/Get-OBSRgbvisibilityShader.ps1 new file mode 100644 index 000000000..78346f0a0 --- /dev/null +++ b/Commands/Shaders/Get-OBSRgbvisibilityShader.ps1 @@ -0,0 +1,225 @@ +function Get-OBSRgbvisibilityShader { + +[Alias('Set-OBSRgbvisibilityShader','Add-OBSRgbvisibilityShader')] +param( +# Set the Red of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('Red')] +[Single] +$Red, +# Set the Green of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('Green')] +[Single] +$Green, +# Set the Blue of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('Blue')] +[Single] +$Blue, +# Set the RedVisibility of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('RedVisibility')] +[Single] +$RedVisibility, +# Set the GreenVisibility of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('GreenVisibility')] +[Single] +$GreenVisibility, +# Set the BlueVisibility of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('BlueVisibility')] +[Single] +$BlueVisibility, +# Set the notes of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rgbvisibility' +$ShaderNoun = 'OBSRgbvisibilityShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// RGB visibility separation filter, created by EposVox + +uniform float Red< + string label = "Red"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; + +uniform float Green< + string label = "Green"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; + +uniform float Blue< + string label = "Blue"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; + +uniform float RedVisibility< + string label = "Red Visibility"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +uniform float GreenVisibility< + string label = "Green Visibility"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +uniform float BlueVisibility< + string label = "Blue Visibility"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +uniform string notes< + string widget_type = "info"; +> = "Modify Colors to correct for gamma, use equal values for general correction."; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + float redChannel = pow(c.r, Red) * RedVisibility; + float greenChannel = pow(c.g, Green) * GreenVisibility; + float blueChannel = pow(c.b, Blue) * BlueVisibility; + + return float4(redChannel, greenChannel, blueChannel, c.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRippleShader.ps1 b/Commands/Shaders/Get-OBSRippleShader.ps1 new file mode 100644 index 000000000..7b0a4a7a9 --- /dev/null +++ b/Commands/Shaders/Get-OBSRippleShader.ps1 @@ -0,0 +1,202 @@ +function Get-OBSRippleShader { + +[Alias('Set-OBSRippleShader','Add-OBSRippleShader')] +param( +# Set the distance_factor of OBSRippleShader +[Alias('distance_factor')] +[ComponentModel.DefaultBindingProperty('distance_factor')] +[Single] +$DistanceFactor, +# Set the time_factor of OBSRippleShader +[Alias('time_factor')] +[ComponentModel.DefaultBindingProperty('time_factor')] +[Single] +$TimeFactor, +# Set the power_factor of OBSRippleShader +[Alias('power_factor')] +[ComponentModel.DefaultBindingProperty('power_factor')] +[Single] +$PowerFactor, +# Set the center_pos_x of OBSRippleShader +[Alias('center_pos_x')] +[ComponentModel.DefaultBindingProperty('center_pos_x')] +[Single] +$CenterPosX, +# Set the center_pos_y of OBSRippleShader +[Alias('center_pos_y')] +[ComponentModel.DefaultBindingProperty('center_pos_y')] +[Single] +$CenterPosY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'ripple' +$ShaderNoun = 'OBSRippleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float distance_factor< + string label = "distance factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.001; +> = 12.0; +uniform float time_factor< + string label = "time factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 2.0; +uniform float power_factor< + string label = "power factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 3.0; +uniform float center_pos_x< + string label = "center pos x"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float center_pos_y< + string label = "center pos y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 cPos = (v_in.uv * 2 ) -1; + float2 center_pos = float2(center_pos_x, center_pos_y); + float cLength = distance(cPos, center_pos); + float2 uv = v_in.uv+(cPos/cLength)*cos(cLength*distance_factor-elapsed_time*time_factor) * power_factor / 100.0; + return image.Sample(textureSampler, uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRotatingSourceShader.ps1 b/Commands/Shaders/Get-OBSRotatingSourceShader.ps1 new file mode 100644 index 000000000..a83073d39 --- /dev/null +++ b/Commands/Shaders/Get-OBSRotatingSourceShader.ps1 @@ -0,0 +1,237 @@ +function Get-OBSRotatingSourceShader { + +[Alias('Set-OBSRotatingSourceShader','Add-OBSRotatingSourceShader')] +param( +# Set the spin_speed of OBSRotatingSourceShader +[Alias('spin_speed')] +[ComponentModel.DefaultBindingProperty('spin_speed')] +[Single] +$SpinSpeed, +# Set the rotation of OBSRotatingSourceShader +[ComponentModel.DefaultBindingProperty('rotation')] +[Single] +$Rotation, +# Set the zoomin of OBSRotatingSourceShader +[ComponentModel.DefaultBindingProperty('zoomin')] +[Single] +$Zoomin, +# Set the keep_aspectratio of OBSRotatingSourceShader +[Alias('keep_aspectratio')] +[ComponentModel.DefaultBindingProperty('keep_aspectratio')] +[Management.Automation.SwitchParameter] +$KeepAspectratio, +# Set the x_center of OBSRotatingSourceShader +[Alias('x_center')] +[ComponentModel.DefaultBindingProperty('x_center')] +[Single] +$XCenter, +# Set the y_center of OBSRotatingSourceShader +[Alias('y_center')] +[ComponentModel.DefaultBindingProperty('y_center')] +[Single] +$YCenter, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rotating-source' +$ShaderNoun = 'OBSRotatingSourceShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//spin speed higher the slower +uniform float spin_speed< + string label = "Spin Speed"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; +uniform float rotation< + string label = "Rotation"; + string widget_type = "slider"; + float minimum = -360.0; + float maximum = 360.0; + float step = 0.1; +> = 0.0; +uniform float zoomin< + string label = "Zoom"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform bool keep_aspectratio = true; +uniform float x_center< + string label = "Center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform float y_center< + string label = "Center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + + +//main fragment code +//from lioran to nutella with love +float4 mainImage(VertData v_in) : TARGET +{ + float x_aspectratio = keep_aspectratio ? uv_size.x : 1.0; + float y_aspectratio = keep_aspectratio ? uv_size.y : 1.0; + //get position on of the texture and focus on the middle + float i_rotation; + if (spin_speed == 0){ + //turn angle number into pi number + i_rotation = rotation/57.295779513; + }else{ + //use elapsed time for spinning if spin speed is not 0 + i_rotation = elapsed_time * spin_speed; + } + float2 i_point; + i_point.x = (v_in.uv.x * x_aspectratio) - (x_aspectratio * x_center); + i_point.y = (v_in.uv.y * y_aspectratio) - (y_aspectratio * y_center); + + //get the angle from center , returns pi number + float i_dir = atan(i_point.y/i_point.x); + if(i_point.x < 0.0){ + i_dir += 3.14159265359; + } + + //get the distance from the centers + float i_distance = sqrt(pow(i_point.x,2) + pow(i_point.y,2)); + //multiple distance by the zoomin value + i_distance *= zoomin; + + //shift the texture position based on angle and distance from the middle + i_point.x = ((x_aspectratio*x_center)+cos(i_dir-i_rotation)*i_distance)/x_aspectratio; + i_point.y = ((y_aspectratio*y_center)+sin(i_dir-i_rotation)*i_distance)/y_aspectratio; + + //draw normally from new point + return image.Sample(textureSampler, i_point); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRotatoeShader.ps1 b/Commands/Shaders/Get-OBSRotatoeShader.ps1 new file mode 100644 index 000000000..a3472b57a --- /dev/null +++ b/Commands/Shaders/Get-OBSRotatoeShader.ps1 @@ -0,0 +1,374 @@ +function Get-OBSRotatoeShader { + +[Alias('Set-OBSRotatoeShader','Add-OBSRotatoeShader')] +param( +# Set the ViewProj of OBSRotatoeShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSRotatoeShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSRotatoeShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSRotatoeShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSRotatoeShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSRotatoeShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSRotatoeShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSRotatoeShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the speed_percent of OBSRotatoeShader +[Alias('speed_percent')] +[ComponentModel.DefaultBindingProperty('speed_percent')] +[Int32] +$SpeedPercent, +# Set the Axis_X of OBSRotatoeShader +[Alias('Axis_X')] +[ComponentModel.DefaultBindingProperty('Axis_X')] +[Single] +$AxisX, +# Set the Axis_Y of OBSRotatoeShader +[Alias('Axis_Y')] +[ComponentModel.DefaultBindingProperty('Axis_Y')] +[Single] +$AxisY, +# Set the Axis_Z of OBSRotatoeShader +[Alias('Axis_Z')] +[ComponentModel.DefaultBindingProperty('Axis_Z')] +[Single] +$AxisZ, +# Set the Angle_Degrees of OBSRotatoeShader +[Alias('Angle_Degrees')] +[ComponentModel.DefaultBindingProperty('Angle_Degrees')] +[Single] +$AngleDegrees, +# Set the Rotate_Transform of OBSRotatoeShader +[Alias('Rotate_Transform')] +[ComponentModel.DefaultBindingProperty('Rotate_Transform')] +[Management.Automation.SwitchParameter] +$RotateTransform, +# Set the Rotate_Pixels of OBSRotatoeShader +[Alias('Rotate_Pixels')] +[ComponentModel.DefaultBindingProperty('Rotate_Pixels')] +[Management.Automation.SwitchParameter] +$RotatePixels, +# Set the Rotate_Colors of OBSRotatoeShader +[Alias('Rotate_Colors')] +[ComponentModel.DefaultBindingProperty('Rotate_Colors')] +[Management.Automation.SwitchParameter] +$RotateColors, +# Set the center_width_percentage of OBSRotatoeShader +[Alias('center_width_percentage')] +[ComponentModel.DefaultBindingProperty('center_width_percentage')] +[Int32] +$CenterWidthPercentage, +# Set the center_height_percentage of OBSRotatoeShader +[Alias('center_height_percentage')] +[ComponentModel.DefaultBindingProperty('center_height_percentage')] +[Int32] +$CenterHeightPercentage, +# Set the notes of OBSRotatoeShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rotatoe' +$ShaderNoun = 'OBSRotatoeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Rotation Effect By Charles Fettinger (https://github.com/Oncorporation) 10/2019 +//Converted to OpenGL by Q-mii, Exeldro, & skeletonbow +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +uniform int speed_percent< + string label = "speed percentage"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +> = 50; // +uniform float Axis_X< + string label = "Axis X"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.1; +> = 0.0; +uniform float Axis_Y< + string label = "Axis Y"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 0.0; +uniform float Axis_Z< + string label = "Axis Z"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; +uniform float Angle_Degrees< + string label = "Angle Degrees"; + string widget_type = "slider"; + float minimum = -180.0; + float maximum = 180.0; + float step = 0.01; +> = 45.0; +uniform bool Rotate_Transform = true; +uniform bool Rotate_Pixels = false; +uniform bool Rotate_Colors = false; +uniform int center_width_percentage< + string label = "center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_height_percentage< + string label = "center height percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; + +uniform string notes< + string widget_type = "info"; +> = " Choose axis, angle and speed, then rotate away! center_width_percentage & center_height_percentage allow you to change the pixel spin axis"; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float3x3 rotAxis(float3 axis, float a) { + float s=sin(a); + float c=cos(a); + float oc=1.0-c; + + float3 as=axis*s; + + float3x3 p=float3x3(axis.x*axis,axis.y*axis,axis.z*axis); + float3x3 q=float3x3(c,-as.z,as.y,as.z,c,-as.x,-as.y,as.x,c); + return p*oc+q; +} + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + + float speed = speed_percent * 0.01; + // circular easing variable + float PI = 3.1415926535897932384626433832795; //acos(-1); + float PI180th = 0.0174532925; //PI divided by 180 + float direction = abs(sin((elapsed_time - 0.001) * speed)); + float t = sin(elapsed_time * speed); + float angle_degrees = PI180th * Angle_Degrees; + + // use matrix to transform rotation + if (Rotate_Transform) + vert_out.pos.xyz = mul(vert_out.pos.xyz,rotAxis(float3(Axis_X,Axis_Y,Axis_Z), (angle_degrees * t))).xyz; + + vert_out.uv = v_in.uv * uv_scale + uv_offset; + + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv); + + float speed = speed_percent * 0.01; + // circular easing variable + float PI = 3.1415926535897932384626433832795; //acos(-1); + float PI180th = 0.0174532925; //PI divided by 180 + float direction = abs(sin((elapsed_time - 0.001) * speed)); + float t = sin(elapsed_time * speed); + float angle_degrees = PI180th * Angle_Degrees; + + + // use matrix to transform pixels + if (Rotate_Pixels) + { + float2 center_pixel_coordinates = float2((center_width_percentage * 0.01), (center_height_percentage * 0.01) ); + rgba = image.Sample(textureSampler, mul(float3(v_in.uv - center_pixel_coordinates, 1.0), rotAxis(float3(Axis_X ,Axis_Y, Axis_Z ), (angle_degrees * t))).xy + center_pixel_coordinates); + } + if (Rotate_Colors) + rgba.rgb = mul(rgba.rgb, rotAxis(float3(Axis_X,Axis_Y,Axis_Z), (angle_degrees * t))).xyz; + + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRoundedRect2Shader.ps1 b/Commands/Shaders/Get-OBSRoundedRect2Shader.ps1 new file mode 100644 index 000000000..531f5ab9d --- /dev/null +++ b/Commands/Shaders/Get-OBSRoundedRect2Shader.ps1 @@ -0,0 +1,330 @@ +function Get-OBSRoundedRect2Shader { + +[Alias('Set-OBSRoundedRect2Shader','Add-OBSRoundedRect2Shader')] +param( +# Set the corner_radius of OBSRoundedRect2Shader +[Alias('corner_radius')] +[ComponentModel.DefaultBindingProperty('corner_radius')] +[Int32] +$CornerRadius, +# Set the border_thickness of OBSRoundedRect2Shader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSRoundedRect2Shader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_alpha_start of OBSRoundedRect2Shader +[Alias('border_alpha_start')] +[ComponentModel.DefaultBindingProperty('border_alpha_start')] +[Single] +$BorderAlphaStart, +# Set the border_alpha_end of OBSRoundedRect2Shader +[Alias('border_alpha_end')] +[ComponentModel.DefaultBindingProperty('border_alpha_end')] +[Single] +$BorderAlphaEnd, +# Set the alpha_cut_off of OBSRoundedRect2Shader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# Set the faster_scan of OBSRoundedRect2Shader +[Alias('faster_scan')] +[ComponentModel.DefaultBindingProperty('faster_scan')] +[Management.Automation.SwitchParameter] +$FasterScan, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_rect2' +$ShaderNoun = 'OBSRoundedRect2Shader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int corner_radius< + string label = "Corner radius"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_color; +uniform float border_alpha_start< + string label = "Border alpha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float border_alpha_end< + string label = "Border alpha end"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; +uniform float alpha_cut_off< + string label = "Aplha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.5; +uniform bool faster_scan = true; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 pixel = image.Sample(textureSampler, v_in.uv); + int closedEdgeX = 0; + int closedEdgeY = 0; + if(pixel.a < alpha_cut_off){ + return float4(1.0,0.0,0.0,0.0); + } + float check_dist = float(corner_radius); + if(border_thickness > check_dist) + check_dist = border_thickness; + if(image.Sample(textureSampler, v_in.uv + float2(check_dist*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = int(check_dist); + }else if(image.Sample(textureSampler, v_in.uv + float2(-check_dist*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = int(-check_dist); + } + if(image.Sample(textureSampler, v_in.uv + float2(0,check_dist*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = int(check_dist); + }else if(image.Sample(textureSampler, v_in.uv + float2(0,-check_dist*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = int(-check_dist); + } + if(closedEdgeX == 0 && closedEdgeY == 0){ + return pixel; + } + if(!faster_scan || closedEdgeX != 0){ + [loop] for(int x = 1;float(x) check_dist && border_thickness > corner_radius){ + if(closedEdgeXabs < corner_radius && closedEdgeYabs < corner_radius){ + float cd = distance(float2(closedEdgeXabs, closedEdgeYabs), float2(corner_radius,corner_radius)); + if(floor(cd) > corner_radius) + return float4(0.0,0.0,0.0,0.0); + if(cd > corner_radius){ + d = border_thickness + cd - corner_radius; + } else if(d > border_thickness){ + d = border_thickness; + } + }else if(d > border_thickness){ + d = border_thickness; + } + } + if(floor(d) <= check_dist){ + if(border_thickness > 0){ + if(ceil(check_dist-d) <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + ((check_dist-d)/ float(border_thickness))*(border_alpha_start-border_alpha_end); + if(border_alpha_start < border_alpha_end){ + fade_color.rgb = pixel.rgb * (1.0 - fade_color.a) + fade_color.rgb * fade_color.a; + fade_color.a = border_alpha_end + ((check_dist-d) / float(border_thickness))*(pixel.a-border_alpha_end); + } + if(d > check_dist) + fade_color.a *= 1.0 -(d - check_dist); + return fade_color; + }else if(d >= 0 && floor(check_dist-d) <= border_thickness && border_alpha_start >= border_alpha_end){ + float4 fade_color = border_color; + float f; + if(border_thickness > (check_dist-d)) + f = border_thickness - (check_dist-d); + else + f = 1.0 -((check_dist-d) - border_thickness); + fade_color.rgb = pixel.rgb * (1.0 - f) + fade_color.rgb * f; + return fade_color; + } + } + if (d > check_dist) + pixel.a *= 1.0 - (d - check_dist); + return pixel; + + } + return float4(0.0,0.0,0.0,0.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRoundedRectPerCornerShader.ps1 b/Commands/Shaders/Get-OBSRoundedRectPerCornerShader.ps1 new file mode 100644 index 000000000..5777d1b3e --- /dev/null +++ b/Commands/Shaders/Get-OBSRoundedRectPerCornerShader.ps1 @@ -0,0 +1,354 @@ +function Get-OBSRoundedRectPerCornerShader { + +[Alias('Set-OBSRoundedRectPerCornerShader','Add-OBSRoundedRectPerCornerShader')] +param( +# Set the corner_radius_tl of OBSRoundedRectPerCornerShader +[Alias('corner_radius_tl')] +[ComponentModel.DefaultBindingProperty('corner_radius_tl')] +[Int32] +$CornerRadiusTl, +# Set the corner_radius_tr of OBSRoundedRectPerCornerShader +[Alias('corner_radius_tr')] +[ComponentModel.DefaultBindingProperty('corner_radius_tr')] +[Int32] +$CornerRadiusTr, +# Set the corner_radius_br of OBSRoundedRectPerCornerShader +[Alias('corner_radius_br')] +[ComponentModel.DefaultBindingProperty('corner_radius_br')] +[Int32] +$CornerRadiusBr, +# Set the corner_radius_bl of OBSRoundedRectPerCornerShader +[Alias('corner_radius_bl')] +[ComponentModel.DefaultBindingProperty('corner_radius_bl')] +[Int32] +$CornerRadiusBl, +# Set the border_thickness of OBSRoundedRectPerCornerShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSRoundedRectPerCornerShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_alpha_start of OBSRoundedRectPerCornerShader +[Alias('border_alpha_start')] +[ComponentModel.DefaultBindingProperty('border_alpha_start')] +[Single] +$BorderAlphaStart, +# Set the border_alpha_end of OBSRoundedRectPerCornerShader +[Alias('border_alpha_end')] +[ComponentModel.DefaultBindingProperty('border_alpha_end')] +[Single] +$BorderAlphaEnd, +# Set the alpha_cut_off of OBSRoundedRectPerCornerShader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_rect_per_corner' +$ShaderNoun = 'OBSRoundedRectPerCornerShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int corner_radius_tl< + string label = "Corner radius top left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_tr< + string label = "Corner radius top right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_br< + string label = "Corner radius bottom right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_bl< + string label = "Corner radius bottom left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_color; +uniform float border_alpha_start< + string label = "border alpha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 1.0; +uniform float border_alpha_end< + string label = "border alpha end"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float alpha_cut_off< + string label = "alpha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 pixel = image.Sample(textureSampler, v_in.uv); + int closedEdgeX = 0; + int closedEdgeY = 0; + if(pixel.a < alpha_cut_off){ + return float4(1.0,0.0,0.0,0.0); + } + int corner_radius_top = corner_radius_tl>corner_radius_tr?corner_radius_tl:corner_radius_tr; + int corner_radius_right = corner_radius_tr>corner_radius_br?corner_radius_tr:corner_radius_br; + int corner_radius_bottom = corner_radius_bl>corner_radius_br?corner_radius_bl:corner_radius_br; + int corner_radius_left = corner_radius_tl>corner_radius_bl?corner_radius_tl:corner_radius_bl; + + if(image.Sample(textureSampler, v_in.uv + float2(corner_radius_right*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = corner_radius_right; + }else if(image.Sample(textureSampler, v_in.uv + float2(-corner_radius_left*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = -corner_radius_left; + } + if(image.Sample(textureSampler, v_in.uv + float2(0,corner_radius_bottom*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = corner_radius_bottom; + }else if(image.Sample(textureSampler, v_in.uv + float2(0,-corner_radius_top*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = -corner_radius_top; + } + if(closedEdgeX == 0 && closedEdgeY == 0){ + return pixel; + } + if(closedEdgeX != 0){ + [loop] for(int x = 1;x 0 && closedEdgeY < 0){ + corner_radius = corner_radius_tr; + }else if(closedEdgeX > 0 && closedEdgeY > 0){ + corner_radius = corner_radius_br; + }else if(closedEdgeX < 0 && closedEdgeY > 0){ + corner_radius = corner_radius_bl; + } + if(closedEdgeXabs > corner_radius && closedEdgeYabs > corner_radius){ + return pixel; + } + if(closedEdgeXabs == 0){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (closedEdgeYabs / border_thickness)*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeYabs == 0){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (closedEdgeXabs / border_thickness)*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeXabs > corner_radius){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (closedEdgeYabs / border_thickness)*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeYabs > corner_radius){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (closedEdgeXabs / border_thickness)*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + float d = distance(float2(closedEdgeXabs, closedEdgeYabs), float2(corner_radius,corner_radius)); + if(dAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRoundedRectPerSideShader.ps1 b/Commands/Shaders/Get-OBSRoundedRectPerSideShader.ps1 new file mode 100644 index 000000000..cfd425869 --- /dev/null +++ b/Commands/Shaders/Get-OBSRoundedRectPerSideShader.ps1 @@ -0,0 +1,331 @@ +function Get-OBSRoundedRectPerSideShader { + +[Alias('Set-OBSRoundedRectPerSideShader','Add-OBSRoundedRectPerSideShader')] +param( +# Set the corner_radius_bottom of OBSRoundedRectPerSideShader +[Alias('corner_radius_bottom')] +[ComponentModel.DefaultBindingProperty('corner_radius_bottom')] +[Int32] +$CornerRadiusBottom, +# Set the corner_radius_left of OBSRoundedRectPerSideShader +[Alias('corner_radius_left')] +[ComponentModel.DefaultBindingProperty('corner_radius_left')] +[Int32] +$CornerRadiusLeft, +# Set the corner_radius_top of OBSRoundedRectPerSideShader +[Alias('corner_radius_top')] +[ComponentModel.DefaultBindingProperty('corner_radius_top')] +[Int32] +$CornerRadiusTop, +# Set the corner_radius_right of OBSRoundedRectPerSideShader +[Alias('corner_radius_right')] +[ComponentModel.DefaultBindingProperty('corner_radius_right')] +[Int32] +$CornerRadiusRight, +# Set the border_thickness of OBSRoundedRectPerSideShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSRoundedRectPerSideShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_alpha_start of OBSRoundedRectPerSideShader +[Alias('border_alpha_start')] +[ComponentModel.DefaultBindingProperty('border_alpha_start')] +[Single] +$BorderAlphaStart, +# Set the border_alpha_end of OBSRoundedRectPerSideShader +[Alias('border_alpha_end')] +[ComponentModel.DefaultBindingProperty('border_alpha_end')] +[Single] +$BorderAlphaEnd, +# Set the alpha_cut_off of OBSRoundedRectPerSideShader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_rect_per_side' +$ShaderNoun = 'OBSRoundedRectPerSideShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int corner_radius_bottom< + string label = "Corner radius bottom"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_left< + string label = "Corner radius left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_top< + string label = "Corner radius top"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_right< + string label = "Corner radius right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_color; +uniform float border_alpha_start< + string label = "border alpha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 1.0; +uniform float border_alpha_end< + string label = "border alpha end"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float alpha_cut_off< + string label = "alpha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 output_color = image.Sample(textureSampler, v_in.uv); + int closedEdgeX = 0; + int closedEdgeY = 0; + if(output_color.a < alpha_cut_off){ + return float4(1.0,0.0,0.0,0.0); + } + if(image.Sample(textureSampler, v_in.uv + float2(corner_radius_right*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = corner_radius_right; + }else if(image.Sample(textureSampler, v_in.uv + float2(-corner_radius_left*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = -corner_radius_left; + } + if(image.Sample(textureSampler, v_in.uv + float2(0,corner_radius_bottom*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = corner_radius_bottom; + }else if(image.Sample(textureSampler, v_in.uv + float2(0,-corner_radius_top*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = -corner_radius_top; + } + if(closedEdgeX == 0 && closedEdgeY == 0){ + return output_color; + } + if(closedEdgeX != 0){ + [loop] for(int x = 1;x corner_radius){ + closedEdgeXabs = 0; + } + if(closedEdgeYabs > corner_radius){ + closedEdgeYabs = 0; + } + if(closedEdgeXabs == 0 && closedEdgeYabs == 0){ + return output_color; + } + if(closedEdgeXabs == 0){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeYabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return output_color; + } + } + if(closedEdgeYabs == 0){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeXabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return output_color; + } + } + + float closest = closedEdgeXabsAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRoundedRectShader.ps1 b/Commands/Shaders/Get-OBSRoundedRectShader.ps1 new file mode 100644 index 000000000..0e3cb8cfc --- /dev/null +++ b/Commands/Shaders/Get-OBSRoundedRectShader.ps1 @@ -0,0 +1,183 @@ +function Get-OBSRoundedRectShader { + +[Alias('Set-OBSRoundedRectShader','Add-OBSRoundedRectShader')] +param( +# Set the corner_radius of OBSRoundedRectShader +[Alias('corner_radius')] +[ComponentModel.DefaultBindingProperty('corner_radius')] +[Int32] +$CornerRadius, +# Set the border_thickness of OBSRoundedRectShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSRoundedRectShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_rect' +$ShaderNoun = 'OBSRoundedRectShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGl by Q-mii & Exeldro February 21, 2022 +uniform int corner_radius< + string label = "Corner radius"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; + +uniform float4 border_color; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 mirrored_tex_coord = float2(0.5, 0.5) - abs(v_in.uv - float2(0.5, 0.5)); + float4 output_color = image.Sample(textureSampler, v_in.uv); + + float2 pixel_position = float2(mirrored_tex_coord.x / uv_pixel_interval.x, mirrored_tex_coord.y / uv_pixel_interval.y); + float pixel_distance_from_center = distance(pixel_position, float2(corner_radius, corner_radius)); + + bool is_in_corner = pixel_position.x < corner_radius && pixel_position.y < corner_radius; + bool is_within_radius = pixel_distance_from_center <= corner_radius; + + bool is_within_edge_border = !is_in_corner && (pixel_position.x < 0 && pixel_position.x >= -border_thickness || pixel_position.y < 0 && pixel_position.y >= -border_thickness); + bool is_within_corner_border = is_in_corner && pixel_distance_from_center > corner_radius && pixel_distance_from_center <= (corner_radius + border_thickness); + + return ((!is_in_corner || is_within_radius)?output_color:float4(0,0,0,0)) + ((is_within_edge_border || is_within_corner_border)?border_color:float4(0,0,0,0)); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRoundedStrokeGradientShader.ps1 b/Commands/Shaders/Get-OBSRoundedStrokeGradientShader.ps1 new file mode 100644 index 000000000..4d9468586 --- /dev/null +++ b/Commands/Shaders/Get-OBSRoundedStrokeGradientShader.ps1 @@ -0,0 +1,365 @@ +function Get-OBSRoundedStrokeGradientShader { + +[Alias('Set-OBSRoundedStrokeGradientShader','Add-OBSRoundedStrokeGradientShader')] +param( +# Set the corner_radius of OBSRoundedStrokeGradientShader +[Alias('corner_radius')] +[ComponentModel.DefaultBindingProperty('corner_radius')] +[Int32] +$CornerRadius, +# Set the border_thickness of OBSRoundedStrokeGradientShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the minimum_alpha_percent of OBSRoundedStrokeGradientShader +[Alias('minimum_alpha_percent')] +[ComponentModel.DefaultBindingProperty('minimum_alpha_percent')] +[Int32] +$MinimumAlphaPercent, +# Set the rotation_speed of OBSRoundedStrokeGradientShader +[Alias('rotation_speed')] +[ComponentModel.DefaultBindingProperty('rotation_speed')] +[Int32] +$RotationSpeed, +# Set the border_colorL of OBSRoundedStrokeGradientShader +[Alias('border_colorL')] +[ComponentModel.DefaultBindingProperty('border_colorL')] +[String] +$BorderColorL, +# Set the border_colorR of OBSRoundedStrokeGradientShader +[Alias('border_colorR')] +[ComponentModel.DefaultBindingProperty('border_colorR')] +[String] +$BorderColorR, +# Set the center_width of OBSRoundedStrokeGradientShader +[Alias('center_width')] +[ComponentModel.DefaultBindingProperty('center_width')] +[Int32] +$CenterWidth, +# Set the center_height of OBSRoundedStrokeGradientShader +[Alias('center_height')] +[ComponentModel.DefaultBindingProperty('center_height')] +[Int32] +$CenterHeight, +# Set the notes of OBSRoundedStrokeGradientShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_stroke_gradient' +$ShaderNoun = 'OBSRoundedStrokeGradientShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//rounded rectange shader from https://raw.githubusercontent.com/exeldro/obs-lua/master/rounded_rect.shader +//modified slightly by Surn +uniform int corner_radius< + string label = "Corner radius"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int minimum_alpha_percent< + string label = "Minimum alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int rotation_speed< + string label = "rotation speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_colorL; +uniform float4 border_colorR; +//uniform float color_spread = 2.0; +uniform int center_width< + string label = "center width"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_height< + string label = "center height"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform string notes< + string widget_type = "info"; +> = "Outlines the opaque areas with a rounded border. Default Minimum Alpha Percent is 50%, lowering will reveal more"; + +// float3 hsv2rgb(float3 c) +// { +// float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); +// float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); +// return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y); +// } + +float mod(float x, float y) +{ + return x - y * floor(x/y); +} + +float4 gradient(float c) { + c = mod(c , 2.0); + if(c < 0.0f){ + c = c * -1.0; + } + if(c > 1.0){ + c = 1.0 - c; + if(c < 0.0f){ + c = c + 1.0; + } + } + return lerp(border_colorL, border_colorR, c); +} + +float4 getBorderColor(float2 toCenter){ + float angle = atan2(toCenter.y ,toCenter.x ); + float angleMod = (elapsed_time * mod(float(rotation_speed) , 18.0)) / 9; + return gradient((angle / 3.14159265f) + angleMod); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 st = v_in.uv * uv_scale; + float2 center_pixel_coordinates = float2((float(center_width) * 0.01), (float(center_height) * 0.01) ); + float2 toCenter = center_pixel_coordinates - st; + + float min_alpha = clamp(minimum_alpha_percent * .01, -1.0, 101.0); + float4 output_color = image.Sample(textureSampler, v_in.uv); + if (output_color.a < min_alpha) + { + return float4(0.0, 0.0, 0.0, 0.0); + } + int closedEdgeX = 0; + if (image.Sample(textureSampler, v_in.uv + float2(corner_radius * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = corner_radius; + } + else if (image.Sample(textureSampler, v_in.uv + float2(-corner_radius * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = corner_radius; + } + int closedEdgeY = 0; + if (image.Sample(textureSampler, v_in.uv + float2(0, corner_radius * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = corner_radius; + } + else if (image.Sample(textureSampler, v_in.uv + float2(0, -corner_radius * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = corner_radius; + } + if (closedEdgeX == 0 && closedEdgeY == 0) + { + return output_color; + } + if (closedEdgeX != 0) + { + [loop] + for (int x = 1; x < corner_radius; x++) + { + if (image.Sample(textureSampler, v_in.uv + float2(x * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = x; + break; + } + if (image.Sample(textureSampler, v_in.uv + float2(-x * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = x; + break; + } + } + } + if (closedEdgeY != 0) + { + [loop] + for (int y = 1; y < corner_radius; y++) + { + if (image.Sample(textureSampler, v_in.uv + float2(0, y * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = y; + break; + } + if (image.Sample(textureSampler, v_in.uv + float2(0, -y * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = y; + break; + } + } + } + if (closedEdgeX == 0) + { + if (closedEdgeY < border_thickness) + { + return getBorderColor(toCenter); + } + else + { + return output_color; + } + } + if (closedEdgeY == 0) + { + if (closedEdgeX < border_thickness) + { + return getBorderColor(toCenter); + } + else + { + return output_color; + } + } + + float d = distance(float2(closedEdgeX, closedEdgeY), float2(corner_radius, corner_radius)); + if (d < corner_radius) + { + if (corner_radius - d < border_thickness) + { + return getBorderColor(toCenter); + } + else + { + return output_color; + } + } + return float4(0.0, 0.0, 0.0, 0.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSRoundedStrokeShader.ps1 b/Commands/Shaders/Get-OBSRoundedStrokeShader.ps1 new file mode 100644 index 000000000..6b3fbdd26 --- /dev/null +++ b/Commands/Shaders/Get-OBSRoundedStrokeShader.ps1 @@ -0,0 +1,287 @@ +function Get-OBSRoundedStrokeShader { + +[Alias('Set-OBSRoundedStrokeShader','Add-OBSRoundedStrokeShader')] +param( +# Set the corner_radius of OBSRoundedStrokeShader +[Alias('corner_radius')] +[ComponentModel.DefaultBindingProperty('corner_radius')] +[Int32] +$CornerRadius, +# Set the border_thickness of OBSRoundedStrokeShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the minimum_alpha_percent of OBSRoundedStrokeShader +[Alias('minimum_alpha_percent')] +[ComponentModel.DefaultBindingProperty('minimum_alpha_percent')] +[Int32] +$MinimumAlphaPercent, +# Set the border_color of OBSRoundedStrokeShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the notes of OBSRoundedStrokeShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_stroke' +$ShaderNoun = 'OBSRoundedStrokeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//rounded rectange shader from https://raw.githubusercontent.com/exeldro/obs-lua/master/rounded_rect.shader +//modified slightly by Surn +//Converted to OpenGl by Q-mii & Exeldro February 21, 2022 +uniform int corner_radius< + string label = "Corner radius"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int minimum_alpha_percent< + string label = "Minimum alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float4 border_color; +uniform string notes< + string widget_type = "info"; +> = "Outlines the opaque areas with a rounded border. Default Minimum Alpha Percent is 50%, lowering will reveal more"; + +float4 mainImage(VertData v_in) : TARGET +{ + float min_alpha = clamp(minimum_alpha_percent * .01, -1.0, 101.0); + float4 output_color = image.Sample(textureSampler, v_in.uv); + if (output_color.a < min_alpha) + { + return float4(0.0, 0.0, 0.0, 0.0); + } + int closedEdgeX = 0; + if (image.Sample(textureSampler, v_in.uv + float2(corner_radius * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = corner_radius; + } + else if (image.Sample(textureSampler, v_in.uv + float2(-corner_radius * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = corner_radius; + } + int closedEdgeY = 0; + if (image.Sample(textureSampler, v_in.uv + float2(0, corner_radius * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = corner_radius; + } + else if (image.Sample(textureSampler, v_in.uv + float2(0, -corner_radius * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = corner_radius; + } + if (closedEdgeX == 0 && closedEdgeY == 0) + { + return float4(output_color); + } + if (closedEdgeX != 0) + { + [loop] + for (int x = 1; x < corner_radius; x++) + { + if (image.Sample(textureSampler, v_in.uv + float2(x * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = x; + break; + } + if (image.Sample(textureSampler, v_in.uv + float2(-x * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = x; + break; + } + } + } + if (closedEdgeY != 0) + { + [loop] + for (int y = 1; y < corner_radius; y++) + { + if (image.Sample(textureSampler, v_in.uv + float2(0, y * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = y; + break; + } + if (image.Sample(textureSampler, v_in.uv + float2(0, -y * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = y; + break; + } + } + } + if (closedEdgeX == 0) + { + if (closedEdgeY < border_thickness) + { + return border_color; + } + else + { + return float4(output_color); + } + } + if (closedEdgeY == 0) + { + if (closedEdgeX < border_thickness) + { + return border_color; + } + else + { + return float4(output_color); + } + } + + float d = distance(float2(closedEdgeX, closedEdgeY), float2(corner_radius, corner_radius)); + if (d < corner_radius) + { + if (corner_radius - d < border_thickness) + { + return border_color; + } + else + { + return output_color; + } + } + return float4(0.0, 0.0, 0.0, 0.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSScanLineShader.ps1 b/Commands/Shaders/Get-OBSScanLineShader.ps1 new file mode 100644 index 000000000..085c24e36 --- /dev/null +++ b/Commands/Shaders/Get-OBSScanLineShader.ps1 @@ -0,0 +1,265 @@ +function Get-OBSScanLineShader { + +[Alias('Set-OBSScanLineShader','Add-OBSScanLineShader')] +param( +# Set the lengthwise of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('lengthwise')] +[Management.Automation.SwitchParameter] +$Lengthwise, +# Set the animate of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('animate')] +[Management.Automation.SwitchParameter] +$Animate, +# Set the speed of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the angle of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('angle')] +[Single] +$Angle, +# Set the shift of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('shift')] +[Management.Automation.SwitchParameter] +$Shift, +# Set the boost of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('boost')] +[Management.Automation.SwitchParameter] +$Boost, +# Set the floor of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('floor')] +[Single] +$Floor, +# Set the period of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('period')] +[Single] +$Period, +# Set the notes of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'scan_line' +$ShaderNoun = 'OBSScanLineShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Scan Line Effect for OBS Studio +// originally from Andersama (https://github.com/Andersama) +// Modified and improved my Charles Fettinger (https://github.com/Oncorporation) 1/2019 +//Converted to OpenGL by Q-mii & Exeldro February 21, 2022 +//Count the number of scanlines we want via height or width, adjusts the sin wave period +uniform bool lengthwise; +//Do we want the scanlines to move? +uniform bool animate; +//How fast do we want those scanlines to move? +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10000.0; + float step = 1; +> = 1000; +//What angle should the scanlines come in at (based in degrees) +uniform float angle< + string label = "angle"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 360.0; + float step = 0.1; +> = 45; +//Turns on adjustment of the results, sin returns -1 -> 1 these settings will change the results a bit +//By default values for color range from 0 to 1 +//Boost centers the result of the sin wave on 1*, to help maintain the brightness of the screen +uniform bool shift = true; +uniform bool boost = true; +//Increases the minimum value of the sin wave +uniform float floor< + string label = "Floor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.001; +> = 0.0; +//final adjustment to the period of the sin wave, we can''t / 0, need to be careful w/ user input +uniform float period< + string label = "Period"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 1000.0; + float step = 1.0; +> = 10.0; +uniform string notes< + string widget_type = "info"; +> = "floor affects the minimum opacity of the scan line"; +float4 mainImage(VertData v_in) : TARGET +{ + //3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481 3.141592653589793238462643383279502884197169399375105820974944592307816406286 + // float pix2 = 6.2831853071795864769252;//86766559005768394338798750211641949 + float nfloor = clamp(floor, 0.0, 100.0) * 0.01; + float nperiod = max(period, 1.0); + float gap = 1 - nfloor; + float pi = 3.1415926535897932384626; + float2 direction = float2( cos(angle * pi / 180.0) , sin(angle * pi / 180.0) ); + float nspeed = 0.0; + if(animate){ + nspeed = speed * 0.0001; + } + + float4 color = image.Sample(textureSampler, v_in.uv); + + float t = elapsed_time * nspeed; + + if(!lengthwise){ + float base_height = 1.0 / uv_pixel_interval.y; + float h_interval = pi * base_height; + + float rh_sin = sin(((v_in.uv.y * direction.y + v_in.uv.x * direction.x) + t) * (h_interval / nperiod)); + if(shift){ + rh_sin = ((1.0 + rh_sin) * 0.5) * gap + nfloor; + if(boost){ + rh_sin += gap * 0.5; + } + } + float4 s_mult = float4(rh_sin,rh_sin,rh_sin,1); + return s_mult * color; + } + else{ + float base_width = 1.0 / uv_pixel_interval.x; + float w_interval = pi * base_width; + + float rh_sin = sin(((v_in.uv.y * direction.y + v_in.uv.x * direction.x) + t) * (w_interval / nperiod)); + if(shift){ + rh_sin = ((1.0 + rh_sin) * 0.5) * gap + nfloor; + if(boost){ + rh_sin += gap * 0.5; + } + } + float4 s_mult = float4(rh_sin,rh_sin,rh_sin,1); + return s_mult * color; + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSSeascapeShader.ps1 b/Commands/Shaders/Get-OBSSeascapeShader.ps1 new file mode 100644 index 000000000..d2564d5da --- /dev/null +++ b/Commands/Shaders/Get-OBSSeascapeShader.ps1 @@ -0,0 +1,449 @@ +function Get-OBSSeascapeShader { + +[Alias('Set-OBSSeascapeShader','Add-OBSSeascapeShader')] +param( +# Set the AA of OBSSeascapeShader +[ComponentModel.DefaultBindingProperty('AA')] +[Management.Automation.SwitchParameter] +$AA, +# Set the SEA_HEIGHT of OBSSeascapeShader +[Alias('SEA_HEIGHT')] +[ComponentModel.DefaultBindingProperty('SEA_HEIGHT')] +[Single] +$SEAHEIGHT, +# Set the SEA_CHOPPY of OBSSeascapeShader +[Alias('SEA_CHOPPY')] +[ComponentModel.DefaultBindingProperty('SEA_CHOPPY')] +[Single] +$SEACHOPPY, +# Set the SEA_SPEED of OBSSeascapeShader +[Alias('SEA_SPEED')] +[ComponentModel.DefaultBindingProperty('SEA_SPEED')] +[Single] +$SEASPEED, +# Set the SEA_FREQ of OBSSeascapeShader +[Alias('SEA_FREQ')] +[ComponentModel.DefaultBindingProperty('SEA_FREQ')] +[Single] +$SEAFREQ, +# Set the SEA_BASE of OBSSeascapeShader +[Alias('SEA_BASE')] +[ComponentModel.DefaultBindingProperty('SEA_BASE')] +[String] +$SEABASE, +# Set the SEA_WATER_COLOR of OBSSeascapeShader +[Alias('SEA_WATER_COLOR')] +[ComponentModel.DefaultBindingProperty('SEA_WATER_COLOR')] +[String] +$SEAWATERCOLOR, +# Set the CAMERA_SPEED of OBSSeascapeShader +[Alias('CAMERA_SPEED')] +[ComponentModel.DefaultBindingProperty('CAMERA_SPEED')] +[Single] +$CAMERASPEED, +# Set the CAMERA_TURN_SPEED of OBSSeascapeShader +[Alias('CAMERA_TURN_SPEED')] +[ComponentModel.DefaultBindingProperty('CAMERA_TURN_SPEED')] +[Single] +$CAMERATURNSPEED, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'seascape' +$ShaderNoun = 'OBSSeascapeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +/* + * "Seascape" by Alexander Alekseev aka TDM - 2014 + * License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. + * Contact: tdmaav@gmail.com + * https://www.shadertoy.com/view/Ms2SD1 adapted by Exeldro + */ + +#define NUM_STEPS 8 +#define PI 3.141592 +#define EPSILON 0.001 +uniform bool AA< + string label = "Smooth (more resources)"; +> = false; + +#ifndef OPENGL +#define mat2 float2x2 +#define mat3 float3x3 +#define fract frac +#define mix lerp +#endif + +// sea +#define ITER_GEOMETRY 3 +#define ITER_FRAGMENT 5 +uniform float SEA_HEIGHT< + string label = "Sea Height"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.5; + float step = 0.001; +> = 0.6; +uniform float SEA_CHOPPY< + string label = "Sea Choppy"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 4.0; +uniform float SEA_SPEED< + string label = "Sea Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.8; +uniform float SEA_FREQ< + string label = "Sea Frequency"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.16; +uniform float4 SEA_BASE< + string label = "Sea Base"; +> = {0.0,0.09,0.18,1.0}; +uniform float4 SEA_WATER_COLOR< + string label = "Sea Water"; +> = {0.48,0.54,0.36,1.0}; + +uniform float CAMERA_SPEED< + string label = "Camera Speed"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; + +uniform float CAMERA_TURN_SPEED< + string label = "Camera Turn Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; + + +float SEA_TIME(){ + return 1.0 + elapsed_time * SEA_SPEED; +} + +// math +mat3 fromEuler(float3 ang) { + float2 a1 = float2(sin(ang.x),cos(ang.x)); + float2 a2 = float2(sin(ang.y),cos(ang.y)); + float2 a3 = float2(sin(ang.z),cos(ang.z)); + return mat3(float3(a1.y*a3.y+a1.x*a2.x*a3.x,a1.y*a2.x*a3.x+a3.y*a1.x,-a2.y*a3.x), + float3(-a2.y*a1.x,a1.y*a2.y,a2.x), + float3(a3.y*a1.x*a2.x+a1.y*a3.x,a1.x*a3.x-a1.y*a3.y*a2.x,a2.y*a3.y)); +} + +float hash(float2 p) { + float h = dot(p,float2(127.1,311.7)); + return fract(sin(h)*43758.5453123); +} + +float noise(float2 p) { + float2 i = floor( p ); + float2 f = fract( p ); + float2 u = f*f*(3.0-2.0*f); + return -1.0+2.0*mix( mix( hash( i + float2(0.0,0.0) ), + hash( i + float2(1.0,0.0) ), u.x), + mix( hash( i + float2(0.0,1.0) ), + hash( i + float2(1.0,1.0) ), u.x), u.y); +} + +// lighting +float diffuse(float3 n,float3 l,float p) { + return pow(dot(n,l) * 0.4 + 0.6,p); +} +float specular(float3 n,float3 l,float3 e,float s) { + float nrm = (s + 8.0) / (PI * 8.0); + return pow(max(dot(reflect(e,n),l),0.0),s) * nrm; +} + +// sky +float3 getSkyColor(float3 e) { + e.y = (max(e.y,0.0)*0.8+0.2)*0.8; + return float3(pow(1.0-e.y,2.0), 1.0-e.y, 0.6+(1.0-e.y)*0.4) * 1.1; +} + +// sea +float sea_octave(float2 uv, float choppy) { + uv += noise(uv); + float2 wv = 1.0-abs(sin(uv)); + float2 swv = abs(cos(uv)); + wv = mix(wv,swv,wv); + return pow(1.0-pow(wv.x * wv.y,0.65),choppy); +} + +float map(float3 p) { + float freq = SEA_FREQ; + float amp = SEA_HEIGHT; + float choppy = SEA_CHOPPY; + float2 uv = p.xz; + uv.x *= 0.75; + mat2 octave_m = mat2(1.6,1.2,-1.2,1.6); + + float st = SEA_TIME(); + float d, h = 0.0; + for(int i = 0; i < ITER_GEOMETRY; i++) { + d = sea_octave((uv+float2(st,st))*freq,choppy); + d += sea_octave((uv-float2(st,st))*freq,choppy); + h += d * amp; + uv = mul(uv, octave_m); + freq *= 1.9; + amp *= 0.22; + choppy = mix(choppy,1.0,0.2); + } + return p.y - h; +} + +float map_detailed(float3 p) { + float freq = SEA_FREQ; + float amp = SEA_HEIGHT; + float choppy = SEA_CHOPPY; + float2 uv = p.xz; uv.x *= 0.75; + mat2 octave_m = mat2(1.6,1.2,-1.2,1.6); + float st = SEA_TIME(); + float d, h = 0.0; + for(int i = 0; i < ITER_FRAGMENT; i++) { + d = sea_octave((uv+float2(st,st))*freq,choppy); + d += sea_octave((uv-float2(st,st))*freq,choppy); + h += d * amp; + uv = mul(uv, octave_m); + freq *= 1.9; + amp *= 0.22; + choppy = mix(choppy,1.0,0.2); + } + return p.y - h; +} + +float3 getSeaColor(float3 p, float3 n, float3 l, float3 eye, float3 dist) { + float fresnel = clamp(1.0 - dot(n,-eye), 0.0, 1.0); + fresnel = min(pow(fresnel,3.0), 0.5); + + float3 reflected = getSkyColor(reflect(eye,n)); + float3 refracted = SEA_BASE.rgb + diffuse(n,l,80.0) * SEA_WATER_COLOR.rgb * 0.12; + + float3 color = mix(refracted,reflected,fresnel); + + float atten = max(1.0 - dot(dist,dist) * 0.001, 0.0); + color += SEA_WATER_COLOR.rgb * (p.y - SEA_HEIGHT) * 0.18 * atten; + + float s = specular(n,l,eye,60.0); + color += float3(s,s,s); + + return color; +} + +// tracing +float3 getNormal(float3 p, float eps) { + float3 n; + n.y = map_detailed(p); + n.x = map_detailed(float3(p.x+eps,p.y,p.z)) - n.y; + n.z = map_detailed(float3(p.x,p.y,p.z+eps)) - n.y; + n.y = eps; + return normalize(n); +} + +float heightMapTracing(float3 ori, float3 dir, out float3 p) { + float tm = 0.0; + float tx = 1000.0; + float hx = map(ori + dir * tx); + if(hx > 0.0) { + p = ori + dir * tx; + return tx; + } + float hm = map(ori + dir * tm); + float tmid = 0.0; + for(int i = 0; i < NUM_STEPS; i++) { + tmid = mix(tm,tx, hm/(hm-hx)); + p = ori + dir * tmid; + float hmid = map(p); + if(hmid < 0.0) { + tx = tmid; + hx = hmid; + } else { + tm = tmid; + hm = hmid; + } + } + return tmid; +} + +float3 getPixel(in float2 coord, float time) { + float2 uv = coord / uv_size.xy; + uv = uv * 2.0 - 1.0; + uv.x *= uv_size.x / uv_size.y; + + // ray + float3 ang = float3(sin(time*3.0*CAMERA_TURN_SPEED)*0.1,sin(time*CAMERA_TURN_SPEED)*0.2+0.3,time*CAMERA_TURN_SPEED); + float3 ori = float3(0.0,3.5,time*5.0*CAMERA_SPEED); + float3 dir = normalize(float3(uv.xy,-2.0)); + dir.z += length(uv) * 0.14; + dir = mul(normalize(dir), fromEuler(ang)); + + // tracing + float3 p; + heightMapTracing(ori,dir,p); + float3 dist = p - ori; + float3 n = getNormal(p, dot(dist,dist) * (0.1 / uv_size.x)); + float3 light = normalize(float3(0.0,1.0,0.8)); + + // color + return mix( + getSkyColor(dir), + getSeaColor(p,n,light,dir,dist), + pow(smoothstep(0.0,-0.02,dir.y),0.2)); +} + +// main +float4 mainImage(VertData v_in) : TARGET +{ + float time = elapsed_time * 0.3; + float2 fragCoord = float2(v_in.uv.x * uv_size.x, (1.0 - v_in.uv.y) * uv_size.y); + + float3 color = float3(0.0,0.0,0.0);; + if (AA){ + for(int i = -1; i <= 1; i++) { + for(int j = -1; j <= 1; j++) { + float2 uv = fragCoord+float2(i,j)/3.0; + color += getPixel(uv, time); + } + } + color /= 9.0; + }else{ + color = getPixel(fragCoord, time); + } + + // post + return float4(pow(color,float3(0.65,0.65,0.65)), 1.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSSeasickShader.ps1 b/Commands/Shaders/Get-OBSSeasickShader.ps1 new file mode 100644 index 000000000..8ec623d03 --- /dev/null +++ b/Commands/Shaders/Get-OBSSeasickShader.ps1 @@ -0,0 +1,194 @@ +function Get-OBSSeasickShader { + +[Alias('Set-OBSSeasickShader','Add-OBSSeasickShader')] +param( +# Set the notes of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the amplitude of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('amplitude')] +[Single] +$Amplitude, +# Set the speed of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the frequency of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('frequency')] +[Single] +$Frequency, +# Set the opacity of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('opacity')] +[Single] +$Opacity, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'seasick' +$ShaderNoun = 'OBSSeasickShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Seasick - an effect for OBS Studio +// +uniform string notes< + string widget_type = "info"; +> = "Seasick - from the game Snavenger\n\n(available on Google Play/Amazon Fire)"; +uniform float amplitude< + string label = "amplitude"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.03; +uniform float speed< + string label = "speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform float frequency< + string label = "frequency"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 6.0; +uniform float opacity< + string label = "opacity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pulse = sin(elapsed_time*speed - frequency * v_in.uv); + float2 coord = v_in.uv + amplitude * float2(pulse.x, -pulse.y); + return image.Sample(textureSampler, coord) * opacity; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSSelectiveColorShader.ps1 b/Commands/Shaders/Get-OBSSelectiveColorShader.ps1 new file mode 100644 index 000000000..26104834e --- /dev/null +++ b/Commands/Shaders/Get-OBSSelectiveColorShader.ps1 @@ -0,0 +1,305 @@ +function Get-OBSSelectiveColorShader { + +[Alias('Set-OBSSelectiveColorShader','Add-OBSSelectiveColorShader')] +param( +# Set the cutoff_Red of OBSSelectiveColorShader +[Alias('cutoff_Red')] +[ComponentModel.DefaultBindingProperty('cutoff_Red')] +[Single] +$CutoffRed, +# Set the cutoff_Green of OBSSelectiveColorShader +[Alias('cutoff_Green')] +[ComponentModel.DefaultBindingProperty('cutoff_Green')] +[Single] +$CutoffGreen, +# Set the cutoff_Blue of OBSSelectiveColorShader +[Alias('cutoff_Blue')] +[ComponentModel.DefaultBindingProperty('cutoff_Blue')] +[Single] +$CutoffBlue, +# Set the cutoff_Yellow of OBSSelectiveColorShader +[Alias('cutoff_Yellow')] +[ComponentModel.DefaultBindingProperty('cutoff_Yellow')] +[Single] +$CutoffYellow, +# Set the acceptance_Amplifier of OBSSelectiveColorShader +[Alias('acceptance_Amplifier')] +[ComponentModel.DefaultBindingProperty('acceptance_Amplifier')] +[Single] +$AcceptanceAmplifier, +# Set the show_Red of OBSSelectiveColorShader +[Alias('show_Red')] +[ComponentModel.DefaultBindingProperty('show_Red')] +[Management.Automation.SwitchParameter] +$ShowRed, +# Set the show_Green of OBSSelectiveColorShader +[Alias('show_Green')] +[ComponentModel.DefaultBindingProperty('show_Green')] +[Management.Automation.SwitchParameter] +$ShowGreen, +# Set the show_Blue of OBSSelectiveColorShader +[Alias('show_Blue')] +[ComponentModel.DefaultBindingProperty('show_Blue')] +[Management.Automation.SwitchParameter] +$ShowBlue, +# Set the show_Yellow of OBSSelectiveColorShader +[Alias('show_Yellow')] +[ComponentModel.DefaultBindingProperty('show_Yellow')] +[Management.Automation.SwitchParameter] +$ShowYellow, +# Set the notes of OBSSelectiveColorShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the background_type of OBSSelectiveColorShader +[Alias('background_type')] +[ComponentModel.DefaultBindingProperty('background_type')] +[Int32] +$BackgroundType, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'selective_color' +$ShaderNoun = 'OBSSelectiveColorShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Selective Color shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//updated 4/13/2020: take into account the opacity/alpha of input image -thanks Skeletonbow for suggestion +//Converted to OpenGL by Q-mii February 25, 2020 +uniform float cutoff_Red< + string label = "cutoff Red"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.40; +uniform float cutoff_Green< + string label = "cutoff Green"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.025; +uniform float cutoff_Blue< + string label = "cutoff Blue"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.25; +uniform float cutoff_Yellow< + string label = "cutoff Yellow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.25; +uniform float acceptance_Amplifier< + string label = "acceptance Amplifier"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 20.0; + float step = 0.001; +> = 5.0; + +uniform bool show_Red = true; +uniform bool show_Green = true; +uniform bool show_Blue = true; +uniform bool show_Yellow = true; +uniform string notes< + string widget_type = "info"; +> = "defaults: .4,.03,.25,.25, 5.0, true,true, true, true. cuttoff higher = less color, 0 = all 1 = none."; +uniform int background_type< + string label = "background type"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Grey"; + int option_1_value = 1; + string option_1_label = "Luma"; + int option_2_value = 2; + string option_2_label = "White"; + int option_3_value = 3; + string option_3_label = "Black"; + int option_4_value = 4; + string option_4_label = "Transparent"; + int option_5_value = 5; + string option_5_label = "Background Color"; +> = 0; + +float4 mainImage(VertData v_in) : TARGET +{ + const float PI = 3.1415926535897932384626433832795;//acos(-1); + const float3 coefLuma = float3(0.2126, 0.7152, 0.0722); + float4 color = image.Sample(textureSampler, v_in.uv); + + float luminance = dot(coefLuma, color.rgb); + float4 gray = float4(luminance, luminance, luminance, 1.0); + + if (background_type == 0) + { + luminance = (color.r + color.g + color.b) * 0.3333; + gray = float4(luminance,luminance,luminance, 1.0); + } + //if (background_type == 1) + //{ + // gray = float4(luminance,luminance,luminance, 1.0); + //} + if (background_type == 2) + gray = float4(1.0,1.0,1.0,1.0); + if (background_type == 3) + gray = float4(0.0,0.0,0.0,1.0); + if (background_type == 4) + gray.a = 0.01; + if (background_type == 5) + gray = color; + + float redness = max ( min ( color.r - color.g , color.r - color.b ) / color.r , 0); + float greenness = max ( min ( color.g - color.r , color.g - color.b ) / color.g , 0); + float blueness = max ( min ( color.b - color.r , color.b - color.g ) / color.b , 0); + + float rgLuminance = (color.r*1.4 + color.g*0.6)/2; + float rgDiff = abs(color.r-color.g)*1.4; + + float yellowness = 0.1 + rgLuminance * 1.2 - color.b - rgDiff; + + float4 accept; + accept.r = float(show_Red) * (redness - cutoff_Red); + accept.g = float(show_Green) * (greenness - cutoff_Green); + accept.b = float(show_Blue) * (blueness - cutoff_Blue); + accept[3] = float(show_Yellow) * (yellowness - cutoff_Yellow); + + float acceptance = max (accept.r, max(accept.g, max(accept.b, max(accept[3],0)))); + float modAcceptance = min (acceptance * acceptance_Amplifier, 1); + + float4 result = color; + if (result.a > 0) { + result = modAcceptance * color + (1.0 - modAcceptance) * gray; + //result.a *= gray.a; + } + + return result; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSShakeShader.ps1 b/Commands/Shaders/Get-OBSShakeShader.ps1 new file mode 100644 index 000000000..d49338b2c --- /dev/null +++ b/Commands/Shaders/Get-OBSShakeShader.ps1 @@ -0,0 +1,346 @@ +function Get-OBSShakeShader { + +[Alias('Set-OBSShakeShader','Add-OBSShakeShader')] +param( +# Set the ViewProj of OBSShakeShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSShakeShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSShakeShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSShakeShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSShakeShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSShakeShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSShakeShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSShakeShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the local_time of OBSShakeShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the random_scale of OBSShakeShader +[Alias('random_scale')] +[ComponentModel.DefaultBindingProperty('random_scale')] +[Single] +$RandomScale, +# Set the worble of OBSShakeShader +[ComponentModel.DefaultBindingProperty('worble')] +[Management.Automation.SwitchParameter] +$Worble, +# Set the speed of OBSShakeShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the min_growth_pixels of OBSShakeShader +[Alias('min_growth_pixels')] +[ComponentModel.DefaultBindingProperty('min_growth_pixels')] +[Single] +$MinGrowthPixels, +# Set the max_growth_pixels of OBSShakeShader +[Alias('max_growth_pixels')] +[ComponentModel.DefaultBindingProperty('max_growth_pixels')] +[Single] +$MaxGrowthPixels, +# Set the randomize_movement of OBSShakeShader +[Alias('randomize_movement')] +[ComponentModel.DefaultBindingProperty('randomize_movement')] +[Management.Automation.SwitchParameter] +$RandomizeMovement, +# Set the notes of OBSShakeShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'shake' +$ShaderNoun = 'OBSShakeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Shake Effect By Charles Fettinger (https://github.com/Oncorporation) 2/2019 +// Added some randomization based upon random_scale input +// updated for latest version of obs-shaderfilter + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; +uniform float local_time; + + +uniform float random_scale< + string label = "random scale"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.25; +uniform bool worble = false; +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; +uniform float min_growth_pixels< + string label = "min growth pixels"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = -2.0; +uniform float max_growth_pixels< + string label = "max growth pixels"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = 2.0; +uniform bool randomize_movement = false; + +uniform string notes< + string widget_type = "info"; +> =''keep the random_scale low for small (0.2-1) for small jerky movements and larger for less often big jumps''; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +//noise values in range if 0.0 to 1.0 + +float noise3D(float x, float y, float z) { + float ptr = 0.0f; + return frac(sin(x*112.9898f + y*179.233f + z*237.212f) * 43758.5453f); +} + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + + float3 pos = v_in.pos.xyz; + float t; + float s; + float noise; + if (randomize_movement) + { + t = (rand_f * 2) - 1.0f; + s = (1 - rand_f * 2) - 1.0f;; + noise = clamp( rand_f * random_scale,-0.99, 0.99); + } + else + { + t = (1 + sin(elapsed_time * speed)) / 2; + s = (1 + cos(elapsed_time * speed)) / 2; + noise = clamp(noise3D(t,s,100) * random_scale,-0.99, 0.99); + } + + float3 direction_from_center = float3((v_in.uv.x - 0.5 + noise) * uv_pixel_interval.y / uv_pixel_interval.x, v_in.uv.y - 0.5 + noise, 1); + float3 min_pos; + float3 max_pos; + if (worble) + { + min_pos = pos + direction_from_center * min_growth_pixels * 0.5; + max_pos = pos + direction_from_center * max_growth_pixels * 0.5; + } + else + { + min_pos = pos + direction_from_center * 0.5; + max_pos = min_pos; + } + + float3 current_pos = min_pos * (1 - t) + max_pos * t; + //current_pos.x = v_in.pos.x + (t * min_pos.x); + current_pos.y = (min_pos.y * (1 - s) + max_pos.y * s); + //current_pos.y = v_in.pos.y + (s * min_pos.y); + //current_pos.z = min_pos.z * (1 - s) + max_pos.z * s; + + float2 offset = uv_offset; + offset.x = uv_offset.x * (1 - t + noise); + offset.y = uv_offset.y * (1 - s + noise); + + vert_out.pos = mul(float4(current_pos, 1), ViewProj); + + //float2 scale = uv_scale; + //scale += dot(pos - current_pos, 1); + + vert_out.uv = v_in.uv * uv_scale + offset; + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSShineShader.ps1 b/Commands/Shaders/Get-OBSShineShader.ps1 new file mode 100644 index 000000000..02114aa35 --- /dev/null +++ b/Commands/Shaders/Get-OBSShineShader.ps1 @@ -0,0 +1,371 @@ +function Get-OBSShineShader { + +[Alias('Set-OBSShineShader','Add-OBSShineShader')] +param( +# Set the l_tex of OBSShineShader +[Alias('l_tex')] +[ComponentModel.DefaultBindingProperty('l_tex')] +[String] +$LTex, +# Set the shine_color of OBSShineShader +[Alias('shine_color')] +[ComponentModel.DefaultBindingProperty('shine_color')] +[String] +$ShineColor, +# Set the speed_percent of OBSShineShader +[Alias('speed_percent')] +[ComponentModel.DefaultBindingProperty('speed_percent')] +[Int32] +$SpeedPercent, +# Set the gradient_percent of OBSShineShader +[Alias('gradient_percent')] +[ComponentModel.DefaultBindingProperty('gradient_percent')] +[Int32] +$GradientPercent, +# Set the delay_percent of OBSShineShader +[Alias('delay_percent')] +[ComponentModel.DefaultBindingProperty('delay_percent')] +[Int32] +$DelayPercent, +# Set the Apply_To_Alpha_Layer of OBSShineShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the ease of OBSShineShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the hide of OBSShineShader +[ComponentModel.DefaultBindingProperty('hide')] +[Management.Automation.SwitchParameter] +$Hide, +# Set the reverse of OBSShineShader +[ComponentModel.DefaultBindingProperty('reverse')] +[Management.Automation.SwitchParameter] +$Reverse, +# Set the One_Direction of OBSShineShader +[Alias('One_Direction')] +[ComponentModel.DefaultBindingProperty('One_Direction')] +[Management.Automation.SwitchParameter] +$OneDirection, +# Set the glitch of OBSShineShader +[ComponentModel.DefaultBindingProperty('glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the notes of OBSShineShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the start_adjust of OBSShineShader +[Alias('start_adjust')] +[ComponentModel.DefaultBindingProperty('start_adjust')] +[Single] +$StartAdjust, +# Set the stop_adjust of OBSShineShader +[Alias('stop_adjust')] +[ComponentModel.DefaultBindingProperty('stop_adjust')] +[Single] +$StopAdjust, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'shine' +$ShaderNoun = 'OBSShineShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Shine Shader By Charles Fettinger (https://github.com/Oncorporation) 3/2019 +// use color to control shine amount, use transition wipes or make your own alpha texture +// slerp not currently used, for circular effects +//Converted to OpenGL by Exeldro February 14, 2022 +uniform texture2d l_tex; +uniform float4 shine_color ; +uniform int speed_percent< + string label = "speed percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 25; +uniform int gradient_percent< + string label = "gradient percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 20; +uniform int delay_percent< + string label = "delay percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform bool Apply_To_Alpha_Layer = false; +uniform bool ease = false; +uniform bool hide = false; +uniform bool reverse = false; +uniform bool One_Direction = true; +uniform bool glitch = false; +uniform string notes< + string widget_type = "info"; +> = "Use Luma Wipes ( data/obs-plugins/obs-transitions/luma_wipes ) ''ease'' makes the animation pause at the begin and end for a moment, ''hide'' will make the image disappear, ''glitch'' is random and amazing, ''reverse'' quickly allows you to test settings, ''One Direction'' only shows the shine as it travels in one direction, ''delay percentage'' adds a delay between shines (requires adjustment to speed: https://www.desmos.com/calculator/wkgbndweyt )"; + +uniform float start_adjust; +uniform float stop_adjust; + +float EaseInOutCircTimer(float t,float b,float c,float d){ + t /= d/2.0; + if (t < 1.0) return -c/2.0 * (sqrt(1.0 - t*t) - 1.0) + b; + t -= 2.0; + return c/2.0 * (sqrt(1.0 - t*t) + 1.0) + b; +} + +float Styler(float t,float b,float c,float d,bool ease) +{ + if (ease) return EaseInOutCircTimer(t,0.0,c,d); + return t; +} + +float4 convert_pmalpha(float4 c) +{ + float4 ret = c; + if (c.a >= 0.001) + ret.xyz /= c.a; + else + ret = float4(0.0, 0.0, 0.0, 0.0); + return ret; +} + +float4 slerp(float4 start, float4 end, float percent) +{ + // Dot product - the cosine of the angle between 2 vectors. + float dotf = start.r*end.r+start.g*end.g+start.b*end.b+start.a*end.a; + // Clamp it to be in the range of Acos() + // This may be unnecessary, but floating point + // precision can be a fickle mistress. + dotf = clamp(dotf, -1.0f, 1.0f); + // Acos(dot) returns the angle between start and end, + // And multiplying that by percent returns the angle between + // start and the final result. + float theta = acos(dotf)*percent; + float4 RelativeVec = normalize(end - start * dotf); + + // Orthonormal basis + // The final result. + return ((start*cos(theta)) + (RelativeVec*sin(theta))); +} + +float4 mainImage(VertData v_in) : TARGET +{ + // convert input for vector math + float4 rgba = convert_pmalpha(image.Sample(textureSampler, v_in.uv)); + float speed = speed_percent * 0.01; + float softness = max(abs(gradient_percent * 0.01), 0.01) * sign(gradient_percent); + float delay = clamp(delay_percent * 0.01, 0.0, 1.0); + + + // circular easing variable + float direction = abs(sin((elapsed_time - 0.001) * speed)); + float t = abs(sin(elapsed_time * speed)); + + // if time is greater than direction, we are going up! + direction = t - direction; + + // split into segments with frac or mod. + // delay is the gap between starting and ending of the sine wave, use speed to compensate + t = (frac(t) - delay) * (1 / (1 - delay)); + t = 1 + max(t,0.0); + + float s = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + if (glitch) t = clamp(t + ((rand_f *2) - 1), 0.0,2.0); + + //if Unidirectional disable on return + if (One_Direction && (direction < 0.0)) + { + s = 0; + } + else + { + s = Styler(t, 0, c, d, ease); + } + + // combine luma texture and user defined shine color + float luma = l_tex.Sample(textureSampler, v_in.uv).x; + + // - adjust for min and max + if ((luma >= (start_adjust)) && (luma <= (1 - stop_adjust))) + { + + if (reverse) + { + luma = 1.0 - luma; + } + + // user color with luma + float4 output_color = float4(shine_color.rgb, luma); + + float time = lerp(0.0f, 1.0f + abs(2*softness), s - 1.0); + + // use luma texture to add alpha and shine + + // if behind glow, consider trailing gradient shine then show underlying image + if (luma <= time - softness) + { + float alpha_behind = clamp(1.0 - (time - softness - luma ) / softness, 0.00, 1.0); + if (Apply_To_Alpha_Layer) + alpha_behind *= rgba.a; + return lerp(rgba, rgba + output_color, alpha_behind); + } + + // if in front of glow, consider if the underlying image is hidden + if (luma >= time) + { + // if hide, make the transition better + if (hide) + { + return float4(rgba.rgb, lerp(0.0, rgba.a, (time + softness) / (1 + abs(2*softness)))); + } + else + { + return rgba; + } + } + + // else show the glow area, with luminance + float alpha_ = (time - luma) / softness; + if (Apply_To_Alpha_Layer) + alpha_ *= rgba.a; + return lerp(rgba, rgba + output_color, alpha_); + } + else + { + return rgba; + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSSimpleGradientShader.ps1 b/Commands/Shaders/Get-OBSSimpleGradientShader.ps1 new file mode 100644 index 000000000..ae8872aba --- /dev/null +++ b/Commands/Shaders/Get-OBSSimpleGradientShader.ps1 @@ -0,0 +1,288 @@ +function Get-OBSSimpleGradientShader { + +[Alias('Set-OBSSimpleGradientShader','Add-OBSSimpleGradientShader')] +param( +# Set the speed_percentage of OBSSimpleGradientShader +[Alias('speed_percentage')] +[ComponentModel.DefaultBindingProperty('speed_percentage')] +[Int32] +$SpeedPercentage, +# Set the alpha_percentage of OBSSimpleGradientShader +[Alias('alpha_percentage')] +[ComponentModel.DefaultBindingProperty('alpha_percentage')] +[Int32] +$AlphaPercentage, +# Set the Lens_Flair of OBSSimpleGradientShader +[Alias('Lens_Flair')] +[ComponentModel.DefaultBindingProperty('Lens_Flair')] +[Management.Automation.SwitchParameter] +$LensFlair, +# Set the Animate_Lens_Flair of OBSSimpleGradientShader +[Alias('Animate_Lens_Flair')] +[ComponentModel.DefaultBindingProperty('Animate_Lens_Flair')] +[Management.Automation.SwitchParameter] +$AnimateLensFlair, +# Set the Apply_To_Alpha_Layer of OBSSimpleGradientShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the Apply_To_Specific_Color of OBSSimpleGradientShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSSimpleGradientShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the notes of OBSSimpleGradientShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'simple_gradient' +$ShaderNoun = 'OBSSimpleGradientShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simple Gradient shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +// https://github.com/Oncorporation/obs-shaderfilter + +//lots of room to play here +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform int speed_percentage< + string label = "speed percentage"; + string widget_type = "slider"; + int minimum = -500; + int maximum = 500; + int step = 1; +> = 240; // +uniform int alpha_percentage< + string label = "aplha percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 90; +uniform bool Lens_Flair = false; +uniform bool Animate_Lens_Flair = false; +uniform bool Apply_To_Alpha_Layer = false; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform string notes< + string widget_type = "info"; +> = "This gradient is very basic from the top left corner. Red on horizontal, Green vertical, Blue Diagonal. Apply To Alpha Layer will add the gradient colors to the background. Lens Flair will brighten the scene from the bottom right. There is also a lot of unused code to play with in the shader file, delimted by /* ... */"; + +float4 mainImage(VertData v_in) : TARGET +{ + + float4 background_color = image.Sample(textureSampler, v_in.uv); + int no_colors = 4; + float3 colors[4]; + colors[0] = float3(1.0,0.0,0.0); + colors[1] = float3(0.0,1.0,0.0); + colors[2] = float3(0.0,0.0,1.0); + colors[3] = float3(1.0,1.0,1.0); + float alpha = float(alpha_percentage) * 0.01; + float speed = float(speed_percentage) * 0.01; + + float mx = max(uv_size.x , uv_size.y); + //float2 uv = v_in.uv / mx; + float3 rgb = background_color.rgb; + + // skip if (alpha is zero and only apply to alpha layer is true) + if (!(background_color.a <= 0.0 && Apply_To_Alpha_Layer == true)) + { + rgb = float3(v_in.uv.x, v_in.uv.y, 0.10 + 0.85 * sin(elapsed_time * speed)); + } + + //create lens flare like effect + if (Lens_Flair) + { + float2 lens_flair_coordinates = float2(0.95 ,0.95); + if (Animate_Lens_Flair) + lens_flair_coordinates *= float2(sin(elapsed_time * speed) ,cos(elapsed_time * speed)); + + float dist = distance(v_in.uv, ( lens_flair_coordinates * uv_scale + uv_offset)); + for (int i = 0; i < no_colors; ++i) { + rgb += lerp(rgb, colors[i], dist * 1.5) * 0.25; + } + } + + + //float3 col = colors[0]; +/* for (int i = 1; i < no_colors; ++i) { + float3 hole = float3( + sin(1.5 - distance(v_in.uv.x / mx, colors[i].x / mx) * 2.5 * speed), + sin(1.5 - distance(v_in.uv.y / mx, colors[i].y / mx) * 2.5 * speed), + colors[i].z); + rgb = lerp(rgb, hole, 0.1); +*/ +/* float3 hole = lerp(colors[i-1], colors[i], sin(elapsed_time * speed)); + col = lerp(col, hole, v_in.uv.x); +*/ + //} +// rgb = fflerp(rgb, col, 0.5); + + + + //try prepositioned colors with colors[] array timing + //creates an animated color spotlight +/* int color_index = int(sin(elapsed_time * speed) * no_colors); + float3 start_color = colors[color_index]; + float3 end_color; + if (color_index >= 0) + { + end_color = colors[color_index - 1]; + } + else + { + end_color = colors[no_colors - 1]; + } + + rgb = smoothstep(start_color, end_color, distance(v_in.uv , sin(elapsed_time * speed * no_colors) * (float2(1.0,1.0) * uv_scale + uv_offset))); +*/ + float4 rgba; + if (Apply_To_Alpha_Layer == false) + { + rgba = lerp(background_color,float4(rgb, 1.0),alpha); + } + else + { + rgba = lerp(background_color,background_color * float4(rgb,1.0), alpha); + } + if (Apply_To_Specific_Color) + { + float4 original_color = background_color; + background_color = (distance(background_color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : background_color; + rgba = lerp(original_color, background_color, clamp(alpha, 0, 1.0)); + } + return rgba; +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSSimplexNoiseShader.ps1 b/Commands/Shaders/Get-OBSSimplexNoiseShader.ps1 new file mode 100644 index 000000000..0da46f385 --- /dev/null +++ b/Commands/Shaders/Get-OBSSimplexNoiseShader.ps1 @@ -0,0 +1,370 @@ +function Get-OBSSimplexNoiseShader { + +[Alias('Set-OBSSimplexNoiseShader','Add-OBSSimplexNoiseShader')] +param( +# Set the Snap_Percent of OBSSimplexNoiseShader +[Alias('Snap_Percent')] +[ComponentModel.DefaultBindingProperty('Snap_Percent')] +[Single] +$SnapPercent, +# Set the Speed_Percent of OBSSimplexNoiseShader +[Alias('Speed_Percent')] +[ComponentModel.DefaultBindingProperty('Speed_Percent')] +[Single] +$SpeedPercent, +# Set the Resolution of OBSSimplexNoiseShader +[ComponentModel.DefaultBindingProperty('Resolution')] +[Single] +$Resolution, +# Set the Fractal of OBSSimplexNoiseShader +[ComponentModel.DefaultBindingProperty('Fractal')] +[Management.Automation.SwitchParameter] +$Fractal, +# Set the Use_Alpha_Layer of OBSSimplexNoiseShader +[Alias('Use_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Use_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$UseAlphaLayer, +# Set the Fore_Color of OBSSimplexNoiseShader +[Alias('Fore_Color')] +[ComponentModel.DefaultBindingProperty('Fore_Color')] +[String] +$ForeColor, +# Set the Back_Color of OBSSimplexNoiseShader +[Alias('Back_Color')] +[ComponentModel.DefaultBindingProperty('Back_Color')] +[String] +$BackColor, +# Set the Alpha_Percent of OBSSimplexNoiseShader +[Alias('Alpha_Percent')] +[ComponentModel.DefaultBindingProperty('Alpha_Percent')] +[Single] +$AlphaPercent, +# Set the Notes of OBSSimplexNoiseShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'simplex_noise' +$ShaderNoun = 'OBSSimplexNoiseShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simplex Noise shader by Charles Fettinger (https://github.com/Oncorporation) 5/2019 +// for use with obs-shaderfilter 1.0 +//based upon: https://www.shadertoy.com/view/XsX3zB + +#ifndef OPENGL +#define fract frac +#endif + +uniform float Snap_Percent< + string label = "Snap Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 7.5; +uniform float Speed_Percent< + string label = "Speed Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 2.5; +uniform float Resolution< + string label = "Resolution"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 16.0; +uniform bool Fractal = false; +uniform bool Use_Alpha_Layer = false; +uniform float4 Fore_Color = {0.95,0.95,0.95, 1.0}; +uniform float4 Back_Color = {0.75, 0.75, 0.75, 1.0}; +uniform float Alpha_Percent< + string label = "Alpha Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100.0; +uniform string Notes< + string widget_type = "info"; +> = "Alpha Percentage applies to the shader, Use_Alpha_Layer applies effect with the image alpha layer, Resolution is the amount of detail of noise created.Fractal is a different algorithm. Snap Percent affects how many updates per second. Default values: 7.5%, 2.5%, 16.0, 100%"; + +float dot(float3 a, float3 b){ + return a.r*b.r+a.g*b.g+a.b*b.b; +} + +float dot4(float4 a, float4 b){ + return a.r*b.r+a.g*b.g+a.b*b.b+a.a*b.a; +} +float snap(float x, float snap) +{ + return snap * round(x / max(0.01,snap)); +} + +float3 random3(float3 co) +{ + float j = 4096.0 * sin(dot(co, float3(17.0, 59.4, 15.0))); + float3 result; + result.z = fract(512.0 * j); + j *= .125; + result.x = fract(512.0 * j); + j *= .125; + result.y = fract(512.0 * j); + return result - 0.5; +} + +/* 3d simplex noise */ +float simplex3d(float3 p) { + /* 1. find current tetrahedron T and it''s four vertices */ + /* s, s+i1, s+i2, s+1.0 - absolute skewed (integer) coordinates of T vertices */ + /* x, x1, x2, x3 - unskewed coordinates of p relative to each of T vertices*/ + + /* skew constants for 3d simplex functions */ + float F3 = 0.3333333; + float G3 = 0.1666667; + + /* calculate s and x */ + float3 s = floor(p + dot(p, float3(F3,F3,F3))); + float3 x = p - s + dot(s, float3(G3,G3,G3)); + + /* calculate i1 and i2 */ + float3 e = step(float3(0.0,0.0,0.0), x - x.yzx); + float3 i1 = e * (1.0 - e.zxy); + float3 i2 = 1.0 - e.zxy * (1.0 - e); + + /* x1, x2, x3 */ + float3 x1 = x - i1 + G3; + float3 x2 = x - i2 + 2.0 * G3; + float3 x3 = x - 1.0 + 3.0 * G3; + + /* 2. find four surflets and store them in d */ + float4 w, d; + + /* calculate surflet weights */ + w.x = dot(x, x); + w.y = dot(x1, x1); + w.z = dot(x2, x2); + w.w = dot(x3, x3); + + /* w fades from 0.6 at the center of the surflet to 0.0 at the margin */ + w = max(0.61 - w, 0.0); + + /* calculate surflet components */ + d.x = dot(random3(s), x); + d.y = dot(random3(s + i1), x1); + d.z = dot(random3(s + i2), x2); + d.w = dot(random3(s + 1.0), x3); + + /* multiply d by w^4 */ + w *= w; + w *= w; + d *= w; + + /* 3. return the sum of the four surflets */ + return dot4(d, float4(52.0, 52.0, 52.0, 52.0)); +} + + +/* directional artifacts can be reduced by rotating each octave */ +float simplex3d_fractal(float3 m3) { + /* const matrices for 3d rotation */ +#ifdef OPENGL + float3x3 rot1 = float3x3( + float3(-0.37, 0.36, 0.85), + float3(-0.14, -0.93, 0.34), + float3(0.92, 0.01, 0.4 )); + float3x3 rot2 = float3x3( + float3(-0.55, -0.39, 0.74), + float3(0.33, -0.91, -0.24), + float3(0.77, 0.12, 0.63 )); + float3x3 rot3 = float3x3( + float3(-0.71, 0.52, -0.47), + float3(-0.08, -0.72, -0.68), + float3(-0.7, -0.45, 0.56 )); + + float3 m = float3(m3.x, m3.y, m3.z); +#else + float3x3 rot1 = { + -0.37, 0.36, 0.85, + -0.14, -0.93, 0.34, + 0.92, 0.01, 0.4 }; + float3x3 rot2 = { + -0.55, -0.39, 0.74, + 0.33, -0.91, -0.24, + 0.77, 0.12, 0.63 }; + float3x3 rot3 = { + -0.71, 0.52, -0.47, + -0.08, -0.72, -0.68, + -0.7, -0.45, 0.56 }; + + float3 m = {m3.x, m3.y, m3.z}; +#endif + + return 0.5333333* simplex3d(mul(m, rot1)) + + 0.2666667 * simplex3d(2.0 * mul(m, rot2)) + + 0.1333333 * simplex3d(4.0 * mul(m, rot3)) + + 0.0666667 * simplex3d(8.0 * m); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float time = snap(elapsed_time, Snap_Percent * .01); + float4 rgba = image.Sample(textureSampler, v_in.uv); + float2 p = v_in.uv.xy + float2( 0, -0.5); + float3 p3 = float3(p, time * (Speed_Percent * 0.01)); + + float pixel_alpha = 1.0; + // apply to mainImage rgba + if (Use_Alpha_Layer) { + p3 *= rgba.rgb; + pixel_alpha = rgba.a; + } + + float value; + + if (Fractal) { + value = simplex3d_fractal(p3 * (Resolution * 0.5) + (Resolution * 0.5)); + } + else { + value = simplex3d(p3 * Resolution); + } + + //soften color + value = 0.5 + (0.5 * value); + float intensity = dot(float3(value, value, value), float3(0.299, 0.587, 0.114)); + + //use intensity to apply foreground and background colors + float4 r = lerp(float4(float3(value, value, value), pixel_alpha), Fore_Color, saturate(intensity)); + r = lerp(Back_Color, r, saturate(intensity)); + r.a = pixel_alpha; + + return lerp(rgba, r, Alpha_Percent * 0.01); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSSmartDenoiseShader.ps1 b/Commands/Shaders/Get-OBSSmartDenoiseShader.ps1 new file mode 100644 index 000000000..6c51efaa1 --- /dev/null +++ b/Commands/Shaders/Get-OBSSmartDenoiseShader.ps1 @@ -0,0 +1,222 @@ +function Get-OBSSmartDenoiseShader { + +[Alias('Set-OBSSmartDenoiseShader','Add-OBSSmartDenoiseShader')] +param( +# Set the uSigma of OBSSmartDenoiseShader +[ComponentModel.DefaultBindingProperty('uSigma')] +[Single] +$USigma, +# Set the uKSigma of OBSSmartDenoiseShader +[ComponentModel.DefaultBindingProperty('uKSigma')] +[Single] +$UKSigma, +# Set the uThreshold of OBSSmartDenoiseShader +[ComponentModel.DefaultBindingProperty('uThreshold')] +[Single] +$UThreshold, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'smart_denoise' +$ShaderNoun = 'OBSSmartDenoiseShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Smart DeNoise By Michele Morrone (https://github.com/BrutPitt/glslSmartDeNoise) +// Converted to OBS version of HLSL by Euiko on February 10, 2025 + +#define INV_SQRT_OF_2PI 0.39894228040143267793994605993439 // 1.0/SQRT_OF_2PI +#define INV_PI 0.31830988618379067153776752674503 + +uniform float uSigma< + string label = "Sigma"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 3; // max based on the webgl sample, which is 3 + float step = 0.01; +> = 5.0; // default value based on shadertoy +uniform float uKSigma< + string label = "K-Sigma"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 24; // max based on the webgl sample, which is 24 + float step = 0.01; +> = 7.0; // the default value is based on the webgl sample +uniform float uThreshold< + string label = "Edge Threshold"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 2; // max based on the webgl sample, which is 2 + float step = 0.01; +> = 0.190; // the default value is based on the webgl sample + +// smartDeNoise - parameters +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// float2 uv - actual fragment coord +// float2 size - window size +// float sigma > 0 - sigma Standard Deviation +// float kSigma >= 0 - sigma coefficient +// kSigma * sigma --> radius of the circular kernel +// float threshold - edge sharpening threshold +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// NOTE: image''s texture2d data will be supplied by the OBS shaderfilter by default +float4 smartDeNoise(float2 uv, float2 size, float sigma, float kSigma, float threshold) +{ + float radius = round(kSigma * sigma); + float radQ = radius * radius; + + float invSigmaQx2 = 0.5 / (sigma * sigma); // 1.0 / (sigma^2 * 2.0) + float invSigmaQx2PI = INV_PI * invSigmaQx2; // 1/(2 * PI * sigma^2) + + float invThresholdSqx2 = 0.5 / (threshold * threshold); // 1.0 / (sigma^2 * 2.0) + float invThresholdSqrt2PI = INV_SQRT_OF_2PI / threshold; // 1.0 / (sqrt(2*PI) * sigma^2) + + float4 centrPx = image.Sample(textureSampler, uv); + + float zBuff = 0.0; + float4 aBuff = float4(0.0, 0.0, 0.0, 0.0); + + float2 d; + for (d.x = -radius; d.x <= radius; d.x += 1.0) + { + float pt = sqrt(radQ - (d.x * d.x)); // pt = yRadius: have circular trend + d.y = -pt; + for (; d.y <= pt; d.y += 1.0) + { + float blurFactor = exp((-dot(d, d)) * invSigmaQx2) * invSigmaQx2PI; + float4 walkPx = image.Sample(textureSampler, uv + (d / size)); + float4 dC = walkPx - centrPx; + float deltaFactor = (exp((-dot(dC.xyz, dC.xyz)) * invThresholdSqx2) * invThresholdSqrt2PI) * blurFactor; + zBuff += deltaFactor; + aBuff += (walkPx * deltaFactor); + } + } + return aBuff / float4(zBuff, zBuff, zBuff, zBuff); +} + +float4 mainImage(VertData v_in) : TARGET +{ + return smartDeNoise(v_in.uv, uv_size, uSigma, uKSigma, uThreshold); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSSpecularShineShader.ps1 b/Commands/Shaders/Get-OBSSpecularShineShader.ps1 new file mode 100644 index 000000000..40a91f529 --- /dev/null +++ b/Commands/Shaders/Get-OBSSpecularShineShader.ps1 @@ -0,0 +1,270 @@ +function Get-OBSSpecularShineShader { + +[Alias('Set-OBSSpecularShineShader','Add-OBSSpecularShineShader')] +param( +# Set the Hint of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('Hint')] +[String] +$Hint, +# Set the roughness of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('roughness')] +[Single] +$Roughness, +# Set the lightStrength of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('lightStrength')] +[Single] +$LightStrength, +# Set the LightPositionX of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('LightPositionX')] +[Single] +$LightPositionX, +# Set the LightPositionY of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('LightPositionY')] +[Single] +$LightPositionY, +# Set the flattenNormal of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('flattenNormal')] +[Single] +$FlattenNormal, +# Set the stretchNormalX of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('stretchNormalX')] +[Single] +$StretchNormalX, +# Set the stretchNormalY of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('stretchNormalY')] +[Single] +$StretchNormalY, +# Set the Light_Color of OBSSpecularShineShader +[Alias('Light_Color')] +[ComponentModel.DefaultBindingProperty('Light_Color')] +[Single[]] +$LightColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'specular-shine' +$ShaderNoun = 'OBSSpecularShineShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Specular Shine shader by Andicraft / Andrea Jörgensen - https://github.com/Andicraft + +uniform string Hint< + string widget_type = "info"; +> = "Try using a black color source with the additive blend mode!"; + +uniform float roughness< + string label = "Roughness"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.25; + +uniform float lightStrength< + string label = "lightStrength"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.001; +> = 0.5; + +uniform float LightPositionX< + string label = "Light Position X"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float LightPositionY< + string label = "Light Position Y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float flattenNormal< + string label = "Flatten Normal"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; + +uniform float stretchNormalX< + string label = "Stretch Normal X"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 4.0; + float step = 0.01; +> = 1; + +uniform float stretchNormalY< + string label = "Stretch Normal Y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 4.0; + float step = 0.01; +> = 1; + +uniform float3 Light_Color = {1,1,1}; + +float Square(float a) { return a * a; } + +float CookTorrance(float3 lightDir, float3 normal, float roughness) { + float3 h = normalize(lightDir + float3(0,0,1)); + float nh2 = Square(saturate(dot(normal, h))); + float lh2 = Square(saturate(dot(lightDir, h))); + float r2 = Square(roughness); + float d2 = Square(nh2 * (r2 - 1.0) + 1.00001); + float normalization = roughness * 4.0 + 2.0; + return r2 / (d2 * max(0.1, lh2) * normalization); +} + +#define PI 3.14159265 + +float4 mainImage(VertData v_in) : TARGET +{ + + float4 c0 = image.Sample(textureSampler, v_in.uv); + + float3 lightDir = normalize(float3(-LightPositionX*5, -LightPositionY*5, 1)); + + float2 normalUV = v_in.uv - 0.5; + normalUV.x /= stretchNormalX; + normalUV.y /= stretchNormalY; + normalUV += 0.5; + + float3 normal = normalize(float3(normalUV.x * 2 - 1,normalUV.y * 2 - 1,-1)); + normal.z *= -1; + + normal = lerp(normal, float3(0,0,-1), flattenNormal); + + float3 light = CookTorrance(lightDir, normal, roughness)*float3(1,1,1)*lightStrength*Light_Color; + + return float4(c0 + light,c0.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSSpotlightShader.ps1 b/Commands/Shaders/Get-OBSSpotlightShader.ps1 new file mode 100644 index 000000000..7b51b71ad --- /dev/null +++ b/Commands/Shaders/Get-OBSSpotlightShader.ps1 @@ -0,0 +1,219 @@ +function Get-OBSSpotlightShader { + +[Alias('Set-OBSSpotlightShader','Add-OBSSpotlightShader')] +param( +# Set the Speed_Percent of OBSSpotlightShader +[Alias('Speed_Percent')] +[ComponentModel.DefaultBindingProperty('Speed_Percent')] +[Single] +$SpeedPercent, +# Set the Focus_Percent of OBSSpotlightShader +[Alias('Focus_Percent')] +[ComponentModel.DefaultBindingProperty('Focus_Percent')] +[Single] +$FocusPercent, +# Set the Glitch of OBSSpotlightShader +[ComponentModel.DefaultBindingProperty('Glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the Spotlight_Color of OBSSpotlightShader +[Alias('Spotlight_Color')] +[ComponentModel.DefaultBindingProperty('Spotlight_Color')] +[String] +$SpotlightColor, +# Set the Horizontal_Offset of OBSSpotlightShader +[Alias('Horizontal_Offset')] +[ComponentModel.DefaultBindingProperty('Horizontal_Offset')] +[Single] +$HorizontalOffset, +# Set the Vertical_Offset of OBSSpotlightShader +[Alias('Vertical_Offset')] +[ComponentModel.DefaultBindingProperty('Vertical_Offset')] +[Single] +$VerticalOffset, +# Set the Notes of OBSSpotlightShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'spotlight' +$ShaderNoun = 'OBSSpotlightShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Spotlight By Charles Fettinger (https://github.com/Oncorporation) 4/2019 +uniform float Speed_Percent< + string label = "Speed Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100.0; +uniform float Focus_Percent< + string label = "Focus Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 15.0; +uniform bool Glitch; +uniform float4 Spotlight_Color; +uniform float Horizontal_Offset< + string label = "Horizontal Offset"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float Vertical_Offset< + string label = "Vertical Offset"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = -0.5; +uniform string Notes< + string widget_type = "info"; +> = "use negative Focus Percent to create a shade effect, speed zero is a stationary spotlight"; + +float4 mainImage(VertData v_in) : TARGET +{ + float speed = Speed_Percent * 0.01; + float focus = Focus_Percent; + if (Glitch) + { + speed *= ((rand_f * 2) - 1) * 0.01; + focus *= ((rand_f * 1.1) - 0.1); + } + + float PI = 3.1415926535897932384626433832795;//acos(-1); + float4 c0 = image.Sample( textureSampler, v_in.uv); + float3 lightsrc = float3(sin(elapsed_time * speed * PI * 0.667) *.5 + .5 + Horizontal_Offset, cos(elapsed_time * speed * PI) *.5 + .5 + Vertical_Offset, 1); + float3 light = normalize(lightsrc - float3( v_in.uv.x + (Horizontal_Offset * speed), v_in.uv.y + (Vertical_Offset * speed), 0)); + c0 *= pow(dot(light, float3(0, 0, 1)), focus) * Spotlight_Color; + + return c0; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSSwirlShader.ps1 b/Commands/Shaders/Get-OBSSwirlShader.ps1 new file mode 100644 index 000000000..dc57f2960 --- /dev/null +++ b/Commands/Shaders/Get-OBSSwirlShader.ps1 @@ -0,0 +1,238 @@ +function Get-OBSSwirlShader { + +[Alias('Set-OBSSwirlShader','Add-OBSSwirlShader')] +param( +# Set the radius of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('radius')] +[Single] +$Radius, +# Set the angle of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('angle')] +[Single] +$Angle, +# Set the center_x of OBSSwirlShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSSwirlShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# Set the animate of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('animate')] +[Management.Automation.SwitchParameter] +$Animate, +# Set the inverse of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('inverse')] +[Management.Automation.SwitchParameter] +$Inverse, +# Set the notes of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Swirl' +$ShaderNoun = 'OBSSwirlShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Created by Radegast Stravinsky for obs-shaderfilter 9/2020 +uniform float radius< + string label = "Radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; // +uniform float angle< + string label = "Angle"; + string widget_type = "slider"; + float minimum = -360.0; + float maximum = 360.0; + float step = 0.01; +> = 270.0; // + +uniform float center_x< + string label = "Center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.25; // +uniform float center_y< + string label = "Center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.25; // + +uniform bool animate = false; +uniform bool inverse = false; + +uniform string notes< + string widget_type = "info"; +> = "Distorts the screen, twisting the image in a circular motion." + +float4 mainImage(VertData v_in) : TARGET +{ + + float2 center = float2(center_x, center_y); + VertData v_out; + v_out.pos = v_in.pos; + float2 hw = uv_size; + float ar = 1. * hw.y/hw.x; + + v_out.uv = 1. * v_in.uv - center; + + center.x /= ar; + v_out.uv.x /= ar; + + float dist = distance(v_out.uv, center); + if (dist < radius) + { + float percent = (radius-dist)/(radius); + percent = inverse == false ? percent : 1 - percent; + + float theta = percent * percent * radians(angle * (animate == true ? sin(elapsed_time) : 1.0)); + float s = sin(theta); + float c = cos(theta); + v_out.uv = float2(dot(v_out.uv-center, float2(c,-s)), dot(v_out.uv-center, float2(s,c))); + v_out.uv += (2 * center); + + v_out.uv.x *= ar; + + return image.Sample(textureSampler, v_out.uv); + } + else + { + return image.Sample(textureSampler, v_in.uv ); + } + +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSTetraShader.ps1 b/Commands/Shaders/Get-OBSTetraShader.ps1 new file mode 100644 index 000000000..8daddeb9e --- /dev/null +++ b/Commands/Shaders/Get-OBSTetraShader.ps1 @@ -0,0 +1,400 @@ +function Get-OBSTetraShader { + +[Alias('Set-OBSTetraShader','Add-OBSTetraShader')] +param( +# Set the redR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('redR')] +[Single] +$RedR, +# Set the redG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('redG')] +[Single] +$RedG, +# Set the redB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('redB')] +[Single] +$RedB, +# Set the yelR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('yelR')] +[Single] +$YelR, +# Set the yelG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('yelG')] +[Single] +$YelG, +# Set the yelB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('yelB')] +[Single] +$YelB, +# Set the grnR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('grnR')] +[Single] +$GrnR, +# Set the grnG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('grnG')] +[Single] +$GrnG, +# Set the grnB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('grnB')] +[Single] +$GrnB, +# Set the cynR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('cynR')] +[Single] +$CynR, +# Set the cynG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('cynG')] +[Single] +$CynG, +# Set the cynB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('cynB')] +[Single] +$CynB, +# Set the bluR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('bluR')] +[Single] +$BluR, +# Set the bluG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('bluG')] +[Single] +$BluG, +# Set the bluB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('bluB')] +[Single] +$BluB, +# Set the magR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('magR')] +[Single] +$MagR, +# Set the magG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('magG')] +[Single] +$MagG, +# Set the magB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('magB')] +[Single] +$MagB, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'tetra' +$ShaderNoun = 'OBSTetraShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Tetrahedral Interpolation Shader for OBS + +uniform float redR< + string label = "Red in Red"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float redG< + string label = "Green in Red"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float redB< + string label = "Blue in Red"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float yelR< + string label = "Red in Yellow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float yelG< + string label = "Green in Yellow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float yelB< + string label = "Blue in Yellow"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float grnR< + string label = "Red in Green"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float grnG< + string label = "Green in Green"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float grnB< + string label = "Blue in Green"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float cynR< + string label = "Red in Cyan"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float cynG< + string label = "Green in Cyan"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float cynB< + string label = "Blue in Cyan"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float bluR< + string label = "Red in Blue"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float bluG< + string label = "Green in Blue"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float bluB< + string label = "Blue in Blue"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float magR< + string label = "Red in Magenta"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float magG< + string label = "Green in Magenta"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float magB< + string label = "Blue in Magenta"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + + +float3 tetra(float3 RGBimage, float3 red, float3 yel, float3 grn, float3 cyn, float3 blu, float3 mag) { + float r = RGBimage.x; + float g = RGBimage.y; + float b = RGBimage.z; + + float3 wht = float3(1.0, 1.0, 1.0); + + if (r > g) { + if (g > b) { + // r > g > b + return r * red + g * (yel - red) + b * (wht - yel); + } else if (r > b) { + // r > b > g + return r * red + g * (wht - mag) + b * (mag - red); + } else { + // b > r > g + return r * (mag - blu) + g * (wht - mag) + b * blu; + } + } else { + if (b > g) { + // b > g > r + return r * (wht - cyn) + g * (cyn - blu) + b * blu; + } else if (b > r) { + // g > b > r + return r * (wht - cyn) + g * grn + b * (cyn - grn); + } else { + // g > r > b + return r * (yel - grn) + g * grn + b * (wht - yel); + } + } +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 inputColor = image.Sample(textureSampler, v_in.uv); + float alpha = inputColor.a; + + float3 red = float3(redR, redG, redB); + float3 yel = float3(yelR, yelG, yelB); + float3 grn = float3(grnR, grnG, grnB); + float3 cyn = float3(cynR, cynG, cynB); + float3 blu = float3(bluR, bluG, bluB); + float3 mag = float3(magR, magG, magB); + + float3 outputColor = tetra(inputColor.rgb, red, yel, grn, cyn, blu, mag); + return float4(outputColor, alpha); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSThermalShader.ps1 b/Commands/Shaders/Get-OBSThermalShader.ps1 new file mode 100644 index 000000000..3b17ffcef --- /dev/null +++ b/Commands/Shaders/Get-OBSThermalShader.ps1 @@ -0,0 +1,176 @@ +function Get-OBSThermalShader { + +[Alias('Set-OBSThermalShader','Add-OBSThermalShader')] +param( +# Set the strength of OBSThermalShader +[ComponentModel.DefaultBindingProperty('strength')] +[Single] +$Strength, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'thermal' +$ShaderNoun = 'OBSThermalShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/mdKXzG + +uniform float strength< + string label = "Strength"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200.0; + float step = 0.1; +> = 100.0; + +float greyScale(float3 c) { + return 0.29 * c.r + 0.60 * c.g + 0.11; +} + +float3 heatMap(float greyValue) { + float3 heat; + heat.r = smoothstep(0.5, 0.8, greyValue); + if(greyValue >= 0.8333) { + heat.r *= (1.1 - greyValue) * 5.0; + } + if(greyValue > 0.6) { + heat.g = smoothstep(1.0, 0.7, greyValue); + } else { + heat.g = smoothstep(0.0, 0.7, greyValue); + } + heat.b = smoothstep(1.0, 0.0, greyValue); + if(greyValue <= 0.3333) { + heat.b *= greyValue / 0.3; + } + return heat; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + float greyValue = greyScale(c.rgb); + float3 h = heatMap(greyValue*(strength/100.0)); + return float4(h.r, h.g, h.b, c.a); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSTvCrtSubpixelShader.ps1 b/Commands/Shaders/Get-OBSTvCrtSubpixelShader.ps1 new file mode 100644 index 000000000..808cb4c7a --- /dev/null +++ b/Commands/Shaders/Get-OBSTvCrtSubpixelShader.ps1 @@ -0,0 +1,219 @@ +function Get-OBSTvCrtSubpixelShader { + +[Alias('Set-OBSTvCrtSubpixelShader','Add-OBSTvCrtSubpixelShader')] +param( +# Set the channelWidth of OBSTvCrtSubpixelShader +[ComponentModel.DefaultBindingProperty('channelWidth')] +[Int32] +$ChannelWidth, +# Set the channelHeight of OBSTvCrtSubpixelShader +[ComponentModel.DefaultBindingProperty('channelHeight')] +[Int32] +$ChannelHeight, +# Set the hGap of OBSTvCrtSubpixelShader +[ComponentModel.DefaultBindingProperty('hGap')] +[Int32] +$HGap, +# Set the vGap of OBSTvCrtSubpixelShader +[ComponentModel.DefaultBindingProperty('vGap')] +[Int32] +$VGap, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'tv-crt-subpixel' +$ShaderNoun = 'OBSTvCrtSubpixelShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// https://www.shadertoy.com/view/dlBBz1 adopted for OBS by Exeldro + +// width of a single color channel in pixels +uniform int channelWidth< + string label = "Channel Width"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 1; + +// height of color channels in pixels +uniform int channelHeight< + string label = "Channel Height"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 3; + +// horizontal distance between two neighboring pixels +uniform int hGap< + string label = "Horizontal Gap"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 1; + +// vertical distance between two neighboring pixels +uniform int vGap< + string label = "Vertical Gap"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 1; + +float4 mainImage(VertData v_in) : TARGET +{ + float columns = float(channelWidth * 3 + hGap); + float pixelHeight = float(channelHeight + vGap); + + float2 fragCoord = v_in.uv * uv_size; + float2 sampleRes = float2(uv_size.x / columns, uv_size.y / pixelHeight); + float2 pixel = float2(floor(fragCoord.x / columns), floor(fragCoord.y / pixelHeight)); + float2 sampleUv = pixel / sampleRes; + + // color of sample point + float4 col = image.Sample(textureSampler, sampleUv); + + int column = int(fragCoord.x) % (channelWidth * 3 + hGap); + + // set color based on which channel this fragment corresponds to + if (column < channelWidth * 1) col = float4(col.r, 0.0, 0.0, col.a); + else if (column < channelWidth * 2) col = float4(0.0, col.g, 0.0, col.a); + else if (column < channelWidth * 3) col = float4(0.0, 0.0, col.b, col.a); + else col = float4(0.0, 0.0, 0.0, col.a); + + // offset every other column of pixels + int height = int(pixelHeight); + if (int(pixel.x) % 2 == 0) { + if (int(fragCoord.y) % height >= height - vGap) col = float4(0.0, 0.0, 0.0, col.a); + } else { + if (int(fragCoord.y) % height < vGap) col = float4(0.0, 0.0, 0.0, col.a); + } + + // Output to screen + return col; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSTwistShader.ps1 b/Commands/Shaders/Get-OBSTwistShader.ps1 new file mode 100644 index 000000000..746d6e207 --- /dev/null +++ b/Commands/Shaders/Get-OBSTwistShader.ps1 @@ -0,0 +1,202 @@ +function Get-OBSTwistShader { + +[Alias('Set-OBSTwistShader','Add-OBSTwistShader')] +param( +# Set the center_x_percent of OBSTwistShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Int32] +$CenterXPercent, +# Set the center_y_percent of OBSTwistShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Int32] +$CenterYPercent, +# Set the power of OBSTwistShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# Set the rotation of OBSTwistShader +[ComponentModel.DefaultBindingProperty('rotation')] +[Single] +$Rotation, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'twist' +$ShaderNoun = 'OBSTwistShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int center_x_percent< + string label = "center x percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float power< + string label = "power"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 0.3; +uniform float rotation< + string label = "rotation"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.001; +> = 2.0; + +#ifndef OPENGL +#define mat2 float2x2 +#endif + +mat2 rotate(float angle){ + return mat2(float2(cos(angle), -sin(angle)), float2(sin(angle), cos(angle))); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float d = distance(center_pos,v_in.uv); + if(d > power){ + return image.Sample(textureSampler, v_in.uv); + } + float r = (cos(d*3.14159265359/power) +1)/2 * rotation; + float2 pos = v_in.uv - center_pos; + pos = mul(pos, rotate(r)); + pos += center_pos; + return image.Sample(textureSampler, pos); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSTwoPassDropShadowShader.ps1 b/Commands/Shaders/Get-OBSTwoPassDropShadowShader.ps1 new file mode 100644 index 000000000..7d0632c33 --- /dev/null +++ b/Commands/Shaders/Get-OBSTwoPassDropShadowShader.ps1 @@ -0,0 +1,314 @@ +function Get-OBSTwoPassDropShadowShader { + +[Alias('Set-OBSTwoPassDropShadowShader','Add-OBSTwoPassDropShadowShader')] +param( +# Set the ViewProj of OBSTwoPassDropShadowShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSTwoPassDropShadowShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSTwoPassDropShadowShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSTwoPassDropShadowShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSTwoPassDropShadowShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSTwoPassDropShadowShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSTwoPassDropShadowShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSTwoPassDropShadowShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the shadow_offset_x of OBSTwoPassDropShadowShader +[Alias('shadow_offset_x')] +[ComponentModel.DefaultBindingProperty('shadow_offset_x')] +[Int32] +$ShadowOffsetX, +# Set the shadow_offset_y of OBSTwoPassDropShadowShader +[Alias('shadow_offset_y')] +[ComponentModel.DefaultBindingProperty('shadow_offset_y')] +[Int32] +$ShadowOffsetY, +# Set the shadow_blur_size of OBSTwoPassDropShadowShader +[Alias('shadow_blur_size')] +[ComponentModel.DefaultBindingProperty('shadow_blur_size')] +[Int32] +$ShadowBlurSize, +# Set the shadow_color of OBSTwoPassDropShadowShader +[Alias('shadow_color')] +[ComponentModel.DefaultBindingProperty('shadow_color')] +[String] +$ShadowColor, +# Set the is_alpha_premultiplied of OBSTwoPassDropShadowShader +[Alias('is_alpha_premultiplied')] +[ComponentModel.DefaultBindingProperty('is_alpha_premultiplied')] +[Management.Automation.SwitchParameter] +$IsAlphaPremultiplied, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'two-pass-drop-shadow' +$ShaderNoun = 'OBSTwoPassDropShadowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +uniform int shadow_offset_x< + string label = "shadow offset x"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +>; +uniform int shadow_offset_y< + string label = "shadow offset y"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +>; +uniform int shadow_blur_size< + string label = "shadow blur size"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; + +uniform float4 shadow_color; + +uniform bool is_alpha_premultiplied; + +float4 mainImage(VertData v_in) : TARGET +{ + int shadow_blur_samples = int(shadow_blur_size + 1);//pow(shadow_blur_size * 2 + 1, 2); + + float4 color = image.Sample(textureSampler, v_in.uv); + float2 shadow_uv = float2(v_in.uv.x - uv_pixel_interval.x * int(shadow_offset_x), + v_in.uv.y - uv_pixel_interval.y * int(shadow_offset_y)); + + float sampled_shadow_alpha = 0; + + for (int blur_x = -shadow_blur_size; blur_x <= shadow_blur_size; blur_x++) + { + float2 blur_uv = shadow_uv + float2(uv_pixel_interval.x * blur_x, 0); + sampled_shadow_alpha += image.Sample(textureSampler, blur_uv).a; + } + + sampled_shadow_alpha /= shadow_blur_samples; + + float4 final_shadow_color = float4(shadow_color.rgb, shadow_color.a * sampled_shadow_alpha); + + return final_shadow_color * (1-color.a) + color * (is_alpha_premultiplied?1.0:color.a); +} + +float4 mainImage_2_end(VertData v_in) : TARGET +{ + int shadow_blur_samples = shadow_blur_size + 1;//pow(shadow_blur_size * 2 + 1, 2); + + float4 color = image.Sample(textureSampler, v_in.uv); + float2 shadow_uv = float2(v_in.uv.x - uv_pixel_interval.x * shadow_offset_x, + v_in.uv.y - uv_pixel_interval.y * shadow_offset_y); + + float sampled_shadow_alpha = 0; + + for (int blur_y = -shadow_blur_size; blur_y <= shadow_blur_size; blur_y++) + { + float2 blur_uv = shadow_uv + float2(0, uv_pixel_interval.y * blur_y); + sampled_shadow_alpha += image.Sample(textureSampler, blur_uv).a; + } + + sampled_shadow_alpha /= shadow_blur_samples; + + float4 final_shadow_color = float4(shadow_color.rgb, shadow_color.a * sampled_shadow_alpha); + + return final_shadow_color * (1-color.a) + color * (is_alpha_premultiplied?1.0:color.a); +} + +technique Draw +{ + pass p0 + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } + + pass p1 + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage_2_end(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSVCRShader.ps1 b/Commands/Shaders/Get-OBSVCRShader.ps1 new file mode 100644 index 000000000..8f8f25a50 --- /dev/null +++ b/Commands/Shaders/Get-OBSVCRShader.ps1 @@ -0,0 +1,260 @@ +function Get-OBSVCRShader { + +[Alias('Set-OBSVCRShader','Add-OBSVCRShader')] +param( +# Set the vertical_shift of OBSVCRShader +[Alias('vertical_shift')] +[ComponentModel.DefaultBindingProperty('vertical_shift')] +[Single] +$VerticalShift, +# Set the distort of OBSVCRShader +[ComponentModel.DefaultBindingProperty('distort')] +[Single] +$Distort, +# Set the vignet of OBSVCRShader +[ComponentModel.DefaultBindingProperty('vignet')] +[Single] +$Vignet, +# Set the stripe of OBSVCRShader +[ComponentModel.DefaultBindingProperty('stripe')] +[Single] +$Stripe, +# Set the vertical_factor of OBSVCRShader +[Alias('vertical_factor')] +[ComponentModel.DefaultBindingProperty('vertical_factor')] +[Single] +$VerticalFactor, +# Set the vertical_height of OBSVCRShader +[Alias('vertical_height')] +[ComponentModel.DefaultBindingProperty('vertical_height')] +[Single] +$VerticalHeight, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'VCR' +$ShaderNoun = 'OBSVCRShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/ldjGzV +//Converted to OpenGL by Exeldro February 19, 2022 +uniform float vertical_shift< + string label = "vertical shift"; + string widget_type = "slider"; + float minimum = -5.0; + float maximum = 5.0; + float step = 0.001; +> = 0.4; +uniform float distort< + string label = "distort"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 5.0; + float step = 0.001; +> = 1.2; +uniform float vignet< + string label = "vignet"; + string widget_type = "slider"; + float minimum = -5.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; +uniform float stripe< + string label = "stripe"; + string widget_type = "slider"; + float minimum = -5.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; +uniform float vertical_factor< + string label = "vertical factor"; + string widget_type = "slider"; + float minimum = -5.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; +uniform float vertical_height< + string label = "vertical height"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1000.0; + float step = 0.1; +> = 30.0; + +float onOff(float a, float b, float c) +{ + return step(c, sin(elapsed_time + a*cos(elapsed_time*b))); +} + +float ramp(float y, float start, float end) +{ + float inside = step(start,y) - step(end,y); + float fact = (y-start)/(end-start)*inside; + return (1.-fact) * inside; + +} + +float modu(float x, float y) +{ + return (x / y) - floor(x / y); +} + +float stripes(float2 uv) +{ + return ramp(modu(uv.y*4. + elapsed_time/2.+sin(elapsed_time + sin(elapsed_time*0.63)),1.),0.5,0.6)*stripe; +} + +float4 getVideo(float2 uv) +{ + float2 look = uv; + float window = 1./(1.+20.*(look.y-modu(elapsed_time/4.,1.))*(look.y-modu(elapsed_time/4.,1.))); + look.x = look.x + sin(look.y*10. + elapsed_time)/50.*onOff(4.,4.,.3)*(1.+cos(elapsed_time*80.))*window; + float vShift = vertical_shift*onOff(2.,3.,.9)*(sin(elapsed_time)*sin(elapsed_time*20.) + + (0.5 + 0.1*sin(elapsed_time*200.)*cos(elapsed_time))); + look.y = modu((look.y + vShift) , 1.); + return image.Sample(textureSampler, look); +} + +float2 screenDistort(float2 uv) +{ + uv -= float2(.5,.5); + uv = uv*distort*(1./1.2+2.*uv.x*uv.x*uv.y*uv.y); + uv += float2(.5,.5); + return uv; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + uv = screenDistort(uv); + float4 video = getVideo(uv); + float vigAmt = 3.+.3*sin(elapsed_time + 5.*cos(elapsed_time*5.)); + float vignette = ((1.-vigAmt*(uv.y-.5)*(uv.y-.5))*(1.-vigAmt*(uv.x-.5)*(uv.x-.5))-1.)*vignet+1.; + video += stripes(uv); + video *= vignette; + video *= (((12.+modu((uv.y*vertical_height+elapsed_time),1.))/13.)-1.)*vertical_factor+1.; + return float4(video.r, video.g, video.b ,1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSVHSShader.ps1 b/Commands/Shaders/Get-OBSVHSShader.ps1 new file mode 100644 index 000000000..26408a066 --- /dev/null +++ b/Commands/Shaders/Get-OBSVHSShader.ps1 @@ -0,0 +1,306 @@ +function Get-OBSVHSShader { + +[Alias('Set-OBSVHSShader','Add-OBSVHSShader')] +param( +# Set the range of OBSVHSShader +[ComponentModel.DefaultBindingProperty('range')] +[Single] +$Range, +# Set the offsetIntensity of OBSVHSShader +[ComponentModel.DefaultBindingProperty('offsetIntensity')] +[Single] +$OffsetIntensity, +# Set the noiseQuality of OBSVHSShader +[ComponentModel.DefaultBindingProperty('noiseQuality')] +[Single] +$NoiseQuality, +# Set the noiseIntensity of OBSVHSShader +[ComponentModel.DefaultBindingProperty('noiseIntensity')] +[Single] +$NoiseIntensity, +# Set the colorOffsetIntensity of OBSVHSShader +[ComponentModel.DefaultBindingProperty('colorOffsetIntensity')] +[Single] +$ColorOffsetIntensity, +# Set the Alpha_Percentage of OBSVHSShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Apply_To_Image of OBSVHSShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSVHSShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Color_To_Replace of OBSVHSShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Apply_To_Specific_Color of OBSVHSShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'VHS' +$ShaderNoun = 'OBSVHSShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/Ms3XWH converted by Exeldro v 1.0 +//updated by Charles ''Surn'' Fettinger for obs-shaderfilter 9/2020 +//Converted to OpenGL by Exeldro February 19, 2022 +//Use improved input fields by Exeldro April 15, 2023 +uniform float range< + string label = "Wave size (0.05)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.20; + float step = 0.01; +> = 0.05; +uniform float offsetIntensity< + string label = "Offset intensity (0.02)"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 0.20; + float step = 0.01; +> = 0.02; +uniform float noiseQuality< + string label = "Noise number of lines (250)"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 1000.0; + float step = 10.0; +> = 250.0; +uniform float noiseIntensity< + string label = "Noise intensity (0.88)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 0.88; +uniform float colorOffsetIntensity< + string label = "Color offset intensity (1.3)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.1; +> = 1.3; +uniform float Alpha_Percentage< + string label = "Aplha percentage (100.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 100.0; +uniform bool Apply_To_Image; +uniform bool Replace_Image_Color; +uniform float4 Color_To_Replace; +uniform bool Apply_To_Specific_Color; + +float dot2(float2 a,float2 b){ + return a.x*b.x+a.y*b.y; +} + +float rand(float2 co) +{ + return frac(sin(dot2(co.xy ,float2(12.9898,78.233))) * 43758.5453); +} + +float verticalBar(float pos, float uvY, float offset) +{ + float edge0 = (pos - range); + float edge1 = (pos + range); + + float x = smoothstep(edge0, pos, uvY) * offset; + x -= smoothstep(pos, edge1, uvY) * offset; + return x; +} + +float modu(float x, float y) +{ + return (x / y) - floor(x / y); +} + +float dot4(float4 a,float4 b){ + return a.r*b.r+a.g*b.g+a.b*b.b+a.a*b.a; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + for (float i = 0.0; i < 0.71; i += 0.1313) + { + float d = modu(elapsed_time * i, 1.7); + float o = sin(1.0 - tan(elapsed_time * 0.24 * i)); + o *= offsetIntensity; + uv.x += verticalBar(d, uv.y, o); + } + float uvY = uv.y; + uvY *= noiseQuality; + uvY = float(int(uvY)) * (1.0 / noiseQuality); + float noise = rand(float2(elapsed_time * 0.00001, uvY)); + uv.x += noise * noiseIntensity / 100.0; + + float2 offsetR = float2(0.006 * sin(elapsed_time), 0.0) * colorOffsetIntensity; + float2 offsetG = float2(0.0073 * (cos(elapsed_time * 0.97)), 0.0) * colorOffsetIntensity; + + float4 rgba = image.Sample(textureSampler, uv); + float r = image.Sample(textureSampler, uv + offsetR).r; + float g = image.Sample(textureSampler, uv + offsetG).g; + float b = rgba.b; + + rgba = float4(r, g, b, rgba.a); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + float luma = dot4(color, float4(0.30, 0.59, 0.11, 1.0)); + if (Replace_Image_Color) + color = float4(luma,luma,luma,luma); + rgba = lerp(original_color, rgba * color, clamp(Alpha_Percentage * .01, 0, 1.0)); + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, clamp(Alpha_Percentage * .01, 0, 1.0)); + } + + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSVignettingShader.ps1 b/Commands/Shaders/Get-OBSVignettingShader.ps1 new file mode 100644 index 000000000..9a44d9a87 --- /dev/null +++ b/Commands/Shaders/Get-OBSVignettingShader.ps1 @@ -0,0 +1,201 @@ +function Get-OBSVignettingShader { + +[Alias('Set-OBSVignettingShader','Add-OBSVignettingShader')] +param( +# Set the innerRadius of OBSVignettingShader +[ComponentModel.DefaultBindingProperty('innerRadius')] +[Single] +$InnerRadius, +# Set the outerRadius of OBSVignettingShader +[ComponentModel.DefaultBindingProperty('outerRadius')] +[Single] +$OuterRadius, +# Set the opacity of OBSVignettingShader +[ComponentModel.DefaultBindingProperty('opacity')] +[Single] +$Opacity, +# Set the notes of OBSVignettingShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'vignetting' +$ShaderNoun = 'OBSVignettingShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 21, 2022 +uniform float innerRadius< + string label = "inner radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 0.9; +uniform float outerRadius< + string label = "outer radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 1.5; +uniform float opacity< + string label = "opacity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.8; +uniform string notes< + string widget_type = "info"; +> = "inner radius will always be shown, outer radius is the falloff"; + +float4 mainImage(VertData v_in) : TARGET +{ + float PI = 3.1415926535897932384626433832795;//acos(-1); + + float4 c0 = image.Sample(textureSampler, v_in.uv); + float verticalDim = 0.5 + sin (v_in.uv.y * PI) * 0.9 ; + + float xTrans = (v_in.uv.x * 2) - 1; + float yTrans = 1 - (v_in.uv.y * 2); + + float radius = sqrt(pow(xTrans, 2) + pow(yTrans, 2)); + + float subtraction = max(0, radius - innerRadius) / max((outerRadius - innerRadius), 0.01); + float factor = 1 - subtraction; + + float4 vignetColor = c0 * factor; + vignetColor *= verticalDim; + + vignetColor *= opacity; + c0 *= 1-opacity; + + float4 output_color = c0 + vignetColor; + + return float4(output_color); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSVoronoiPixelationShader.ps1 b/Commands/Shaders/Get-OBSVoronoiPixelationShader.ps1 new file mode 100644 index 000000000..bcc8cbad1 --- /dev/null +++ b/Commands/Shaders/Get-OBSVoronoiPixelationShader.ps1 @@ -0,0 +1,230 @@ +function Get-OBSVoronoiPixelationShader { + +[Alias('Set-OBSVoronoiPixelationShader','Add-OBSVoronoiPixelationShader')] +param( +# Set the pixH of OBSVoronoiPixelationShader +[ComponentModel.DefaultBindingProperty('pixH')] +[Single] +$PixH, +# Set the alternative of OBSVoronoiPixelationShader +[ComponentModel.DefaultBindingProperty('alternative')] +[Management.Automation.SwitchParameter] +$Alternative, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'voronoi-pixelation' +$ShaderNoun = 'OBSVoronoiPixelationShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// https://www.shadertoy.com/view/sd3yzn adopted by Exeldro + +uniform float pixH< + string label = "Size"; + string widget_type = "slider"; + float minimum = 4.0; + float maximum = 500.0; + float step = 0.01; +> = 100.0; +uniform bool alternative; + +float2 fract2(float2 v){ + return float2(v.x - floor(v.x), v.y - floor(v.y)); +} + +float2 random2( float2 p ) { + return fract2(sin(float2(dot(p,float2(127.1,311.7)),dot(p,float2(269.5,183.3))))*43758.5453); +} +float2 randomSpin(float2 p, float f){ + return 1.0 * float2( + cos( f * elapsed_time * 3.14159 * sign(random2(p).y - 0.5) + random2(p).y * 3.14159), + sin( f * elapsed_time * 3.14159 * sign(random2(p).x - 0.5) + random2(p).x * 3.14159)); +} +float4 VoronoiPixelation(float2 uv, float pixH ){ + float2 pixInt = fract2(uv * pixH); + float2 pixExt = floor(uv * pixH); + float m_dist = 10.0; + float2 relClos = float2(0.0, 0.0); + float2 relRot = 0.5 * float2(cos(elapsed_time), sin(elapsed_time)); + + + for (int y= -3; y <= 3; y++) { + for (int x= -3; x <= 3; x++) { + float2 neighbor = float2(float(x),float(y)); + + float2 point1 = random2(pixExt + neighbor); + float2 relRot = randomSpin(pixExt + neighbor, 0.5); + float2 diff = neighbor + relRot + point1 - pixInt; + float dist = length(diff); + if(dist < m_dist){ + m_dist = dist; + relClos = neighbor; + } + } + } + float2 nPoint = pixExt + relClos + randomSpin(pixExt + relClos, 0.5) + random2(pixExt + relClos); + nPoint = nPoint / pixH; + nPoint.x = nPoint.x * uv_scale.x ; + + return image.Sample(textureSampler, nPoint); +} +float4 VoronoiPixelation2(float2 uv, float pixH ){ + float2 pixInt = fract2(uv * pixH); + float2 pixExt = floor(uv * pixH); + float m_dist = 10.0; + float2 relClos = float2(0.0, 0.0); + float2 relRot = 0.5 * float2(cos(elapsed_time), sin(elapsed_time)); + + + for (int y= -3; y <= 3; y++) { + for (int x= -3; x <= 3; x++) { + float2 neighbor = float2(float(x),float(y)); + + float2 point2 = random2(pixExt + neighbor); + float2 relRot = randomSpin(pixExt + neighbor, 0.5); + float2 diff = neighbor + relRot + point2 - pixInt; + float dist = length(diff); + if(dist < m_dist){ + m_dist = dist; + relClos = neighbor; + } + } + } + float2 nPoint = pixExt + relClos + random2(pixExt + relClos); + nPoint = nPoint / pixH; + nPoint.x = nPoint.x * uv_scale.x; + + return image.Sample(textureSampler, nPoint); +} + + +float4 mainImage(VertData v_in) : TARGET +{ + if (alternative) { + return VoronoiPixelation2(v_in.uv, pixH); + } else { + return VoronoiPixelation(v_in.uv, pixH); + } +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSZigZagShader.ps1 b/Commands/Shaders/Get-OBSZigZagShader.ps1 new file mode 100644 index 000000000..193966a9d --- /dev/null +++ b/Commands/Shaders/Get-OBSZigZagShader.ps1 @@ -0,0 +1,283 @@ +function Get-OBSZigZagShader { + +[Alias('Set-OBSZigZagShader','Add-OBSZigZagShader')] +param( +# Set the radius of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('radius')] +[Single] +$Radius, +# Set the angle of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('angle')] +[Single] +$Angle, +# Set the period of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('period')] +[Single] +$Period, +# Set the amplitude of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('amplitude')] +[Single] +$Amplitude, +# Set the center_x of OBSZigZagShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSZigZagShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# Set the phase of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('phase')] +[Single] +$Phase, +# Set the animate of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('animate')] +[Int32] +$Animate, +# Set the notes of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'ZigZag' +$ShaderNoun = 'OBSZigZagShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Created by Radegast Stravinsky for obs-shaderfilter 9/2020 +uniform float radius< + string label = "radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 0.0; +uniform float angle< + string label = "angle"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 360.0; + float step = 0.1; +> = 180.0; +uniform float period< + string label = "period"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 0.5; +uniform float amplitude< + string label = "amplitude"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; + +uniform float center_x< + string label = "center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.25; +uniform float center_y< + string label = "center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.25; + +uniform float phase< + string label = "phase"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; +uniform int animate< + string label = "animate"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "No"; + int option_1_value = 1; + string option_1_label = "Amplitude"; + int option_2_value = 2; + string option_2_label = "Time"; +> = 0; + + +uniform string notes = "Distorts the screen, creating a rippling effect that moves clockwise and anticlockwise." + + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center = float2(center_x, center_y); + VertData v_out; + v_out.pos = v_in.pos; + float2 hw = uv_size; + float ar = 1. * hw.y/hw.x; + + v_out.uv = 1. * v_in.uv - center; + + center.x /= ar; + v_out.uv.x /= ar; + + float dist = distance(v_out.uv, center); + if (dist < radius) + { + float percent = (radius-dist)/radius; + float theta = percent * percent * + ( + animate == 1 ? + amplitude * sin(elapsed_time) : + amplitude + ) + * sin(percent * percent / period * radians(angle) + (phase + + ( + animate == 2 ? + elapsed_time : + 0 + ))); + + float s = sin(theta); + float c = cos(theta); + v_out.uv = float2(dot(v_out.uv-center, float2(c,-s)), dot(v_out.uv-center, float2(s,c))); + v_out.uv += (2 * center); + + v_out.uv.x *= ar; + + return image.Sample(textureSampler, v_out.uv); + } + else + { + return image.Sample(textureSampler, v_in.uv); + } + +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSZoomBlurShader.ps1 b/Commands/Shaders/Get-OBSZoomBlurShader.ps1 new file mode 100644 index 000000000..f3a5f706f --- /dev/null +++ b/Commands/Shaders/Get-OBSZoomBlurShader.ps1 @@ -0,0 +1,256 @@ +function Get-OBSZoomBlurShader { + +[Alias('Set-OBSZoomBlurShader','Add-OBSZoomBlurShader')] +param( +# Set the samples of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('samples')] +[Int32] +$Samples, +# Set the magnitude of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('magnitude')] +[Single] +$Magnitude, +# Set the speed_percent of OBSZoomBlurShader +[Alias('speed_percent')] +[ComponentModel.DefaultBindingProperty('speed_percent')] +[Int32] +$SpeedPercent, +# Set the ease of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the glitch of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the notes of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'zoom_blur' +$ShaderNoun = 'OBSZoomBlurShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// zoom blur shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +// https://github.com/Oncorporation/obs-shaderfilter +// https://github.com/dinfinity/mpc-pixel-shaders/blob/master/PS_Zoom%20Blur.hlsl +//for Media Player Classic HC or BE +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int samples < + string label = "Samples"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 32; +uniform float magnitude< + string label = "Magnitude"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform int speed_percent < + string label = "Speed percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform bool ease; +uniform bool glitch; +uniform string notes< + string widget_type = "info"; +> = "Speed Percent above zero will animate the zoom. Keep samples low to save power"; + +float EaseInOutCircTimer(float t,float b,float c,float d){ + t /= d/2; + if (t < 1) return -c/2 * (sqrt(1 - t*t) - 1) + b; + t -= 2; + return c/2 * (sqrt(1 - t*t) + 1) + b; +} + +float Styler(float t,float b,float c,float d,bool ease) +{ + if (ease) return EaseInOutCircTimer(t,0,c,d); + return t; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float speed = speed_percent * 0.01; + + // circular easing variable + float t = 1.0 + sin(elapsed_time * speed); + float b = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + if (glitch) t = clamp(t + ((rand_f *2) - 1), 0.0,2.0); + + b = Styler(t, 0, c, d, ease); + float sample_speed = max(samples * b, 1.0); + + float PI = 3.1415926535897932384626433832795;//acos(-1); + float4 c0 = image.Sample(textureSampler, v_in.uv); + + float xTrans = (v_in.uv.x*2)-1; + float yTrans = 1-(v_in.uv.y*2); + + float angle = atan(yTrans/xTrans) + PI; + if (sign(xTrans) == 1) { + angle+= PI; + } + float radius = sqrt(pow(xTrans,2) + pow(yTrans,2)); + + float2 currentCoord; + float4 accumulatedColor = float4(0,0,0,0); + + float4 currentColor = image.Sample(textureSampler, currentCoord); + accumulatedColor = currentColor; + + accumulatedColor = c0/sample_speed; + for(int i = 1; i< sample_speed; i++) { + float currentRadius ; + // Distance to center dependent + currentRadius = max(0,radius - (radius/1000 * i * magnitude * b)); + + // Continuous; + // currentRadius = max(0,radius - (0.0004 * i)); + + currentCoord.x = (currentRadius * cos(angle)+1.0)/2.0; + currentCoord.y = -1* ((currentRadius * sin(angle)-1.0)/2.0); + + float4 currentColor = image.Sample(textureSampler, currentCoord); + accumulatedColor += currentColor/sample_speed; + + } + + return accumulatedColor; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSZoomShader.ps1 b/Commands/Shaders/Get-OBSZoomShader.ps1 new file mode 100644 index 000000000..fa9ba836c --- /dev/null +++ b/Commands/Shaders/Get-OBSZoomShader.ps1 @@ -0,0 +1,177 @@ +function Get-OBSZoomShader { + +[Alias('Set-OBSZoomShader','Add-OBSZoomShader')] +param( +# Set the center_x_percent of OBSZoomShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Int32] +$CenterXPercent, +# Set the center_y_percent of OBSZoomShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Int32] +$CenterYPercent, +# Set the power of OBSZoomShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'zoom' +$ShaderNoun = 'OBSZoomShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int center_x_percent< + string label = "center x percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float power< + string label = "power"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 20.0; + float step = 0.001; +> = 1.75; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float2 uv = v_in.uv; + uv.x = (v_in.uv.x - center_pos.x) * power + center_pos.x; + uv.y = (v_in.uv.y - center_pos.y) * power + center_pos.y; + return image.Sample(textureSampler, uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/Get-OBSZoomXYShader.ps1 b/Commands/Shaders/Get-OBSZoomXYShader.ps1 new file mode 100644 index 000000000..96b162b3a --- /dev/null +++ b/Commands/Shaders/Get-OBSZoomXYShader.ps1 @@ -0,0 +1,197 @@ +function Get-OBSZoomXYShader { + +[Alias('Set-OBSZoomXYShader','Add-OBSZoomXYShader')] +param( +# Set the center_x_percent of OBSZoomXYShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Int32] +$CenterXPercent, +# Set the center_y_percent of OBSZoomXYShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Int32] +$CenterYPercent, +# Set the x_power of OBSZoomXYShader +[Alias('x_power')] +[ComponentModel.DefaultBindingProperty('x_power')] +[Single] +$XPower, +# Set the y_power of OBSZoomXYShader +[Alias('y_power')] +[ComponentModel.DefaultBindingProperty('y_power')] +[Single] +$YPower, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Zoom_XY' +$ShaderNoun = 'OBSZoomXYShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Zoom XY Shader + +// A simple twist on the Zoom Shader in https://github.com/exeldro/obs-shaderfilter/ + +// The allow for an independent Horizontal and Vertical Zoom. + +uniform int center_x_percent< + string label = "center x percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float x_power< + string label = "x power"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 20.0; + float step = 0.001; +> = 1; + +uniform float y_power< + string label = "y power"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 20.0; + float step = 0.001; +> = 1; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float2 uv = v_in.uv; + uv.x = (v_in.uv.x - center_pos.x) * x_power + center_pos.x; + uv.y = (v_in.uv.y - center_pos.y) * y_power + center_pos.y; + return image.Sample(textureSampler, uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + diff --git a/Commands/Shaders/README.md b/Commands/Shaders/README.md new file mode 100644 index 000000000..71a3fb344 --- /dev/null +++ b/Commands/Shaders/README.md @@ -0,0 +1,3 @@ +## obs-powershell Shader Commands + +This folder contains the generated commands for the shaders in the [obs-shaderfilter plugin](https://github.com/exeldro/obs-shaderfilter/). \ No newline at end of file diff --git a/Commands/Sources/Set-OBSAudioOutputSource.ps.ps1 b/Commands/Sources/Set-OBSAudioOutputSource.ps.ps1 index be22ca6c7..478c55ce8 100644 --- a/Commands/Sources/Set-OBSAudioOutputSource.ps.ps1 +++ b/Commands/Sources/Set-OBSAudioOutputSource.ps.ps1 @@ -16,7 +16,7 @@ function Set-OBSAudioOutputSource #> #> [inherit("Add-OBSInput", Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] - [Alias('Add-OBSAudioOutputSource')] + [Alias('Add-OBSAudioOutputSource','Get-OBSAudioOutputSource')] param( # The name of the audio device. # This name or device ID of the audio device that should be captured. @@ -35,7 +35,7 @@ function Set-OBSAudioOutputSource # The name of the input. # If no name is provided, "AudioOutput$($AudioDevice)" will be the input source name. [Parameter(ValueFromPipelineByPropertyName)] - [Alias('InputName')] + [Alias('InputName','SourceName')] [string] $Name, @@ -46,11 +46,57 @@ function Set-OBSAudioOutputSource $Force ) + begin { + # Audio Output sources have an inputKind of 'wasapi_output_capture'. + $inputKind = "wasapi_output_capture" + } + process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } @@ -99,7 +145,7 @@ function Set-OBSAudioOutputSource $addSplat = @{ sceneName = $myParameters["Scene"] inputName = $myParameters["Name"] - inputKind = "wasapi_output_capture" + inputKind = $inputKind inputSettings = $myParameterData NoResponse = $myParameters["NoResponse"] } diff --git a/Commands/Sources/Set-OBSAudioOutputSource.ps1 b/Commands/Sources/Set-OBSAudioOutputSource.ps1 index a5d5ef2d8..10dfc9bf4 100644 --- a/Commands/Sources/Set-OBSAudioOutputSource.ps1 +++ b/Commands/Sources/Set-OBSAudioOutputSource.ps1 @@ -16,7 +16,7 @@ function Set-OBSAudioOutputSource { #> #> - [Alias('Add-OBSAudioOutputSource')] + [Alias('Add-OBSAudioOutputSource','Get-OBSAudioOutputSource')] param( # The name of the audio device. # This name or device ID of the audio device that should be captured. @@ -24,18 +24,21 @@ function Set-OBSAudioOutputSource { [Alias('ItemValue','ItemName','DeviceID')] [string] $AudioDevice, + # The name of the scene. # If no scene name is provided, the current program scene will be used. [Parameter(ValueFromPipelineByPropertyName)] [Alias('SceneName')] [string] $Scene, + # The name of the input. # If no name is provided, "AudioOutput$($AudioDevice)" will be the input source name. [Parameter(ValueFromPipelineByPropertyName)] - [Alias('InputName')] + [Alias('InputName','SourceName')] [string] $Name, + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. # If not set, you will get an error if a source with the same name exists. [Parameter(ValueFromPipelineByPropertyName)] @@ -53,6 +56,8 @@ function Set-OBSAudioOutputSource { } $IncludeParameter = @() $ExcludeParameter = 'inputKind','sceneName','inputName' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -75,21 +80,71 @@ function Set-OBSAudioOutputSource { )) } $DynamicParameters + + } + begin { + # Audio Output sources have an inputKind of 'wasapi_output_capture'. + $inputKind = "wasapi_output_capture" + } process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } + if (-not $myParameters["AudioDevice"]) { $myParameters["AudioDevice"] = "default" } + # Window capture is a bit of a tricky one. # In order to get the WindowTitle to match that OBS needs, we need to look thru the input properties list. # and for that, an input needs to exist. if (-not $myParameters["Name"]) { + if ($myParameters["AudioDevice"]) { $Name = $myParameters["Name"] = "AudioOutput-" + $myParameters["AudioDevice"] @@ -98,10 +153,13 @@ function Set-OBSAudioOutputSource { $Name = $myParameters["Name"] = "AudioOutput" } } + + $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -110,6 +168,7 @@ function Set-OBSAudioOutputSource { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] @@ -118,13 +177,15 @@ function Set-OBSAudioOutputSource { } } } + $addSplat = @{ sceneName = $myParameters["Scene"] inputName = $myParameters["Name"] - inputKind = "wasapi_output_capture" + inputKind = $inputKind inputSettings = $myParameterData NoResponse = $myParameters["NoResponse"] } + # If -SceneItemEnabled was passed, if ($myParameters.Contains('SceneItemEnabled')) { # propagate it to Add-OBSInput. @@ -146,6 +207,7 @@ function Set-OBSAudioOutputSource { break } } + # If -PassThru was passed if ($MyParameters["PassThru"]) { # pass it down to each command @@ -159,6 +221,7 @@ function Set-OBSAudioOutputSource { return } + if ($Force) { # If we do, remove the input Remove-OBSInput -InputName $addSplat.inputName # and re-add our result. diff --git a/Commands/Sources/Set-OBSBrowserSource.ps.ps1 b/Commands/Sources/Set-OBSBrowserSource.ps.ps1 index 68696b2b1..8ebfefc46 100644 --- a/Commands/Sources/Set-OBSBrowserSource.ps.ps1 +++ b/Commands/Sources/Set-OBSBrowserSource.ps.ps1 @@ -12,7 +12,7 @@ function Set-OBSBrowserSource Import-Module ..\..\obs-powershell.psd1 -Global "Add-OBSInput" }, Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] - [Alias('Add-OBSBrowserSource')] + [Alias('Add-OBSBrowserSource','Get-OBSBrowserSource')] param( # The uri or file path to display. # If the uri points to a local file, this will be preferred @@ -75,6 +75,7 @@ function Set-OBSBrowserSource # The name of the input. # If no name is provided, the last segment of the URI or file path will be the input name. [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] [string] $Name, @@ -84,10 +85,57 @@ function Set-OBSBrowserSource [switch] $Force ) + + begin { + # Browser Sources are built into OBS. Their input kind is browser_source. + $inputKind = "browser_source" + } process { $myParameters = [Ordered]@{} + $PSBoundParameters + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + if ((-not $width) -or (-not $height)) { if (-not $script:CachedOBSVideoSettings) { $script:CachedOBSVideoSettings = Get-OBSVideoSettings @@ -98,13 +146,14 @@ function Set-OBSBrowserSource } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { - $bindToPropertyName = $null + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { @@ -117,7 +166,7 @@ function Set-OBSBrowserSource if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] if ($myParameters[$parameter.Name] -is [switch]) { - $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] } } } @@ -156,7 +205,7 @@ function Set-OBSBrowserSource $addSplat = [Ordered]@{ sceneName = $myParameters["Scene"] - inputKind = "browser_source" + inputKind = $inputKind inputSettings = $myParameterData inputName = $Name NoResponse = $myParameters["NoResponse"] diff --git a/Commands/Sources/Set-OBSBrowserSource.ps1 b/Commands/Sources/Set-OBSBrowserSource.ps1 index 142e7fa8c..64f8419ca 100644 --- a/Commands/Sources/Set-OBSBrowserSource.ps1 +++ b/Commands/Sources/Set-OBSBrowserSource.ps1 @@ -10,7 +10,7 @@ function Set-OBSBrowserSource { #> - [Alias('Add-OBSBrowserSource')] + [Alias('Add-OBSBrowserSource','Get-OBSBrowserSource')] param( # The uri or file path to display. # If the uri points to a local file, this will be preferred @@ -18,54 +18,65 @@ function Set-OBSBrowserSource { [Alias('Url', 'Href','Path','FilePath','FullName')] [uri] $Uri, + # The width of the browser source. # If none is provided, this will be the output width of the video settings. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("width")] [int] $Width, + # The width of the browser source. # If none is provided, this will be the output height of the video settings. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("height")] [int] $Height, + # The css style used to render the browser page. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("css")] [string] $CSS = "body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }", + # If set, the browser source will shutdown when it is hidden [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("shutdown")] [switch] $ShutdownWhenHidden, + # If set, the browser source will restart when it is activated. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("restart_when_active")] [switch] $RestartWhenActived, + # If set, audio from the browser source will be rerouted into OBS. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("reroute_audio")] [switch] $RerouteAudio, + # If provided, the browser source will render at a custom frame rate. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("fps")] [Alias('FPS')] [int] $FramesPerSecond, + # The name of the scene. # If no scene name is provided, the current program scene will be used. [Parameter(ValueFromPipelineByPropertyName)] [string] $Scene, + # The name of the input. # If no name is provided, the last segment of the URI or file path will be the input name. [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] [string] $Name, + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. # If not set, you will get an error if a source with the same name exists. [Parameter(ValueFromPipelineByPropertyName)] @@ -83,6 +94,8 @@ function Set-OBSBrowserSource { } $IncludeParameter = @() $ExcludeParameter = 'inputKind','sceneName','inputName' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -105,10 +118,58 @@ function Set-OBSBrowserSource { )) } $DynamicParameters + + } + begin { + # Browser Sources are built into OBS. Their input kind is browser_source. + $inputKind = "browser_source" + } process { $myParameters = [Ordered]@{} + $PSBoundParameters + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + if ((-not $width) -or (-not $height)) { if (-not $script:CachedOBSVideoSettings) { $script:CachedOBSVideoSettings = Get-OBSVideoSettings @@ -117,13 +178,16 @@ function Set-OBSBrowserSource { $myParameters["Width"] = $width = $videoSettings.outputWidth $myParameters["Height"] = $height = $videoSettings.outputHeight } + if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { - $bindToPropertyName = $null + + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { @@ -131,14 +195,16 @@ function Set-OBSBrowserSource { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] if ($myParameters[$parameter.Name] -is [switch]) { - $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] } } } + if ($fps -and $fps -ne 30) { $myParameterData["custom_fps"] = $true } @@ -158,6 +224,7 @@ function Set-OBSBrowserSource { $myParameterData["url"] = "$uri" } } + if (-not $Name) { $Name = $myParameters['Name'] = @@ -169,9 +236,10 @@ function Set-OBSBrowserSource { $uri } } + $addSplat = [Ordered]@{ sceneName = $myParameters["Scene"] - inputKind = "browser_source" + inputKind = $inputKind inputSettings = $myParameterData inputName = $Name NoResponse = $myParameters["NoResponse"] @@ -181,6 +249,7 @@ function Set-OBSBrowserSource { # propagate it to Add-OBSInput. $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] } + # If -PassThru was passed if ($MyParameters["PassThru"]) { # pass it down to each command @@ -201,6 +270,7 @@ function Set-OBSBrowserSource { # Add the input. $outputAddedResult = Add-OBSInput @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -220,6 +290,7 @@ function Set-OBSBrowserSource { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Sources/Set-OBSColorSource.ps.ps1 b/Commands/Sources/Set-OBSColorSource.ps.ps1 index 231e17f3e..013b71f1f 100644 --- a/Commands/Sources/Set-OBSColorSource.ps.ps1 +++ b/Commands/Sources/Set-OBSColorSource.ps.ps1 @@ -11,7 +11,7 @@ function Set-OBSColorSource Set-OBSInputSettings #> [inherit("Add-OBSInput", Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] - [Alias('Add-OBSColorSource')] + [Alias('Add-OBSColorSource','Get-OBSColorSource')] param( # The name of the scene. # If no scene name is provided, the current program scene will be used. @@ -38,12 +38,57 @@ function Set-OBSColorSource [switch] $Force ) + + begin { + $inputKind = "color_source_v3" + } process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } $hexChar = [Regex]::new('[0-9a-f]') diff --git a/Commands/Sources/Set-OBSColorSource.ps1 b/Commands/Sources/Set-OBSColorSource.ps1 index b7c0e69de..8fd13bd18 100644 --- a/Commands/Sources/Set-OBSColorSource.ps1 +++ b/Commands/Sources/Set-OBSColorSource.ps1 @@ -12,7 +12,7 @@ function Set-OBSColorSource { #> - [Alias('Add-OBSColorSource')] + [Alias('Add-OBSColorSource','Get-OBSColorSource')] param( # The name of the scene. # If no scene name is provided, the current program scene will be used. @@ -20,16 +20,19 @@ function Set-OBSColorSource { [Alias('SceneName')] [string] $Scene, + # The name of the input. # If no name is provided, "Display $($Monitor + 1)" will be the input source name. [Parameter(ValueFromPipelineByPropertyName)] [Alias('InputName')] [string] $Name, + [ValidatePattern('\#(?>[0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})')] [Parameter(ValueFromPipelineByPropertyName)] [string] $Color, + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. # If not set, you will get an error if a source with the same name exists. [Parameter(ValueFromPipelineByPropertyName)] @@ -47,6 +50,8 @@ function Set-OBSColorSource { } $IncludeParameter = @() $ExcludeParameter = 'inputKind','sceneName','inputName' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -69,15 +74,63 @@ function Set-OBSColorSource { )) } $DynamicParameters + + } + begin { + $inputKind = "color_source_v3" + } process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } + $hexChar = [Regex]::new('[0-9a-f]') $hexColors = @($hexChar.Matches($Color)) + switch ($hexColors.Length) { 8 { #full rgba @@ -117,6 +170,7 @@ function Set-OBSColorSource { } $hexColor = ("{0:x2}{1:x2}{2:x2}{3:x2}" -f $alpha, $blue, $green, $red) + $realColor = [uint32]::Parse($hexColor,'HexNumber') @@ -125,6 +179,7 @@ function Set-OBSColorSource { } $myParameterData = [Ordered]@{color=$realColor} + $addSplat = @{ sceneName = $myParameters["Scene"] inputName = $myParameters["Name"] @@ -138,6 +193,7 @@ function Set-OBSColorSource { # propagate it to Add-OBSInput. $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] } + # If -PassThru was passed if ($MyParameters["PassThru"]) { # pass it down to each command @@ -155,8 +211,10 @@ function Set-OBSColorSource { } return } + # Add the input. $outputAddedResult = Add-OBSInput @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -176,6 +234,7 @@ function Set-OBSColorSource { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Sources/Set-OBSDisplaySource.ps.ps1 b/Commands/Sources/Set-OBSDisplaySource.ps.ps1 index a615ff177..8cb1685be 100644 --- a/Commands/Sources/Set-OBSDisplaySource.ps.ps1 +++ b/Commands/Sources/Set-OBSDisplaySource.ps.ps1 @@ -54,7 +54,8 @@ function Set-OBSDisplaySource $myParameters = [Ordered]@{} + $PSBoundParameters if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } $myParameterData = [Ordered]@{} diff --git a/Commands/Sources/Set-OBSDisplaySource.ps1 b/Commands/Sources/Set-OBSDisplaySource.ps1 index 0661068cd..c98fc4abd 100644 --- a/Commands/Sources/Set-OBSDisplaySource.ps1 +++ b/Commands/Sources/Set-OBSDisplaySource.ps1 @@ -21,6 +21,7 @@ function Set-OBSDisplaySource { [Alias('MonitorNumber','Display','DisplayNumber')] [int] $Monitor = 1, + # If set, will capture the cursor. # This will be set by default. # If explicitly set to false, the cursor will not be captured. @@ -28,18 +29,21 @@ function Set-OBSDisplaySource { [ComponentModel.DefaultBindingProperty("capture_cursor")] [switch] $CaptureCursor, + # The name of the scene. # If no scene name is provided, the current program scene will be used. [Parameter(ValueFromPipelineByPropertyName)] [Alias('SceneName')] [string] $Scene, + # The name of the input. # If no name is provided, "Display $($Monitor + 1)" will be the input source name. [Parameter(ValueFromPipelineByPropertyName)] [Alias('InputName')] [string] $Name, + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. # If not set, you will get an error if a source with the same name exists. [Parameter(ValueFromPipelineByPropertyName)] @@ -57,6 +61,8 @@ function Set-OBSDisplaySource { } $IncludeParameter = @() $ExcludeParameter = 'inputKind','sceneName','inputName' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -79,16 +85,19 @@ function Set-OBSDisplaySource { )) } $DynamicParameters + } process { $myParameters = [Ordered]@{} + $PSBoundParameters if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -97,6 +106,7 @@ function Set-OBSDisplaySource { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] @@ -105,11 +115,14 @@ function Set-OBSDisplaySource { } } } + # Users like 1 indexed, computers like zero-indexed. $myParameterData["monitor"] = $Monitor - 1 + if (-not $myParameters["Name"]) { $myParameters["Name"] = "Display $($Monitor)" } + $addSplat = @{ sceneName = $myParameters["Scene"] inputName = $myParameters["Name"] @@ -117,11 +130,13 @@ function Set-OBSDisplaySource { inputSettings = $myParameterData NoResponse = $myParameters["NoResponse"] } + # If -SceneItemEnabled was passed, if ($myParameters.Contains('SceneItemEnabled')) { # propagate it to Add-OBSInput. $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] } + # If -PassThru was passed if ($MyParameters["PassThru"]) { # pass it down to each command @@ -139,8 +154,10 @@ function Set-OBSDisplaySource { } return } + # Add the input. $outputAddedResult = Add-OBSInput @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -160,6 +177,7 @@ function Set-OBSDisplaySource { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Sources/Set-OBSMarkdownSource.ps.ps1 b/Commands/Sources/Set-OBSMarkdownSource.ps.ps1 new file mode 100644 index 000000000..b10722885 --- /dev/null +++ b/Commands/Sources/Set-OBSMarkdownSource.ps.ps1 @@ -0,0 +1,215 @@ +function Set-OBSMarkdownSource +{ + <# + .SYNOPSIS + Sets a markdown source + .DESCRIPTION + Adds or changes a markdown source in OBS. + #> + [inherit(Command={ + Import-Module ..\..\obs-powershell.psd1 -Global + "Add-OBSInput" + }, Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] + [Alias('Add-OBSMarkdownSource','Get-OBSMarkdownSource')] + param( + # The markdown text, or the path to a markdown file + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Markdown, + + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The css style used to render the markdown. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("css")] + [string] + $CSS = "body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }", + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + + begin { + $inputKind = "markdown_source" + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + $IsGet = $MyInvocation.InvocationName -like "Get-*" + $NoVerb = $MyInvocation.InvocationName -match '^[^-]+$' + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + if ( + $IsGet -or + ($NoVerb -and -not $NonNameParameters) + ) { + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { + $_.InputName -like $Name + } else { + $_ + } + } + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + $markdownAsUri = $null + if ($Markdown -like '*.md') { + $markdownAsUri = $markdown -as [uri] + if ($markdownAsUri.Scheme -eq 'File') { + $myParameterData["markdown_path"] = "$markdownAsUri" -replace '[\\/]', '/' -replace '^file:///' + $myParameterData["markdown_source"] = 1 + } + else { + + } + } else { + $myParameterData["text"] = $Markdown + $myParameterData["markdown_source"] = 0 + } + + if (-not $Name) { + $Name = $myParameters['Name'] = + if ($markdownAsUri.Segments) { + $markdownAsUri.Segments[-1] + } elseif ($markdownAsUri -match '[\\/]') { + @($markdownAsUri -split '[\\/]')[-1] + } elseif ($markdownAsUri) { + $markdownAsUri + } else { + "Markdown" + } + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = "markdown_source" + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + } +} \ No newline at end of file diff --git a/Commands/Sources/Set-OBSMarkdownSource.ps1 b/Commands/Sources/Set-OBSMarkdownSource.ps1 new file mode 100644 index 000000000..4fba5de9c --- /dev/null +++ b/Commands/Sources/Set-OBSMarkdownSource.ps1 @@ -0,0 +1,251 @@ +function Set-OBSMarkdownSource { + <# + + .SYNOPSIS + Sets a markdown source + .DESCRIPTION + Adds or changes a markdown source in OBS. + + #> + + [Alias('Add-OBSMarkdownSource','Get-OBSMarkdownSource')] + param( + # The markdown text, or the path to a markdown file + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Markdown, + + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The css style used to render the markdown. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("css")] + [string] + $CSS = "body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }", + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + $inputKind = "markdown_source" + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + $IsGet = $MyInvocation.InvocationName -like "Get-*" + $NoVerb = $MyInvocation.InvocationName -match '^[^-]+$' + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + if ( + $IsGet -or + ($NoVerb -and -not $NonNameParameters) + ) { + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { + $_.InputName -like $Name + } else { + $_ + } + } + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + $markdownAsUri = $null + if ($Markdown -like '*.md') { + $markdownAsUri = $markdown -as [uri] + if ($markdownAsUri.Scheme -eq 'File') { + $myParameterData["markdown_path"] = "$markdownAsUri" -replace '[\\/]', '/' -replace '^file:///' + $myParameterData["markdown_source"] = 1 + } + else { + + } + } else { + $myParameterData["text"] = $Markdown + $myParameterData["markdown_source"] = 0 + } + + if (-not $Name) { + $Name = $myParameters['Name'] = + if ($markdownAsUri.Segments) { + $markdownAsUri.Segments[-1] + } elseif ($markdownAsUri -match '[\\/]') { + @($markdownAsUri -split '[\\/]')[-1] + } elseif ($markdownAsUri) { + $markdownAsUri + } else { + "Markdown" + } + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = "markdown_source" + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + + } +} diff --git a/Commands/Sources/Set-OBSMediaSource.ps.ps1 b/Commands/Sources/Set-OBSMediaSource.ps.ps1 index 688a8fa32..cdcdd199f 100644 --- a/Commands/Sources/Set-OBSMediaSource.ps.ps1 +++ b/Commands/Sources/Set-OBSMediaSource.ps.ps1 @@ -13,10 +13,10 @@ function Set-OBSMediaSource Set-OBSInputSettings #> [inherit("Add-OBSInput", Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] - [Alias('Add-OBSFFMpegSource','Add-OBSMediaSource','Set-OBSFFMpegSource')] + [Alias('Add-OBSFFMpegSource','Add-OBSMediaSource','Set-OBSFFMpegSource','Get-OBSFFMpegSource','Get-OBSMediaSource')] param( # The path to the media file. - [Parameter(Mandatory,ValueFromPipelineByPropertyName)] + [Parameter(ValueFromPipelineByPropertyName)] [Alias('FullName','LocalFile','local_file')] [string] $FilePath, @@ -91,13 +91,55 @@ function Set-OBSMediaSource } $_ } + $InputKind = "ffmpeg_source" } process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } $myParameterData = [Ordered]@{} @@ -116,17 +158,17 @@ function Set-OBSMediaSource if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] if ($myParameters[$parameter.Name] -is [switch]) { - $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] } } } - if (-not (Test-Path $FilePath)) { - return + if ((Test-Path $FilePath)) { + $FilePathItem = Get-Item -Path $FilePath + $myParameterData['local_file'] = $FilePathItem.FullName -replace '/', '\' } - $FilePathItem = Get-Item -Path $FilePath - $myParameterData['local_file'] = $FilePathItem.FullName -replace '/', '\' + if ($myParameters['InputSettings']) { $keys = @@ -146,12 +188,19 @@ function Set-OBSMediaSource } if (-not $Name) { - $Name = $myParameters["Name"] = $FilePathItem.Name + + $Name = $myParameters["Name"] = + if ($FilePathItem.Name) { + $FilePathItem.Name + } else { + "Media" + } + } $addSplat = [Ordered]@{ sceneName = $myParameters["Scene"] - inputKind = "ffmpeg_source" + inputKind = $InputKind inputSettings = $myParameterData inputName = $Name NoResponse = $myParameters["NoResponse"] diff --git a/Commands/Sources/Set-OBSMediaSource.ps1 b/Commands/Sources/Set-OBSMediaSource.ps1 index e2a04cb5d..0ec974c98 100644 --- a/Commands/Sources/Set-OBSMediaSource.ps1 +++ b/Commands/Sources/Set-OBSMediaSource.ps1 @@ -14,13 +14,14 @@ function Set-OBSMediaSource { #> - [Alias('Add-OBSFFMpegSource','Add-OBSMediaSource','Set-OBSFFMpegSource')] + [Alias('Add-OBSFFMpegSource','Add-OBSMediaSource','Set-OBSFFMpegSource','Get-OBSFFMpegSource','Get-OBSMediaSource')] param( # The path to the media file. - [Parameter(Mandatory,ValueFromPipelineByPropertyName)] + [Parameter(ValueFromPipelineByPropertyName)] [Alias('FullName','LocalFile','local_file')] [string] $FilePath, + # If set, the source will close when it is inactive. # By default, this will be set to true. # To explicitly set it to false, use -CloseWhenInactive:$false @@ -28,18 +29,21 @@ function Set-OBSMediaSource { [ComponentModel.DefaultBindingProperty("close_when_inactive")] [switch] $CloseWhenInactive, + # If set, the source will automatically restart. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("looping")] [Alias('Looping')] [switch] $Loop, + # If set, will use hardware decoding, if available. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("hw_decode")] [Alias('HardwareDecoding','hw_decode')] [switch] $UseHardwareDecoding, + # If set, will clear the output on the end of the media. # If this is set to false, the media will freeze on the last frame. # This is set to true by default. @@ -49,27 +53,32 @@ function Set-OBSMediaSource { [Alias('ClearOnEnd','NoFreezeFrameOnEnd')] [switch] $ClearOnMediaEnd, + # Any FFMpeg demuxer options. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("ffmpeg_options")] [Alias('FFMpegOptions', 'FFMpeg_Options')] [string] $FFMpegOption, + # The name of the scene. # If no scene name is provided, the current program scene will be used. [Parameter(ValueFromPipelineByPropertyName)] [string] $Scene, + # The name of the input. # If no name is provided, the last segment of the URI or file path will be the input name. [Parameter(ValueFromPipelineByPropertyName)] [string] $Name, + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. # If not set, you will get an error if a source with the same name exists. [Parameter(ValueFromPipelineByPropertyName)] [switch] $Force, + # If set, will fit the input to the screen. [Parameter(ValueFromPipelineByPropertyName)] [switch] @@ -86,6 +95,8 @@ function Set-OBSMediaSource { } $IncludeParameter = @() $ExcludeParameter = 'inputKind','sceneName','inputName' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -108,26 +119,71 @@ function Set-OBSMediaSource { )) } $DynamicParameters + } begin { filter OutputAndFitToScreen { + if ($FitToScreen -and $_.FitToScreen) { $_.FitToScreen() } $_ } + $InputKind = "ffmpeg_source" } process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -136,19 +192,23 @@ function Set-OBSMediaSource { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] if ($myParameters[$parameter.Name] -is [switch]) { - $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] } } } - if (-not (Test-Path $FilePath)) { - return + + if ((Test-Path $FilePath)) { + $FilePathItem = Get-Item -Path $FilePath + $myParameterData['local_file'] = $FilePathItem.FullName -replace '/', '\' } - $FilePathItem = Get-Item -Path $FilePath - $myParameterData['local_file'] = $FilePathItem.FullName -replace '/', '\' + + + if ($myParameters['InputSettings']) { $keys = @(if ($myParameters['InputSettings'] -is [Collections.IDictionary]) { @@ -158,25 +218,37 @@ function Set-OBSMediaSource { $prop.Name } }) + foreach ($key in $keys) { $myParameterData[$key] = $myParameters['InputSettings'].$key } + $myParameterData.remove('inputSettings') } if (-not $Name) { - $Name = $myParameters["Name"] = $FilePathItem.Name + + $Name = $myParameters["Name"] = + if ($FilePathItem.Name) { + $FilePathItem.Name + } else { + "Media" + } + } + $addSplat = [Ordered]@{ sceneName = $myParameters["Scene"] - inputKind = "ffmpeg_source" + inputKind = $InputKind inputSettings = $myParameterData inputName = $Name NoResponse = $myParameters["NoResponse"] } + if ($myParameters.Contains('SceneItemEnabled')) { $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] } + # If -PassThru was passed if ($MyParameters["PassThru"]) { # pass it down to each command @@ -194,8 +266,10 @@ function Set-OBSMediaSource { } return } + # Add the input. $outputAddedResult = Add-OBSInput @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -215,6 +289,7 @@ function Set-OBSMediaSource { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Sources/Set-OBSSoundCloudSource.ps.ps1 b/Commands/Sources/Set-OBSSoundCloudSource.ps.ps1 new file mode 100644 index 000000000..08929a125 --- /dev/null +++ b/Commands/Sources/Set-OBSSoundCloudSource.ps.ps1 @@ -0,0 +1,355 @@ +function Set-OBSSoundCloudSource +{ + <# + .SYNOPSIS + Sets a Sound Cloud Source + .DESCRIPTION + Adds or changes a Sound Cloud source OBS. + + Sound Cloud Sources are Browser Sources that display a [SoundCloud Player Widget](https://developers.soundcloud.com/docs/api/html5-widget). + .EXAMPLE + Set-obssoundCloudSource -Uri https://soundcloud.com/outertone/sets/new-earth + #> + [inherit(Command={ + Import-Module ..\..\obs-powershell.psd1 -Global + "Add-OBSInput" + }, Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] + [Alias('Add-OBSSoundCloudSource','Get-OBSSoundCloudSource')] + param( + # The uri to display. This must point to a SoundCloud URL. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('Url','SoundCloudUri','SoundCloudUrl')] + [uri] + $Uri, + + # If set, will not autoplay. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoAutoPlay, + + # If set, will not display album artwork. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoArtwork, + + # If set, will not display play count. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoPlayCount, + + # If set, will not display uploader info. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoUploaderInfo, + + # If provided, will start playing at a given track number. + [Parameter(ValueFromPipelineByPropertyName)] + [int] + $TrackNumber, + + # If set, will show a share link. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $ShowShare, + + # If set, will show a download link. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $ShowDownload, + + # If set, will show a buy link. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $ShowBuy, + + # The color used for the SoundCloud audio bars and buttons. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Color, + + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The css style used to render the browser page. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("css")] + [string] + $CSS = "body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }", + + # If set, the browser source will shutdown when it is hidden + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("shutdown")] + [switch] + $ShutdownWhenHidden, + + # If set, the browser source will restart when it is activated. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("restart_when_active")] + [switch] + $RestartWhenActived, + + # If set, audio from the browser source will be rerouted into OBS. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("reroute_audio")] + [switch] + $RerouteAudio, + + # If provided, the browser source will render at a custom frame rate. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("fps")] + [Alias('FPS')] + [int] + $FramesPerSecond, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, then "SoundCloud" will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + + begin { + # Browser Sources are built into OBS. Their input kind is browser_source. + # Sound Cloud Sources are really Browser Sources. + $inputKind = "browser_source" + } + + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + + if (-not $uri.DnsSafeHost -or $uri.DnsSafeHost -notmatch 'SoundCloud\.com$') { + Write-Error "URI must be from SoundCloud.com" + return + } + + if ($uri.Query) { + $uri = "https://$($uri.DnsSafeHost)" + $($uri.Segments -join '') + } + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } | + Where-Object { + $_.Settings['LocalFile'] -like '*.SoundCloud.*' + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + if ($fps -and $fps -ne 30) { + $myParameterData["custom_fps"] = $true + } + + $MyObsPowerShellPath = if ($home) { + Join-Path $home ".obs-powershell" + } + + $ThisSoundCloudSourceFileName = + if ($name) { + "${name}.SoundCloudSource.html" + } else { + "SoundCloudSource.html" + } + + $ThisSoundCloudSourceFilePath = Join-Path $MyObsPowerShellPath $ThisSoundCloudSourceFileName + + + $soundCloudSrc = @( + "https://w.soundcloud.com/player/?url=" + $Uri + "&" + @( + if ($PSBoundParameters["TrackNumber"]) {"start_track=$trackNumber"} + if ($color) { "color=$color" -replace "\#",'%23'} + if ($NoAutoPlay) { "auto_play=false" } else { "auto_play=true"} + if ($NoArtwork) { "show_artwork=false" } else {"show_artwork=true" } + if ($NoUploaderInfo) { "show_user=false" } else {"show_user=true"} + if ($NoPlayCount) { "show_playcount=false" } else {"show_playcount=true" } + if ($ShowDownload) { "download=true"} else { "download=false" } + if ($ShowBuy) { "buying=true"} else { "buying=false" } + if ($ShowShare) { "sharing=true"} else { "sharing=false" } + ) -join '&' + ) -join '' + + $soundCloudWidget = @( + "" + "" + "" + "" + "" + ) -join ' ' + + $newHtmlFile = New-Item -Value $soundCloudWidget -ItemType File -Path $ThisSoundCloudSourceFilePath -Force + + $myParameterData["local_file"] = ([uri]$newHtmlFile.FullName) -replace '[\\/]', '/' -replace '^file:///' + $myParameterData["is_local_file"] = $true + + if (-not $Name) { + $Name = $myParameters['Name'] = 'SoundCloud' + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $inputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + } +} \ No newline at end of file diff --git a/Commands/Sources/Set-OBSSoundCloudSource.ps1 b/Commands/Sources/Set-OBSSoundCloudSource.ps1 new file mode 100644 index 000000000..f5bcfdd48 --- /dev/null +++ b/Commands/Sources/Set-OBSSoundCloudSource.ps1 @@ -0,0 +1,389 @@ +function Set-OBSSoundCloudSource { + <# + + .SYNOPSIS + Sets a Sound Cloud Source + .DESCRIPTION + Adds or changes a Sound Cloud source OBS. + Sound Cloud Sources are Browser Sources that display a [SoundCloud Player Widget](https://developers.soundcloud.com/docs/api/html5-widget). + .EXAMPLE + Set-obssoundCloudSource -Uri https://soundcloud.com/outertone/sets/new-earth + + #> + + [Alias('Add-OBSSoundCloudSource','Get-OBSSoundCloudSource')] + param( + # The uri to display. This must point to a SoundCloud URL. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('Url','SoundCloudUri','SoundCloudUrl')] + [uri] + $Uri, + + # If set, will not autoplay. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoAutoPlay, + + # If set, will not display album artwork. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoArtwork, + + # If set, will not display play count. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoPlayCount, + + # If set, will not display uploader info. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoUploaderInfo, + + # If provided, will start playing at a given track number. + [Parameter(ValueFromPipelineByPropertyName)] + [int] + $TrackNumber, + + # If set, will show a share link. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $ShowShare, + + # If set, will show a download link. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $ShowDownload, + + # If set, will show a buy link. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $ShowBuy, + + # The color used for the SoundCloud audio bars and buttons. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Color, + + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The css style used to render the browser page. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("css")] + [string] + $CSS = "body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }", + + # If set, the browser source will shutdown when it is hidden + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("shutdown")] + [switch] + $ShutdownWhenHidden, + + # If set, the browser source will restart when it is activated. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("restart_when_active")] + [switch] + $RestartWhenActived, + + # If set, audio from the browser source will be rerouted into OBS. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("reroute_audio")] + [switch] + $RerouteAudio, + + # If provided, the browser source will render at a custom frame rate. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("fps")] + [Alias('FPS')] + [int] + $FramesPerSecond, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, then "SoundCloud" will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + # Browser Sources are built into OBS. Their input kind is browser_source. + # Sound Cloud Sources are really Browser Sources. + $inputKind = "browser_source" + + } + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + + if (-not $uri.DnsSafeHost -or $uri.DnsSafeHost -notmatch 'SoundCloud\.com$') { + Write-Error "URI must be from SoundCloud.com" + return + } + + if ($uri.Query) { + $uri = "https://$($uri.DnsSafeHost)" + $($uri.Segments -join '') + } + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } | + Where-Object { + $_.Settings['LocalFile'] -like '*.SoundCloud.*' + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + if ($fps -and $fps -ne 30) { + $myParameterData["custom_fps"] = $true + } + + $MyObsPowerShellPath = if ($home) { + Join-Path $home ".obs-powershell" + } + + $ThisSoundCloudSourceFileName = + if ($name) { + "${name}.SoundCloudSource.html" + } else { + "SoundCloudSource.html" + } + + $ThisSoundCloudSourceFilePath = Join-Path $MyObsPowerShellPath $ThisSoundCloudSourceFileName + + + $soundCloudSrc = @( + "https://w.soundcloud.com/player/?url=" + $Uri + "&" + @( + if ($PSBoundParameters["TrackNumber"]) {"start_track=$trackNumber"} + if ($color) { "color=$color" -replace "\#",'%23'} + if ($NoAutoPlay) { "auto_play=false" } else { "auto_play=true"} + if ($NoArtwork) { "show_artwork=false" } else {"show_artwork=true" } + if ($NoUploaderInfo) { "show_user=false" } else {"show_user=true"} + if ($NoPlayCount) { "show_playcount=false" } else {"show_playcount=true" } + if ($ShowDownload) { "download=true"} else { "download=false" } + if ($ShowBuy) { "buying=true"} else { "buying=false" } + if ($ShowShare) { "sharing=true"} else { "sharing=false" } + ) -join '&' + ) -join '' + + $soundCloudWidget = @( + "" + "" + "" + "" + "" + ) -join ' ' + + $newHtmlFile = New-Item -Value $soundCloudWidget -ItemType File -Path $ThisSoundCloudSourceFilePath -Force + + $myParameterData["local_file"] = ([uri]$newHtmlFile.FullName) -replace '[\\/]', '/' -replace '^file:///' + $myParameterData["is_local_file"] = $true + + if (-not $Name) { + $Name = $myParameters['Name'] = 'SoundCloud' + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $inputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + + } +} diff --git a/Commands/Sources/Set-OBSSwitchSource.ps.ps1 b/Commands/Sources/Set-OBSSwitchSource.ps.ps1 new file mode 100644 index 000000000..ec5cc4a43 --- /dev/null +++ b/Commands/Sources/Set-OBSSwitchSource.ps.ps1 @@ -0,0 +1,449 @@ +function Set-OBSSwitchSource +{ + <# + .SYNOPSIS + Adds a VLC playlist source + .DESCRIPTION + Adds or sets VLC playlist sources to OBS. + + VLC must be installed for this to work. + .EXAMPLE + Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory + .LINK + Add-OBSInput + .LINK + Set-OBSInputSettings + #> + [inherit("Add-OBSInput", Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] + [Alias('Add-OBSSwitchSource','Get-OBSSwitchSource')] + param( + # The path to the media file. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('Sources')] + [string[]] + $SourceList, + + # What to select in the playlist. + # If a number is provided, this will select an index. + # If a string is provided, this will select the whole name or last part of a name, accepting wildcards. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateTypes(TypeName={[int],[string]})] + [Alias('SelectIndex','SelectName')] + $Select, + + # If set, the list of sources will loop. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("loop")] + [Alias('Looping')] + [switch] + $Loop, + + # If set, will switch between sources. + # Sources will be displayed for a -Duration. + # No source wil be displayed for an -Interval. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("time_switch")] + [switch] + $TimeSwitch, + + # The interval between sources + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("time_switch_between")] + [timespan] + $Interval, + + # The duration between sources that are switching at a time. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("time_switch_duration")] + [timespan] + $Duration, + + # The item that will be switched in a TimeSwitch, after -Duration and -Interval. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet("None","Next","Previous","First","Last","Random")] + [string] + $TimeSwitchTo = "Next", + + # If set, will switch on the underlying source's media state events. + # Sources will be displayed for a -Duration. + # No source wil be displayed for an -Interval. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("media_state_switch")] + [switch] + $MediaStateSwitch, + + # The change in media state that should trigger a switch + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet("Playing","Opening","Buffering","Paused","Stopped","Ended", "Error","Playing","NotOpening","NotBuffering","NotPaused","NotStopped","NotEnded", "NotError")] + $MediaStateChange, + + + # When the source switcher is trigger by media end, this determines the next source that will be switched to. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet("None","Next","Previous","First","Last","Random")] + [string] + $MediaSwitchTo = "Next", + + # The name of the transition between sources. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + if (-not $script:OBSTransitionKinds) { + $script:OBSTransitionKinds = @(Get-OBSTransitionKind) -replace '_transition$' + } + + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($script:OBSTransitionKinds -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($script:OBSTransitionKinds -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $TransitionName, + + # The properties sent to the transition. + # Notice: this current requires confirmation in the UI. + [Parameter(ValueFromPipelineByPropertyName)] + [PSObject] + $TransitionProperty, + + # The name of the transition used to show a source. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + if (-not $script:OBSTransitionKinds) { + $script:OBSTransitionKinds = @(Get-OBSTransitionKind) -replace '_transition$' + } + + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($script:OBSTransitionKinds -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($script:OBSTransitionKinds -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $ShowTransition, + + # The properties sent to the show transition. + # Notice: this current requires confirmation in the UI. + [Parameter(ValueFromPipelineByPropertyName)] + [PSObject] + $ShowTransitionProperty, + + # The transition used to hide a source. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + if (-not $script:OBSTransitionKinds) { + $script:OBSTransitionKinds = @(Get-OBSTransitionKind) -replace '_transition$' + } + + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($script:OBSTransitionKinds -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($script:OBSTransitionKinds -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $HideTransition, + + # The properties sent to the hide transition. + # Notice: this current requires confirmation in the UI. + [Parameter(ValueFromPipelineByPropertyName)] + [PSObject] + $HideTransitionProperty, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force, + + # If set, will fit the input to the screen. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $FitToScreen + ) + + begin { + filter OutputAndFitToScreen { + if ($FitToScreen -and $_.FitToScreen) { + $_.FitToScreen() + } + $_ + } + $InputKind = "source_switcher" + } + + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + if ($myParameters[$parameter.Name] -is [timespan]) { + $myParameterData[$bindToPropertyName] = [int]$myParameters[$parameter.Name].TotalMilliseconds + } + } + } + + + $selectedIndex = -1 + $sourcesObject = @( + $currentIndex = -1 + foreach ($sourceName in $SourceList) { + $currentIndex++ + $selected = ($null -ne $Select) -and ( + ($select -is [int] -and $currentIndex -eq $select) -or + ($select -is [string] -and + ($sourceName -like $select -or ($sourceName | Split-Path -Leaf -ErrorAction Ignore) -like $Select) + ) + ) + if ($selected) { + $selectedIndex = $currentIndex + } + [PSCustomObject][Ordered]@{hidden=$false;selected=$selected;value=$sourceName} + } + ) + + if ($sourcesObject) { + $myParameterData['sources'] = $sourcesObject + if ($selectedIndex -gt 0) { + $myParameterData["current_index"] = $selectedIndex + } + } + elseif ($Select -is [int]) { + $myParameterData['current_index'] = $Select + } + + + + if ($TransitionName) { + if ($TransitionName -notlike '*_transition') { + $TransitionName = "${TransitionName}_transition" + } + $myParameterData["transition"] = $TransitionName + } + + if ($TransitionProperty) { + $myParameterData["transition_properties"] = $TransitionProperty + } + + if ($ShowTransition) { + if ($ShowTransition -notlike '*_transition') { + $ShowTransition = "${ShowTransition}_transition" + } + $myParameterData["show_transition"] = $ShowTransition + } + + if ($ShowTransitionProperty) { + $myParameterData["show_transition_properties"] = $ShowTransitionProperty + } + + if ($HideTransition) { + if ($HideTransition -notlike '*_transition') { + $HideTransition = "${HideTransition}_transition" + } + $myParameterData["hide_transition"] = $ShowTransition + } + + if ($HideTransitionProperty) { + $myParameterData["hide_transition_properties"] = $HideTransitionProperty + } + + if ($TimeSwitchTo) { + $validValues = $MyInvocation.MyCommand.Parameters["TimeSwitchTo"].Attributes.ValidValues + for ($vvi = 0; $vvi -lt $validValues.Length;$vvi++) { + if ($TimeSwitchTo -eq $validValues[$vvi]) { + $myParameterData["time_switch_to"] = $vvi + break + } + } + } + + if ($MediaSwitchTo) { + $validValues = $MyInvocation.MyCommand.Parameters["MediaSwitchTo"].Attributes.ValidValues + for ($vvi = 0; $vvi -lt $validValues.Length;$vvi++) { + if ($TimeSwitchTo -eq $validValues[$vvi]) { + $myParameterData["media_state_switch_to"] = $vvi + break + } + } + } + + if ($MediaStateChange) { + $validValues = $MyInvocation.MyCommand.Parameters["MediaStateChange"].Attributes.ValidValues + for ($vvi = 0; $vvi -lt $validValues.Length;$vvi++) { + if ($TimeSwitchTo -eq $validValues[$vvi]) { + $myParameterData["media_switch_state"] = $vvi + break + } + } + } + + if (-not $Name) { + $Name = $myParameters["Name"] = "Source Switcher" + } + + + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $InputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + + if ($myParameters.Contains('SceneItemEnabled')) { + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + if ($sceneItem) { + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene and optionally fit it to the screen. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $name | + OutputAndFitToScreen + } + } +} \ No newline at end of file diff --git a/Commands/Sources/Set-OBSSwitchSource.ps1 b/Commands/Sources/Set-OBSSwitchSource.ps1 new file mode 100644 index 000000000..2d0cc098f --- /dev/null +++ b/Commands/Sources/Set-OBSSwitchSource.ps1 @@ -0,0 +1,503 @@ +function Set-OBSSwitchSource { + <# + + .SYNOPSIS + Adds a VLC playlist source + .DESCRIPTION + Adds or sets VLC playlist sources to OBS. + VLC must be installed for this to work. + .EXAMPLE + Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory + .LINK + Add-OBSInput + .LINK + Set-OBSInputSettings + + #> + + [Alias('Add-OBSSwitchSource','Get-OBSSwitchSource')] + param( + # The path to the media file. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('Sources')] + [string[]] + $SourceList, + + # What to select in the playlist. + # If a number is provided, this will select an index. + # If a string is provided, this will select the whole name or last part of a name, accepting wildcards. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateScript({ + $validTypeList = [System.Int32],[System.String] + + $thisType = $_.GetType() + $IsTypeOk = + $(@( foreach ($validType in $validTypeList) { + if ($_ -as $validType) { + $true;break + } + })) + + if (-not $isTypeOk) { + throw "Unexpected type '$(@($thisType)[0])'. Must be 'int','string'." + } + return $true + })] + + [Alias('SelectIndex','SelectName')] + $Select, + + # If set, the list of sources will loop. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("loop")] + [Alias('Looping')] + [switch] + $Loop, + + # If set, will switch between sources. + # Sources will be displayed for a -Duration. + # No source wil be displayed for an -Interval. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("time_switch")] + [switch] + $TimeSwitch, + + # The interval between sources + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("time_switch_between")] + [timespan] + $Interval, + + # The duration between sources that are switching at a time. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("time_switch_duration")] + [timespan] + $Duration, + + # The item that will be switched in a TimeSwitch, after -Duration and -Interval. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet("None","Next","Previous","First","Last","Random")] + [string] + $TimeSwitchTo = "Next", + + # If set, will switch on the underlying source's media state events. + # Sources will be displayed for a -Duration. + # No source wil be displayed for an -Interval. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("media_state_switch")] + [switch] + $MediaStateSwitch, + + # The change in media state that should trigger a switch + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet("Playing","Opening","Buffering","Paused","Stopped","Ended", "Error","Playing","NotOpening","NotBuffering","NotPaused","NotStopped","NotEnded", "NotError")] + $MediaStateChange, + + # When the source switcher is trigger by media end, this determines the next source that will be switched to. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet("None","Next","Previous","First","Last","Random")] + [string] + $MediaSwitchTo = "Next", + + # The name of the transition between sources. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + if (-not $script:OBSTransitionKinds) { + $script:OBSTransitionKinds = @(Get-OBSTransitionKind) -replace '_transition$' + } + + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($script:OBSTransitionKinds -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($script:OBSTransitionKinds -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $TransitionName, + + # The properties sent to the transition. + # Notice: this current requires confirmation in the UI. + [Parameter(ValueFromPipelineByPropertyName)] + [PSObject] + $TransitionProperty, + + # The name of the transition used to show a source. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + if (-not $script:OBSTransitionKinds) { + $script:OBSTransitionKinds = @(Get-OBSTransitionKind) -replace '_transition$' + } + + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($script:OBSTransitionKinds -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($script:OBSTransitionKinds -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $ShowTransition, + + # The properties sent to the show transition. + # Notice: this current requires confirmation in the UI. + [Parameter(ValueFromPipelineByPropertyName)] + [PSObject] + $ShowTransitionProperty, + + # The transition used to hide a source. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + if (-not $script:OBSTransitionKinds) { + $script:OBSTransitionKinds = @(Get-OBSTransitionKind) -replace '_transition$' + } + + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($script:OBSTransitionKinds -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($script:OBSTransitionKinds -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $HideTransition, + + # The properties sent to the hide transition. + # Notice: this current requires confirmation in the UI. + [Parameter(ValueFromPipelineByPropertyName)] + [PSObject] + $HideTransitionProperty, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force, + + # If set, will fit the input to the screen. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $FitToScreen + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + filter OutputAndFitToScreen { + + if ($FitToScreen -and $_.FitToScreen) { + $_.FitToScreen() + } + $_ + + } + $InputKind = "source_switcher" + + } + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + if ($myParameters[$parameter.Name] -is [timespan]) { + $myParameterData[$bindToPropertyName] = [int]$myParameters[$parameter.Name].TotalMilliseconds + } + } + } + + + $selectedIndex = -1 + $sourcesObject = @( + $currentIndex = -1 + foreach ($sourceName in $SourceList) { + $currentIndex++ + $selected = ($null -ne $Select) -and ( + ($select -is [int] -and $currentIndex -eq $select) -or + ($select -is [string] -and + ($sourceName -like $select -or ($sourceName | Split-Path -Leaf -ErrorAction Ignore) -like $Select) + ) + ) + if ($selected) { + $selectedIndex = $currentIndex + } + [PSCustomObject][Ordered]@{hidden=$false;selected=$selected;value=$sourceName} + } + ) + + if ($sourcesObject) { + $myParameterData['sources'] = $sourcesObject + if ($selectedIndex -gt 0) { + $myParameterData["current_index"] = $selectedIndex + } + } + elseif ($Select -is [int]) { + $myParameterData['current_index'] = $Select + } + + + + if ($TransitionName) { + if ($TransitionName -notlike '*_transition') { + $TransitionName = "${TransitionName}_transition" + } + $myParameterData["transition"] = $TransitionName + } + + if ($TransitionProperty) { + $myParameterData["transition_properties"] = $TransitionProperty + } + + if ($ShowTransition) { + if ($ShowTransition -notlike '*_transition') { + $ShowTransition = "${ShowTransition}_transition" + } + $myParameterData["show_transition"] = $ShowTransition + } + + if ($ShowTransitionProperty) { + $myParameterData["show_transition_properties"] = $ShowTransitionProperty + } + + if ($HideTransition) { + if ($HideTransition -notlike '*_transition') { + $HideTransition = "${HideTransition}_transition" + } + $myParameterData["hide_transition"] = $ShowTransition + } + + if ($HideTransitionProperty) { + $myParameterData["hide_transition_properties"] = $HideTransitionProperty + } + + if ($TimeSwitchTo) { + $validValues = $MyInvocation.MyCommand.Parameters["TimeSwitchTo"].Attributes.ValidValues + for ($vvi = 0; $vvi -lt $validValues.Length;$vvi++) { + if ($TimeSwitchTo -eq $validValues[$vvi]) { + $myParameterData["time_switch_to"] = $vvi + break + } + } + } + + if ($MediaSwitchTo) { + $validValues = $MyInvocation.MyCommand.Parameters["MediaSwitchTo"].Attributes.ValidValues + for ($vvi = 0; $vvi -lt $validValues.Length;$vvi++) { + if ($TimeSwitchTo -eq $validValues[$vvi]) { + $myParameterData["media_state_switch_to"] = $vvi + break + } + } + } + + if ($MediaStateChange) { + $validValues = $MyInvocation.MyCommand.Parameters["MediaStateChange"].Attributes.ValidValues + for ($vvi = 0; $vvi -lt $validValues.Length;$vvi++) { + if ($TimeSwitchTo -eq $validValues[$vvi]) { + $myParameterData["media_switch_state"] = $vvi + break + } + } + } + + if (-not $Name) { + $Name = $myParameters["Name"] = "Source Switcher" + } + + + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $InputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + + if ($myParameters.Contains('SceneItemEnabled')) { + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + if ($sceneItem) { + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene and optionally fit it to the screen. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $name | + OutputAndFitToScreen + } + + } +} diff --git a/Commands/Sources/Set-OBSVLCSource.ps.ps1 b/Commands/Sources/Set-OBSVLCSource.ps.ps1 index 7a71c3d86..ab7e423a0 100644 --- a/Commands/Sources/Set-OBSVLCSource.ps.ps1 +++ b/Commands/Sources/Set-OBSVLCSource.ps.ps1 @@ -15,10 +15,10 @@ function Set-OBSVLCSource Set-OBSInputSettings #> [inherit("Add-OBSInput", Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] - [Alias('Add-OBSVLCSource','Set-OBSPlaylistSource','Add-OBSPlaylistSource')] + [Alias('Add-OBSVLCSource','Set-OBSPlaylistSource','Add-OBSPlaylistSource','Get-OBSVLCSource','Get-OBSPlaylistSource')] param( # The path to the media file. - [Parameter(Mandatory,ValueFromPipelineByPropertyName)] + [Parameter(ValueFromPipelineByPropertyName)] [Alias('FullName','LocalFile','local_file','Playlist')] [string[]] $FilePath, @@ -95,13 +95,55 @@ function Set-OBSVLCSource } $_ } + $InputKind = "vlc_source" } process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } $myParameterData = [Ordered]@{} @@ -120,15 +162,11 @@ function Set-OBSVLCSource if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] if ($myParameters[$parameter.Name] -is [switch]) { - $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] } } } - - if (-not (Test-Path $FilePath)) { - return - } - + $allPaths = @(foreach ($path in $FilePath) { foreach ($_ in $ExecutionContext.SessionState.Path.GetResolvedPSPathFromPSPath($path)) { $_.Path @@ -156,7 +194,7 @@ function Set-OBSVLCSource $addSplat = [Ordered]@{ sceneName = $myParameters["Scene"] - inputKind = "vlc_source" + inputKind = $InputKind inputSettings = $myParameterData inputName = $Name NoResponse = $myParameters["NoResponse"] diff --git a/Commands/Sources/Set-OBSVLCSource.ps1 b/Commands/Sources/Set-OBSVLCSource.ps1 index 4c62ebcd7..4f6c29eab 100644 --- a/Commands/Sources/Set-OBSVLCSource.ps1 +++ b/Commands/Sources/Set-OBSVLCSource.ps1 @@ -15,13 +15,14 @@ function Set-OBSVLCSource { #> - [Alias('Add-OBSVLCSource','Set-OBSPlaylistSource','Add-OBSPlaylistSource')] + [Alias('Add-OBSVLCSource','Set-OBSPlaylistSource','Add-OBSPlaylistSource','Get-OBSVLCSource','Get-OBSPlaylistSource')] param( # The path to the media file. - [Parameter(Mandatory,ValueFromPipelineByPropertyName)] + [Parameter(ValueFromPipelineByPropertyName)] [Alias('FullName','LocalFile','local_file','Playlist')] [string[]] $FilePath, + # What to select in the playlist. # If a number is provided, this will select an index. # If a string is provided, this will select the whole name or last part of a name, accepting wildcards. @@ -29,6 +30,7 @@ function Set-OBSVLCSource { [Parameter(ValueFromPipelineByPropertyName)] [ValidateScript({ $validTypeList = [System.Int32],[System.String],[System.IO.FileInfo] + $thisType = $_.GetType() $IsTypeOk = $(@( foreach ($validType in $validTypeList) { @@ -36,6 +38,7 @@ function Set-OBSVLCSource { $true;break } })) + if (-not $isTypeOk) { throw "Unexpected type '$(@($thisType)[0])'. Must be 'int','string','System.IO.FileInfo'." } @@ -44,48 +47,57 @@ function Set-OBSVLCSource { [Alias('SelectIndex','SelectName')] $Select, + # If set, will shuffle the playlist [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("shuffle")] [switch] $Shuffle, + # If set, the playlist will loop. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("loop")] [Alias('Looping')] [switch] $Loop, + # If set, will show subtitles, if available. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("subtitle_enable")] [Alias('ShowSubtitles','Subtitles')] [switch] $Subtitle, + # The selected audio track number. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("track")] [int] $AudioTrack, + # The selected subtitle track number. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("subtitle")] [int] $SubtitleTrack, + # The name of the scene. # If no scene name is provided, the current program scene will be used. [Parameter(ValueFromPipelineByPropertyName)] [string] $Scene, + # The name of the input. # If no name is provided, the last segment of the URI or file path will be the input name. [Parameter(ValueFromPipelineByPropertyName)] [string] $Name, + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. # If not set, you will get an error if a source with the same name exists. [Parameter(ValueFromPipelineByPropertyName)] [switch] $Force, + # If set, will fit the input to the screen. [Parameter(ValueFromPipelineByPropertyName)] [switch] @@ -102,6 +114,8 @@ function Set-OBSVLCSource { } $IncludeParameter = @() $ExcludeParameter = 'inputKind','sceneName','inputName' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -124,26 +138,71 @@ function Set-OBSVLCSource { )) } $DynamicParameters + } begin { filter OutputAndFitToScreen { + if ($FitToScreen -and $_.FitToScreen) { $_.FitToScreen() } $_ } + $InputKind = "vlc_source" } process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -152,17 +211,16 @@ function Set-OBSVLCSource { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] if ($myParameters[$parameter.Name] -is [switch]) { - $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] } } } - if (-not (Test-Path $FilePath)) { - return - } + $allPaths = @(foreach ($path in $FilePath) { foreach ($_ in $ExecutionContext.SessionState.Path.GetResolvedPSPathFromPSPath($path)) { $_.Path @@ -187,16 +245,19 @@ function Set-OBSVLCSource { if (-not $Name) { $Name = $myParameters["Name"] = $FilePathItem.Name } + $addSplat = [Ordered]@{ sceneName = $myParameters["Scene"] - inputKind = "vlc_source" + inputKind = $InputKind inputSettings = $myParameterData inputName = $Name NoResponse = $myParameters["NoResponse"] } + if ($myParameters.Contains('SceneItemEnabled')) { $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] } + # If -PassThru was passed if ($MyParameters["PassThru"]) { # pass it down to each command @@ -214,8 +275,10 @@ function Set-OBSVLCSource { } return } + # Add the input. $outputAddedResult = Add-OBSInput @addSplat *>&1 + # If we got back an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # and that error was saying the source already exists, @@ -235,6 +298,7 @@ function Set-OBSVLCSource { $outputAddedResult = $null } } + # If the output was still an error if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { # use $psCmdlet.WriteError so that it shows the error correctly. diff --git a/Commands/Sources/Set-OBSWaveformSource.ps.ps1 b/Commands/Sources/Set-OBSWaveformSource.ps.ps1 new file mode 100644 index 000000000..6e47105ee --- /dev/null +++ b/Commands/Sources/Set-OBSWaveformSource.ps.ps1 @@ -0,0 +1,405 @@ +function Set-OBSWaveformSource +{ + <# + .SYNOPSIS + OBS Waveform Source + .DESCRIPTION + Gets, Sets, or Adds a waveform source in OBS. + + Waveform sources require the [Waveform Plugin](https://obsproject.com/forum/resources/waveform.1423/) + .EXAMPLE + Add-OBSWaveformSource -Name "SpeakerWaveform" + #> + [inherit(Command={ + Import-Module ..\..\obs-powershell.psd1 -Global + "Add-OBSInput" + }, Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] + [Alias('Add-OBSWaveformSource','Get-OBSWaveformSource')] + param( + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The audio source for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("audio_source")] + [string] + $AudioSource, + + # The display mode for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("display_mode")] + [ValidateSet("curve","bars","stepped_bars","level_meter","stepped_level_meter")] + [string] + $DisplayMode, + + # The render mode for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("render_mode")] + [ValidateSet("line","solid","gradient")] + [string] + $RenderMode, + + # The windowing mode for the waveform. + # This is the mathematical function used to determine the current "window" of audio data. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("render_mode")] + [ValidateSet("hann","hamming","blackman","blackman_harris","none")] + [string] + $WindowMode, + + # The color used for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("color_base")] + [PSObject] + $Color, + + # The crest color used for the waveform. + # This will be ignored if the render mode is not "gradient". + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("color_crest")] + [PSObject] + $CrestColor, + + # The channel mode for the waveform. + # This can be either mono or stereo. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("channel_mode")] + [ValidateSet("mono","stereo")] + [string] + $ChannelMode, + + # The number of pixels between each channel in stereo mode + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("channel_spacing")] + [int] + $ChannelSpacing, + + # If set, will use a radial layout for the waveform + # Radial layouts will ignore the desired height of the source and instead create a square. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("radial_layout")] + [switch] + $RadialLayout, + + # If set, will invert the direction for a radial waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("invert_direction")] + [switch] + $InvertRadialDirection, + + # If set, will normalize the volume displayed in the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("normalize_volume")] + [switch] + $NoramlizeVolume, + + # If set, will automatically declare an FFTSize + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("auto_fft_size")] + [switch] + $AutoFftSize, + + # If set, will attempt to make audio peaks render faster. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("fast_peaks")] + [switch] + $FastPeak, + + # The width of the waveform bar. + # This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("bar_width")] + [int] + $BarWidth, + + # The gap between waveform bars. + # This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("bar_gap")] + [int] + $BarGap, + + # The width of waveform bar step. + # This is only valid when -DisplayMode is 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("step_width")] + [int] + $StepWidth, + + # The gap between waveform bar steps. + # This is only valid when -DisplayMode is 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("step_gap")] + [int] + $StepGap, + + # The low-frequency cutoff of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("cutoff_low")] + [int] + $LowCutoff, + + # The high-frequency cutoff of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("cutoff_high")] + [int] + $HighCutoff, + + # The floor of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("floor")] + [int] + $Floor, + + # The ceiling of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("ceiling")] + [int] + $Ceiling, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("slope")] + [double] + $Slope, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("rolloff_q")] + [Alias('RollOffOctaves')] + [double] + $RollOffOctave, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("rolloff_rate")] + [double] + $RollOffRate, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("grad_ratio")] + [double] + $GradientRatio, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("deadzone")] + [double] + $Deadzone, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("temporal_smoothing")] + [ValidateSet("none","exp_moving_avg")] + [string] + $TemporalSmoothing, + + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + + begin { + $inputKind = "phandasm_waveform_source" + filter ToOBSColor { + if ($_ -is [uint32]) { $_ } + elseif ($_ -is [string]) { + if ($_ -match '^\#[a-f0-9]{3,4}$') { + $_ = $_ -replace '[a-f0-9]','$0$0' + } + + if ($_ -match '^#[a-f0-9]{8}$') { + ( + '0x' + + (($_ -replace '#').ToCharArray()[0,1,-1,-2,-3,-4,-5,-6] -join '') + ) -as [UInt32] + } + elseif ($_ -match '^#[a-f0-9]{6}$') { + + ( + '0xff' + + (($_ -replace '#').ToCharArray()[-1..-6] -join '') + ) -as [UInt32] + } + } + } + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + $MyInvocationName = "$($MyInvocation.InvocationName)" + $myVerb, $myNoun = $MyInvocationName -split '-' + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + $IsGet = $myVerb -eq "Get" + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + if ( + $IsGet -or + $NoVerb + ) { + $inputsOfKind = + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { + $_.InputName -like $Name + } else { + $_ + } + } + if ($NonNameParameters -and -not $IsGet) { + $paramCopy = [Ordered]@{} + $PSBoundParameters + if ($paramCopy.Name) { $paramCopy.Remove('Name') } + $inputsOfKind | & $myScriptBlock @paramCopy + } else { + $inputsOfKind + } + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + + + if (-not $Name) { + $Name = $myParameters['Name'] = + if ($AudioSource) { + "$($AudioSource)-Waveform" + } else { + "Waveform" + } + } + + if ($myParameterData.color_base) { + $myParameterData.color_base = $myParameterData.color_base | ToOBSColor + } + + if ($myParameterData.color_crest) { + $myParameterData.color_crest = $myParameterData.color_crest | ToOBSColor + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $inputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + } +} \ No newline at end of file diff --git a/Commands/Sources/Set-OBSWaveformSource.ps1 b/Commands/Sources/Set-OBSWaveformSource.ps1 new file mode 100644 index 000000000..0988554b7 --- /dev/null +++ b/Commands/Sources/Set-OBSWaveformSource.ps1 @@ -0,0 +1,441 @@ +function Set-OBSWaveformSource { + <# + + .SYNOPSIS + OBS Waveform Source + .DESCRIPTION + Gets, Sets, or Adds a waveform source in OBS. + Waveform sources require the [Waveform Plugin](https://obsproject.com/forum/resources/waveform.1423/) + .EXAMPLE + Add-OBSWaveformSource -Name "SpeakerWaveform" + + #> + + [Alias('Add-OBSWaveformSource','Get-OBSWaveformSource')] + param( + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The audio source for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("audio_source")] + [string] + $AudioSource, + + # The display mode for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("display_mode")] + [ValidateSet("curve","bars","stepped_bars","level_meter","stepped_level_meter")] + [string] + $DisplayMode, + + # The render mode for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("render_mode")] + [ValidateSet("line","solid","gradient")] + [string] + $RenderMode, + + # The windowing mode for the waveform. + # This is the mathematical function used to determine the current "window" of audio data. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("render_mode")] + [ValidateSet("hann","hamming","blackman","blackman_harris","none")] + [string] + $WindowMode, + + # The color used for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("color_base")] + [PSObject] + $Color, + + # The crest color used for the waveform. + # This will be ignored if the render mode is not "gradient". + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("color_crest")] + [PSObject] + $CrestColor, + + # The channel mode for the waveform. + # This can be either mono or stereo. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("channel_mode")] + [ValidateSet("mono","stereo")] + [string] + $ChannelMode, + + # The number of pixels between each channel in stereo mode + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("channel_spacing")] + [int] + $ChannelSpacing, + + # If set, will use a radial layout for the waveform + # Radial layouts will ignore the desired height of the source and instead create a square. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("radial_layout")] + [switch] + $RadialLayout, + + # If set, will invert the direction for a radial waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("invert_direction")] + [switch] + $InvertRadialDirection, + + # If set, will normalize the volume displayed in the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("normalize_volume")] + [switch] + $NoramlizeVolume, + + # If set, will automatically declare an FFTSize + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("auto_fft_size")] + [switch] + $AutoFftSize, + + # If set, will attempt to make audio peaks render faster. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("fast_peaks")] + [switch] + $FastPeak, + + # The width of the waveform bar. + # This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("bar_width")] + [int] + $BarWidth, + + # The gap between waveform bars. + # This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("bar_gap")] + [int] + $BarGap, + + # The width of waveform bar step. + # This is only valid when -DisplayMode is 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("step_width")] + [int] + $StepWidth, + + # The gap between waveform bar steps. + # This is only valid when -DisplayMode is 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("step_gap")] + [int] + $StepGap, + + # The low-frequency cutoff of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("cutoff_low")] + [int] + $LowCutoff, + + # The high-frequency cutoff of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("cutoff_high")] + [int] + $HighCutoff, + + # The floor of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("floor")] + [int] + $Floor, + + # The ceiling of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("ceiling")] + [int] + $Ceiling, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("slope")] + [double] + $Slope, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("rolloff_q")] + [Alias('RollOffOctaves')] + [double] + $RollOffOctave, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("rolloff_rate")] + [double] + $RollOffRate, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("grad_ratio")] + [double] + $GradientRatio, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("deadzone")] + [double] + $Deadzone, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("temporal_smoothing")] + [ValidateSet("none","exp_moving_avg")] + [string] + $TemporalSmoothing, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + $inputKind = "phandasm_waveform_source" + filter ToOBSColor { + + if ($_ -is [uint32]) { $_ } + elseif ($_ -is [string]) { + if ($_ -match '^\#[a-f0-9]{3,4}$') { + $_ = $_ -replace '[a-f0-9]','$0$0' + } + + if ($_ -match '^#[a-f0-9]{8}$') { + ( + '0x' + + (($_ -replace '#').ToCharArray()[0,1,-1,-2,-3,-4,-5,-6] -join '') + ) -as [UInt32] + } + elseif ($_ -match '^#[a-f0-9]{6}$') { + + ( + '0xff' + + (($_ -replace '#').ToCharArray()[-1..-6] -join '') + ) -as [UInt32] + } + } + + } + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + $MyInvocationName = "$($MyInvocation.InvocationName)" + $myVerb, $myNoun = $MyInvocationName -split '-' + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + $IsGet = $myVerb -eq "Get" + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + if ( + $IsGet -or + $NoVerb + ) { + $inputsOfKind = + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { + $_.InputName -like $Name + } else { + $_ + } + } + if ($NonNameParameters -and -not $IsGet) { + $paramCopy = [Ordered]@{} + $PSBoundParameters + if ($paramCopy.Name) { $paramCopy.Remove('Name') } + $inputsOfKind | & $myScriptBlock @paramCopy + } else { + $inputsOfKind + } + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + + + if (-not $Name) { + $Name = $myParameters['Name'] = + if ($AudioSource) { + "$($AudioSource)-Waveform" + } else { + "Waveform" + } + } + + if ($myParameterData.color_base) { + $myParameterData.color_base = $myParameterData.color_base | ToOBSColor + } + + if ($myParameterData.color_crest) { + $myParameterData.color_crest = $myParameterData.color_crest | ToOBSColor + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $inputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + + } +} diff --git a/Commands/Sources/Set-OBSWindowSource.ps.ps1 b/Commands/Sources/Set-OBSWindowSource.ps.ps1 index 242937e0f..aa0fa0dac 100644 --- a/Commands/Sources/Set-OBSWindowSource.ps.ps1 +++ b/Commands/Sources/Set-OBSWindowSource.ps.ps1 @@ -9,7 +9,7 @@ function Set-OBSWindowSource Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow #> [inherit("Add-OBSInput", Dynamic, Abstract, ExcludeParameter='inputKind','sceneName','inputName')] - [Alias('Add-OBSWindowSource','Set-OBSWindowCaptureSource','Add-OBSWindowCaptureSource')] + [Alias('Add-OBSWindowSource','Set-OBSWindowCaptureSource','Add-OBSWindowCaptureSource','Get-OBSWindowSource','Get-OBSWindowCaptureSource')] param( # The monitor number. # This the number of the monitor you would like to capture. @@ -71,12 +71,57 @@ function Set-OBSWindowSource [switch] $Force ) + + begin { + $InputKind = "window_capture" + } process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } @@ -96,6 +141,9 @@ function Set-OBSWindowSource if ($myParameters["WindowTitle"]) { $Name = $myParameters["Name"] = "WindowCapture-" + $myParameters["WindowTitle"] } + else { + $Name = "WindowCapture" + } } @@ -117,7 +165,7 @@ function Set-OBSWindowSource if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] if ($myParameters[$parameter.Name] -is [switch]) { - $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] } } } diff --git a/Commands/Sources/Set-OBSWindowSource.ps1 b/Commands/Sources/Set-OBSWindowSource.ps1 index 31d425c20..be329b8aa 100644 --- a/Commands/Sources/Set-OBSWindowSource.ps1 +++ b/Commands/Sources/Set-OBSWindowSource.ps1 @@ -10,7 +10,7 @@ function Set-OBSWindowSource { #> - [Alias('Add-OBSWindowSource','Set-OBSWindowCaptureSource','Add-OBSWindowCaptureSource')] + [Alias('Add-OBSWindowSource','Set-OBSWindowCaptureSource','Add-OBSWindowCaptureSource','Get-OBSWindowSource','Get-OBSWindowCaptureSource')] param( # The monitor number. # This the number of the monitor you would like to capture. @@ -18,16 +18,19 @@ function Set-OBSWindowSource { [Alias('ItemValue','ItemName','WindowName','MainWindowTitle')] [string] $WindowTitle, + # The number of the capture method. By default, automatic (0). [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("method")] [int] $CaptureMethod, + # The capture priority. [Parameter(ValueFromPipelineByPropertyName)] [ValidateSet('ExactMatch','SameType','SameExecutable')] [string] $CapturePriority, + # If set, will capture the cursor. # This will be set by default. # If explicitly set to false, the cursor will not be captured. @@ -35,29 +38,34 @@ function Set-OBSWindowSource { [ComponentModel.DefaultBindingProperty("cursor")] [switch] $CaptureCursor, + # If set, will capture the client area. # This will be set by default. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("client_area")] [switch] $ClientArea, + # If set, will force SDR. [Parameter(ValueFromPipelineByPropertyName)] [ComponentModel.DefaultBindingProperty("force_sdr")] [switch] $ForceSDR, + # The name of the scene. # If no scene name is provided, the current program scene will be used. [Parameter(ValueFromPipelineByPropertyName)] [Alias('SceneName')] [string] $Scene, + # The name of the input. # If no name is provided, "Display $($Monitor + 1)" will be the input source name. [Parameter(ValueFromPipelineByPropertyName)] [Alias('InputName')] [string] $Name, + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. # If not set, you will get an error if a source with the same name exists. [Parameter(ValueFromPipelineByPropertyName)] @@ -75,6 +83,8 @@ function Set-OBSWindowSource { } $IncludeParameter = @() $ExcludeParameter = 'inputKind','sceneName','inputName' + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { if ($ExcludeParameter) { @@ -97,13 +107,60 @@ function Set-OBSWindowSource { )) } $DynamicParameters + + } + begin { + $InputKind = "window_capture" + } process { + # Copy the bound parameters $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } if (-not $myParameters["Scene"]) { - $myParameters["Scene"] = Get-OBSCurrentProgramScene + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName } + if (-not $myParameters["WindowTitle"]) { while ($_ -is [Diagnostics.Process] -and -not $_.MainWindowTitle) { @@ -113,6 +170,7 @@ function Set-OBSWindowSource { $WindowTitle = $myParameters["WindowTitle"] = "$($_.MainWindowTitle)" } } + # Window capture is a bit of a tricky one. # In order to get the WindowTitle to match that OBS needs, we need to look thru the input properties list. # and for that, an input needs to exist. @@ -120,11 +178,17 @@ function Set-OBSWindowSource { if ($myParameters["WindowTitle"]) { $Name = $myParameters["Name"] = "WindowCapture-" + $myParameters["WindowTitle"] } + else { + $Name = "WindowCapture" + } } + + $myParameterData = [Ordered]@{} foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + $bindToPropertyName = $null foreach ($attribute in $parameter.Attributes) { @@ -133,14 +197,16 @@ function Set-OBSWindowSource { break } } + if (-not $bindToPropertyName) { continue } if ($myParameters.Contains($parameter.Name)) { $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] if ($myParameters[$parameter.Name] -is [switch]) { - $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] } } } + if ($null -ne $CaptureMethod) { $myParameterData["method"] = $CaptureMethod } @@ -153,6 +219,7 @@ function Set-OBSWindowSource { elseif ($CapturePriority -eq 'SameExecutable') { $myParameterData["priority"] = 2 } + $addSplat = @{ sceneName = $myParameters["Scene"] inputName = $myParameters["Name"] @@ -160,11 +227,13 @@ function Set-OBSWindowSource { inputSettings = $myParameterData NoResponse = $myParameters["NoResponse"] } + # If -SceneItemEnabled was passed, if ($myParameters.Contains('SceneItemEnabled')) { # propagate it to Add-OBSInput. $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] } + # Add the input. $outputAddedResult = Add-OBSInput @addSplat *>&1 $possibleWindows = Get-OBSInputPropertiesListPropertyItems -InputName $addSplat.inputName -PropertyName window @@ -181,6 +250,7 @@ function Set-OBSWindowSource { break } } + # If -PassThru was passed if ($MyParameters["PassThru"]) { # pass it down to each command @@ -194,6 +264,7 @@ function Set-OBSWindowSource { return } + if ($Force) { # If we do, remove the input Remove-OBSInput -InputName $addSplat.inputName # and re-add our result. diff --git a/Commands/Watch-OBS.ps1 b/Commands/Watch-OBS.ps1 index e8032cc2b..de7c53a0e 100644 --- a/Commands/Watch-OBS.ps1 +++ b/Commands/Watch-OBS.ps1 @@ -26,17 +26,24 @@ function Watch-OBS [Parameter(ValueFromPipelineByPropertyName)] [Alias('WebSocketPassword')] [string] - $WebSocketToken + $WebSocketToken, + + # The size of the buffer to use when receiving messages from the websocket. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateRange(1,1mb)] + [int] + $BufferSize = 64kb ) begin { $obsWatcherJobDefinition = '' + { param( - [uri]$webSocketUri, - - [Alias('WebSocketPassword')] - $WebSocketToken + [Collections.IDictionary]$Variable ) + + foreach ($keyValue in $Variable.GetEnumerator()) { + $ExecutionContext.SessionState.PSVariable.Set($keyValue.Name, $keyValue.Value) + } }.ToString() + " function Receive-OBS { @@ -56,7 +63,7 @@ $($ExecutionContext.SessionState.InvokeCommand.GetCommand('Send-OBS', 'Function' $obsPwd = $WebSocketToken $WaitInterval = [Timespan]::FromMilliseconds(7) - $BufferSize = 16kb + $BufferSize = 64kb $maxWaitTime = [DateTime]::Now + $WaitFor while (!$ConnectTask.IsCompleted -and [DateTime]::Now -lt $maxWaitTime) { @@ -67,6 +74,7 @@ $($ExecutionContext.SessionState.InvokeCommand.GetCommand('Send-OBS', 'Function' $script:ObsConnections = @{} } $script:ObsConnections[$webSocketUri] = $Websocket + $Variable['WebSocket'] = $Websocket [PSCustomObject][Ordered]@{ PSTypename = 'obs.websocket' @@ -92,11 +100,21 @@ $($ExecutionContext.SessionState.InvokeCommand.GetCommand('Send-OBS', 'Function' if ($msg) { $messageData = try { ConvertFrom-Json $msg -ErrorAction Ignore} catch { $_ } - if ($messageData -isnot [Management.Automation.ErrorRecord]) { - $messageData | Receive-OBS -WebSocketToken $WebSocketToken -WebSocketUri $webSocketUri -SendEvent + $received = if ($messageData -isnot [Management.Automation.ErrorRecord]) { + $messageData | Receive-OBS -WebSocketToken $WebSocketToken -WebSocketUri $webSocketUri -SendEvent -Subscription $Subscription } else { $messageData } + if ($MainRunspace) { + foreach ($receivedItem in $received) { + if ($receivedItem -is [Management.Automation.PSEvent]) { + $MainRunspace.Events.GenerateEvent($receivedItem.SourceIdentifier, $receivedItem.Sender, $receivedItem.SourceArgs, $receivedItem.MessageData) + } else { + $MainRunspace.Events.GenerateEvent('obs://', $Websocket, $received, $null) + } + } + } + $received } $buffer.Clear() @@ -124,9 +142,14 @@ $($ExecutionContext.SessionState.InvokeCommand.GetCommand('Send-OBS', 'Function' process { - + $MainRunspace = [Runspace]::DefaultRunspace $obsWatcher = - Start-ThreadJob -ScriptBlock $obsWatcherJobDefinition -Name "OBS.Connection.$($Credential.UserName)" -ArgumentList $WebSocketURI, $WebSocketToken + Start-ThreadJob -ScriptBlock $obsWatcherJobDefinition -Name "OBS.Connection.$($Credential.UserName)" -ArgumentList ([Ordered]@{ + WebSocketURI = $WebSocketURI + WebSocketToken = $WebSocketToken + BufferSize = $BufferSize + MainRunspace = $MainRunspace + }) $whenOutputAddedHandler = Register-ObjectEvent -InputObject $obsWatcher.Output -EventName DataAdded -Action { diff --git a/Effects/ZoomInAndOut.OBS.FX.ps1 b/Effects/ZoomInAndOut.OBS.FX.ps1 new file mode 100644 index 000000000..eea38e918 --- /dev/null +++ b/Effects/ZoomInAndOut.OBS.FX.ps1 @@ -0,0 +1,57 @@ +<# +.SYNOPSIS + Zooms In and Out again +.DESCRIPTION + Zooms an Input In and Out. +#> +param( +# The name of the scene. +[string] +$SceneName, + +# The name +[string] +$SceneItemID, + +# The duration (by default, one a half second) +[timespan] +$Duration = "00:00:00.5", + +# The pause between (by default, one a half second) +[Timespan] +$PauseBetween = '00:00:00.5' +) + +if (-not $SceneName -and $this -and $this.SceneName) { + $SceneName = $this.SceneName +} + +if (-not $SceneItemID -and $this -and $this.SceneItemID) { + $SceneItemID = $this.SceneItemID +} + +if (-not $SceneItemID -and $SceneName) { return } + +$sceneItem = if ($this.SceneName -and $this.SceneItemID) { + $this +} elseif ($SceneItemID) { + Get-OBSSceneItem -SceneName $this.SceneName | + Where-Object { + $_.SceneItemID -eq $SceneItemID -or + $_.SourceName -eq $SceneItemID + } +} +# Fit it to the screen once, so we're centered correctly. +$sceneItem.FitToScreen() + +# +$sceneItem.Scale( + "0%", + "150%", + $Duration, + $PauseBetween, + $Duration, + "0%", + $true +) + diff --git a/README.md b/README.md index 80e0d415e..5aac7561d 100644 --- a/README.md +++ b/README.md @@ -178,7 +178,6 @@ Because the obs-websocket cleanly documents it's protocol, most commands in obs- * [Full List Of Commands](docs/obs-powershell-commands.md) * [Full list of websocket commands](docs/obs-powershell-websocket-commands.md) - ## Depdendencies To use obs-powershell, you'll need OBS and PowerShell Core. You can run both of these on any operating system. @@ -190,6 +189,7 @@ Some commands in obs-powershell will not work unless you have additional softwar |Commands|Dependency| |-|-| |Add/Set-OBSVLCSource|[VLC](https://www.videolan.org/vlc/)| -|Add/Set-OBS3DFilter |[VLC](https://obsproject.com/forum/resources/3d-effect.1692/)| +|Add/Set-OBS3DFilter |[3D Effect](https://obsproject.com/forum/resources/3d-effect.1692/)| |Add/Set-OBSShaderFilter|[obs-shaderfilter 2.0+](https://obsproject.com/forum/resources/obs-shaderfilter.1736/) +|Add/Set/Get-OBSWaveformSource|[waveform source](https://obsproject.com/forum/resources/waveform.1423/) diff --git a/README.ps1.md b/README.ps1.md index 0fb65a00c..b176f4183 100644 --- a/README.ps1.md +++ b/README.ps1.md @@ -178,7 +178,6 @@ Because the obs-websocket cleanly documents it's protocol, most commands in obs- * [Full List Of Commands](docs/obs-powershell-commands.md) * [Full list of websocket commands](docs/obs-powershell-websocket-commands.md) - ## Depdendencies To use obs-powershell, you'll need OBS and PowerShell Core. You can run both of these on any operating system. @@ -190,5 +189,6 @@ Some commands in obs-powershell will not work unless you have additional softwar |Commands|Dependency| |-|-| |Add/Set-OBSVLCSource|[VLC](https://www.videolan.org/vlc/)| -|Add/Set-OBS3DFilter |[VLC](https://obsproject.com/forum/resources/3d-effect.1692/)| +|Add/Set-OBS3DFilter |[3D Effect](https://obsproject.com/forum/resources/3d-effect.1692/)| |Add/Set-OBSShaderFilter|[obs-shaderfilter 2.0+](https://obsproject.com/forum/resources/obs-shaderfilter.1736/) +|Add/Set/Get-OBSWaveformSource|[waveform source](https://obsproject.com/forum/resources/waveform.1423/) diff --git a/Shaders/Flip.shader b/Shaders/Flip.shader new file mode 100644 index 000000000..c9e92e3fa --- /dev/null +++ b/Shaders/Flip.shader @@ -0,0 +1,21 @@ +// A Simple Flip Shader + +uniform bool Horizontal< + string label = "Flip horizontally"; +> = true; +uniform bool Vertical< + string label = "Flip vertically"; +> = true; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + if (Horizontal == true) { + pos.x = 1 - pos.x; + } + if (Vertical == true) { + pos.y = 1 - pos.y; + } + + return image.Sample(textureSampler, pos); +} diff --git a/Shaders/RGBA_Percent.shader b/Shaders/RGBA_Percent.shader new file mode 100644 index 000000000..a4e5fa1c2 --- /dev/null +++ b/Shaders/RGBA_Percent.shader @@ -0,0 +1,49 @@ +// Simple RGBA Percent Shader +// Allows Red, Green, or Blue to be adjusted between 0-200% +// Allows Alpha to be adjusted between 0/100% +uniform float RedPercent< + string label = "Red percentage"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 200; + float step = 1.0; +> = 100; + +uniform float GreenPercent< + string label = "Green percentage"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 200; + float step = 1.0; +> = 100; + +uniform float BluePercent< + string label = "Blue percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200; + float step = 1.0; +> = 100.0; + + +uniform float AlphaPercent< + string label = "Alpha percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 100.0; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + + float4 imageColors = image.Sample(textureSampler, v_in.uv); + float4 adjustedColor = float4( + imageColors.r * (RedPercent * 0.01), + imageColors.g * (GreenPercent * 0.01), + imageColors.b * (BluePercent * 0.01), + imageColors.a * (AlphaPercent * 0.01) + ); + return adjustedColor; +} diff --git a/Shaders/Reflect.shader b/Shaders/Reflect.shader new file mode 100644 index 000000000..1446bc535 --- /dev/null +++ b/Shaders/Reflect.shader @@ -0,0 +1,53 @@ +// Simple Reflect Shader + +// Reflects horizontally and/or vertically. + +uniform bool Horizontal< + string label = "Reflect horizontally"; +> = false; +uniform bool Vertical< + string label = "Reflect vertically"; +> = true; + +uniform int center_x_percent< + string label = "center x percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; + + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + + if (Horizontal == true) { + if (pos.x < center_pos.x) { + pos.x = center_pos.x - pos.x; + } else if (pos.x == center_pos.x) { + pos.x = pos.x; + } else { + pos.x = pos.x - center_pos.x; + } + } + if (Vertical == true) { + if (pos.y < center_pos.y) { + pos.y = center_pos.y - pos.y; + } else if (pos.y == center_pos.y) { + pos.y = pos.y; + } else { + pos.y = pos.y - center_pos.y; + } + } + + return image.Sample(textureSampler, pos); +} \ No newline at end of file diff --git a/Shaders/Zoom_XY.shader b/Shaders/Zoom_XY.shader new file mode 100644 index 000000000..36d74c7ff --- /dev/null +++ b/Shaders/Zoom_XY.shader @@ -0,0 +1,44 @@ +// Zoom XY Shader + +// A simple twist on the Zoom Shader in https://github.com/exeldro/obs-shaderfilter/ + +// The allow for an independent Horizontal and Vertical Zoom. + +uniform int center_x_percent< + string label = "center x percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float x_power< + string label = "x power"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 20.0; + float step = 0.001; +> = 1; + +uniform float y_power< + string label = "y power"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 20.0; + float step = 0.001; +> = 1; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float2 uv = v_in.uv; + uv.x = (v_in.uv.x - center_pos.x) * x_power + center_pos.x; + uv.y = (v_in.uv.y - center_pos.y) * y_power + center_pos.y; + return image.Sample(textureSampler, uv); +} \ No newline at end of file diff --git a/Types/OBS.Beat/TapBPM.ps1 b/Types/OBS.Beat/TapBPM.ps1 new file mode 100644 index 000000000..eb5274484 --- /dev/null +++ b/Types/OBS.Beat/TapBPM.ps1 @@ -0,0 +1,33 @@ +<# +.SYNOPSIS + Tap BPM +.DESCRIPTION + Tap out a BPM by pressing ENTER on N beats. + + The BPM will be set to the average time between taps, and the beat will be started. +#> +param( +# The number of taps. +[int] +$TapCount = 8 +) + +Write-Host "Press ENTER on the next..." +$beatTimes = @() +$beatTimeStart = [datetime]::Now +$lastBeatTime = [timespan]::FromMilliseconds(0) +$beatTimes = do { + Write-Host "$($TapCount -$beatTimes.Length) beats:" -NoNewline + $readNothing = Read-Host + $beatTimes += [datetime]::Now + $lastBeatTime = $beatTimes[-1] - $beatTimeStart + $beatTimeStart = [datetime]::Now + $lastBeatTime +} while ($beatTimes.Length -lt $TapCount) + +$averageTimeBetweenBeats = + $beatTimes.TotalMilliseconds | Measure-Object -Average | Select-Object -ExpandProperty Average + +$this.Duration = [Timespan]::FromMilliseconds($averageTimeBetweenBeats) +$this.BeatStart = $beatTimeStart +$this.BPM diff --git a/Types/OBS.Beat/get_Angle.ps1 b/Types/OBS.Beat/get_Angle.ps1 new file mode 100644 index 000000000..5987f46fc --- /dev/null +++ b/Types/OBS.Beat/get_Angle.ps1 @@ -0,0 +1,9 @@ +<# +.SYNOPSIS + Gets the Beat Angle +.DESCRIPTION + Gets the Angle of the Beat. + + If we imagine that as the beat is moving, we are rotating around a circle, this should be the angle at any given moment. +#> +$this.BeatCount * 180/[Math]::PI \ No newline at end of file diff --git a/Types/OBS.Beat/get_BPM.ps1 b/Types/OBS.Beat/get_BPM.ps1 new file mode 100644 index 000000000..76a95c563 --- /dev/null +++ b/Types/OBS.Beat/get_BPM.ps1 @@ -0,0 +1,9 @@ +<# +.SYNOPSIS + Gets the BPM +.DESCRIPTION + Gets the Beats Per Minute (BPM) of obs-powershell. + + This can be used to time effects to a beat. +#> +return $this.'.BPM' diff --git a/Types/OBS.Beat/get_BeatCount.ps1 b/Types/OBS.Beat/get_BeatCount.ps1 new file mode 100644 index 000000000..7e531094f --- /dev/null +++ b/Types/OBS.Beat/get_BeatCount.ps1 @@ -0,0 +1,12 @@ +<# +.SYNOPSIS + Gets the Beat Count +.DESCRIPTION + Gets the number of beats since the beat started. +.EXAMPLE + $obs.Beat.BeatCount +#> +if ($this.'.BPM' -and $this.'.BeatStart') { + ([DateTime]::Now - $this.'.BeatStart').TotalMilliseconds / + ((60 * 1000) / $this.'.BPM') +} diff --git a/Types/OBS.Beat/get_BeatStart.ps1 b/Types/OBS.Beat/get_BeatStart.ps1 new file mode 100644 index 000000000..1f9ec9bab --- /dev/null +++ b/Types/OBS.Beat/get_BeatStart.ps1 @@ -0,0 +1,7 @@ +<# +.SYNOPSIS + Gets the Beat Start Time +.DESCRIPTION + Gets the time when the beat started. +#> +return $this.'.BeatStart' diff --git a/Types/OBS.Beat/get_Cosine.ps1 b/Types/OBS.Beat/get_Cosine.ps1 new file mode 100644 index 000000000..99592d653 --- /dev/null +++ b/Types/OBS.Beat/get_Cosine.ps1 @@ -0,0 +1,9 @@ +<# +.SYNOPSIS + Gets the Beat Cosine +.DESCRIPTION + Gets the Cosine of the BeatCount. + + Since this starts at 1, this would be at its highest value during the top of the beat. +#> +[Math]::Cos($this.BeatCount * ([Math]::PI/2)) \ No newline at end of file diff --git a/Types/OBS.Beat/get_Duration.ps1 b/Types/OBS.Beat/get_Duration.ps1 new file mode 100644 index 000000000..2337666c6 --- /dev/null +++ b/Types/OBS.Beat/get_Duration.ps1 @@ -0,0 +1,11 @@ +<# +.SYNOPSIS + Gets the Duration +.DESCRIPTION + Gets the Duration of a Beat +.OUTPUTS + [TimeSpan] +#> +if ($this.'.BPM') { + [Timespan]::FromMilliseconds((60 * 1000) / $this.'.BPM') +} diff --git a/Types/OBS.Beat/get_Sine.ps1 b/Types/OBS.Beat/get_Sine.ps1 new file mode 100644 index 000000000..51066ac0a --- /dev/null +++ b/Types/OBS.Beat/get_Sine.ps1 @@ -0,0 +1,9 @@ +<# +.SYNOPSIS + Gets the Beat Sine +.DESCRIPTION + Gets the Sine of the BeatCount. + + Since this starts at 0, this would be at its highest value during the middle of the beat. +#> +[Math]::Cos($this.BeatCount * [Math]::PI/2) \ No newline at end of file diff --git a/Types/OBS.Beat/get_Timer.ps1 b/Types/OBS.Beat/get_Timer.ps1 new file mode 100644 index 000000000..9f3660892 --- /dev/null +++ b/Types/OBS.Beat/get_Timer.ps1 @@ -0,0 +1,9 @@ +<# +.SYNOPSIS + Gets the Beat Timer +.DESCRIPTION + Gets the Timer object that should elapse every beat. + + This can be used to Register-ObjectEvent to run on a beat. +#> +return $this.'.Timer' diff --git a/Types/OBS.Beat/set_BPM.ps1 b/Types/OBS.Beat/set_BPM.ps1 new file mode 100644 index 000000000..d286dcc80 --- /dev/null +++ b/Types/OBS.Beat/set_BPM.ps1 @@ -0,0 +1,19 @@ +<# +.SYNOPSIS + Sets the BPM +.DESCRIPTION + Set the Beats Per Minute (BPM) of obs-powershell. + + This can be used to time effects to a beat. +#> +param( +# The new BPM +[double] +$BPM +) +$this | Add-Member NoteProperty ".BPM" $BPM -Force -PassThru +$duration = + [Timespan]::FromMilliseconds( + (60 * 1000) / $this.'.BPM' + ) +$this.Timer = $duration diff --git a/Types/OBS.Beat/set_BeatStart.ps1 b/Types/OBS.Beat/set_BeatStart.ps1 new file mode 100644 index 000000000..64ec53ecd --- /dev/null +++ b/Types/OBS.Beat/set_BeatStart.ps1 @@ -0,0 +1,17 @@ +<# +.SYNOPSIS + Sets the Beat Start Time +.DESCRIPTION + Sets the time when the beat started. +#> +param( + # The Beat Start Time + [DateTime]$BeatStartTime +) +if ($this.'.BPM') { + $this | Add-Member NoteProperty ".BeatStart" ( + $BeatStartTime + ) -Force + $this.Timer.Start() +} + diff --git a/Types/OBS.Beat/set_Duration.ps1 b/Types/OBS.Beat/set_Duration.ps1 new file mode 100644 index 000000000..77bb5057a --- /dev/null +++ b/Types/OBS.Beat/set_Duration.ps1 @@ -0,0 +1,16 @@ +<# +.SYNOPSIS + Gets the Duration +.DESCRIPTION + Gets the Duration of a Beat +.OUTPUTS + [TimeSpan] +#> +param( +# The new duration. +[timespan] +$Duration +) + +$this.BPM = ( 60000 / $Duration.TotalMilliseconds ) + diff --git a/Types/OBS.Beat/set_Timer.ps1 b/Types/OBS.Beat/set_Timer.ps1 new file mode 100644 index 000000000..98f493d8d --- /dev/null +++ b/Types/OBS.Beat/set_Timer.ps1 @@ -0,0 +1,23 @@ +<# +.SYNOPSIS + Sets the Beat Timer +.DESCRIPTION + Sets the Beat Timer. + + If no timer exists, one is created. Otherwise, the interval is updated. +.OUTPUTS + [TimeSpan] +#> +param( +# The new timer interval. +[timespan] +$Interval +) + +if (-not $this.'.Timer') { + $this | Add-Member NoteProperty '.Timer' ([Timers.Timer]::new($Interval.TotalMilliseconds)) -Force +} else { + $this.'.Timer'.Interval = $Interval.TotalMilliseconds +} + + diff --git a/Types/OBS.GetSourceFilterList.Response/Disable.ps1 b/Types/OBS.Filter/Disable.ps1 similarity index 56% rename from Types/OBS.GetSourceFilterList.Response/Disable.ps1 rename to Types/OBS.Filter/Disable.ps1 index 17cc99a61..fbc689c47 100644 --- a/Types/OBS.GetSourceFilterList.Response/Disable.ps1 +++ b/Types/OBS.Filter/Disable.ps1 @@ -11,7 +11,6 @@ param( [switch] $PassThru ) -$this | Set-OBSSourceFilterEnabled -FilterEnabled:$false -PassThru $PassThru -if (-not $PassThru) { - $this | Add-Member filterEnabled $false -Force -PassThru -} \ No newline at end of file +$this | + Add-Member filterEnabled $false -Force -PassThru | + Set-OBSSourceFilterEnabled -FilterEnabled:$false -PassThru:$PassThru diff --git a/Types/OBS.GetSourceFilterList.Response/Enable.ps1 b/Types/OBS.Filter/Enable.ps1 similarity index 100% rename from Types/OBS.GetSourceFilterList.Response/Enable.ps1 rename to Types/OBS.Filter/Enable.ps1 diff --git a/Types/OBS.Filter/PSTypeName.txt b/Types/OBS.Filter/PSTypeName.txt new file mode 100644 index 000000000..4cb9b58d7 --- /dev/null +++ b/Types/OBS.Filter/PSTypeName.txt @@ -0,0 +1,3 @@ +OBS.GetSourceFilterList.Response +OBS.GetSourceFilter.Response +OBS.Filter \ No newline at end of file diff --git a/Types/OBS.GetSourceFilterList.Response/Remove.ps1 b/Types/OBS.Filter/Remove.ps1 similarity index 100% rename from Types/OBS.GetSourceFilterList.Response/Remove.ps1 rename to Types/OBS.Filter/Remove.ps1 diff --git a/Types/OBS.GetSourceFilterList.Response/Set.ps1 b/Types/OBS.Filter/Set.ps1 similarity index 100% rename from Types/OBS.GetSourceFilterList.Response/Set.ps1 rename to Types/OBS.Filter/Set.ps1 diff --git a/Types/OBS.GetSourceFilterList.Response/get_Enabled.ps1 b/Types/OBS.Filter/get_Enabled.ps1 similarity index 100% rename from Types/OBS.GetSourceFilterList.Response/get_Enabled.ps1 rename to Types/OBS.Filter/get_Enabled.ps1 diff --git a/Types/OBS.GetSourceFilterList.Response/get_Index.ps1 b/Types/OBS.Filter/get_Index.ps1 similarity index 100% rename from Types/OBS.GetSourceFilterList.Response/get_Index.ps1 rename to Types/OBS.Filter/get_Index.ps1 diff --git a/Types/OBS.GetSourceFilterList.Response/get_Kind.ps1 b/Types/OBS.Filter/get_Kind.ps1 similarity index 100% rename from Types/OBS.GetSourceFilterList.Response/get_Kind.ps1 rename to Types/OBS.Filter/get_Kind.ps1 diff --git a/Types/OBS.GetSourceFilterList.Response/get_Settings.ps1 b/Types/OBS.Filter/get_Settings.ps1 similarity index 100% rename from Types/OBS.GetSourceFilterList.Response/get_Settings.ps1 rename to Types/OBS.Filter/get_Settings.ps1 diff --git a/Types/OBS.GetCurrentProgramScene.Response/ToString.ps1 b/Types/OBS.GetCurrentProgramScene.Response/ToString.ps1 new file mode 100644 index 000000000..d5515a80e --- /dev/null +++ b/Types/OBS.GetCurrentProgramScene.Response/ToString.ps1 @@ -0,0 +1 @@ +$this.currentProgramSceneName \ No newline at end of file diff --git a/Types/OBS.GetSourceFilterList.Response/PSTypeName.txt b/Types/OBS.GetSourceFilterList.Response/PSTypeName.txt deleted file mode 100644 index 0075bbb17..000000000 --- a/Types/OBS.GetSourceFilterList.Response/PSTypeName.txt +++ /dev/null @@ -1,2 +0,0 @@ -OBS.GetSourceFilterList.Response -OBS.GetSourceFilter.Response \ No newline at end of file diff --git a/Types/OBS.Input.Color.Source.V3/SetColor.ps1 b/Types/OBS.Input.Color.Source.V3/SetColor.ps1 index 3728850ee..19a4e3be5 100644 --- a/Types/OBS.Input.Color.Source.V3/SetColor.ps1 +++ b/Types/OBS.Input.Color.Source.V3/SetColor.ps1 @@ -1,3 +1,9 @@ +<# +.SYNOPSIS + Sets the color. +.DESCRIPTION + Changes the color of a color source. +#> param( [ValidatePattern('\#(?>[0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})')] [string] diff --git a/Types/OBS.Input/Alias.psd1 b/Types/OBS.Input/Alias.psd1 new file mode 100644 index 000000000..d46333b63 --- /dev/null +++ b/Types/OBS.Input/Alias.psd1 @@ -0,0 +1,5 @@ +@{ + SourceName = 'inputName' + EnableAllFilters = 'EnableAllFilter' + DisableAllFilters = 'DisableAllFilter' +} \ No newline at end of file diff --git a/Types/OBS.Input/DisableAllFilter.ps1 b/Types/OBS.Input/DisableAllFilter.ps1 new file mode 100644 index 000000000..45e5f951a --- /dev/null +++ b/Types/OBS.Input/DisableAllFilter.ps1 @@ -0,0 +1,16 @@ +<# +.SYNOPSIS + Quickly disables all filters +.DESCRIPTION + Quickly disables all filters, except for a list of provided names +#> +param( +# A list of filter names to leave disabled. +[string[]] +$ExceptFilterName +) + +$this.Filters | + Where-Object FilterName -NotIn $ExceptFilterName | + Foreach-Object { $_.Disable($true) } | + Send-OBS diff --git a/Types/OBS.Input/EnableAllFilter.ps1 b/Types/OBS.Input/EnableAllFilter.ps1 new file mode 100644 index 000000000..b3037ec19 --- /dev/null +++ b/Types/OBS.Input/EnableAllFilter.ps1 @@ -0,0 +1,16 @@ +<# +.SYNOPSIS + Quickly enables all filters +.DESCRIPTION + Quickly enables all filters, except for a list of provided names +#> +param( +# A list of filter names to leave disabled. +[string[]] +$ExceptFilterName +) + +$this.Filters | + Where-Object FilterName -NotIn $ExceptFilterName | + Foreach-Object { $_.Enable($true) } | + Send-OBS diff --git a/Types/OBS.GetInputList.Response/Mute.ps1 b/Types/OBS.Input/Mute.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/Mute.ps1 rename to Types/OBS.Input/Mute.ps1 diff --git a/Types/OBS.GetInputList.Response/Next.ps1 b/Types/OBS.Input/Next.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/Next.ps1 rename to Types/OBS.Input/Next.ps1 diff --git a/Types/OBS.Input/PSTypeName.txt b/Types/OBS.Input/PSTypeName.txt new file mode 100644 index 000000000..f39e8e3a2 --- /dev/null +++ b/Types/OBS.Input/PSTypeName.txt @@ -0,0 +1,2 @@ +OBS.GetInputList.Response +OBS.Input diff --git a/Types/OBS.GetInputList.Response/Pause.ps1 b/Types/OBS.Input/Pause.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/Pause.ps1 rename to Types/OBS.Input/Pause.ps1 diff --git a/Types/OBS.GetInputList.Response/Play.ps1 b/Types/OBS.Input/Play.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/Play.ps1 rename to Types/OBS.Input/Play.ps1 diff --git a/Types/OBS.GetInputList.Response/Previous.ps1 b/Types/OBS.Input/Previous.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/Previous.ps1 rename to Types/OBS.Input/Previous.ps1 diff --git a/Types/OBS.GetInputList.Response/Remove.ps1 b/Types/OBS.Input/Remove.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/Remove.ps1 rename to Types/OBS.Input/Remove.ps1 diff --git a/Types/OBS.GetInputList.Response/Restart.ps1 b/Types/OBS.Input/Restart.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/Restart.ps1 rename to Types/OBS.Input/Restart.ps1 diff --git a/Types/OBS.GetInputList.Response/Stop.ps1 b/Types/OBS.Input/Stop.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/Stop.ps1 rename to Types/OBS.Input/Stop.ps1 diff --git a/Types/OBS.GetInputList.Response/Unmute.ps1 b/Types/OBS.Input/Unmute.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/Unmute.ps1 rename to Types/OBS.Input/Unmute.ps1 diff --git a/Types/OBS.GetInputList.Response/get_CurrentTime.ps1 b/Types/OBS.Input/get_CurrentTime.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/get_CurrentTime.ps1 rename to Types/OBS.Input/get_CurrentTime.ps1 diff --git a/Types/OBS.GetInputList.Response/get_Filters.ps1 b/Types/OBS.Input/get_Filters.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/get_Filters.ps1 rename to Types/OBS.Input/get_Filters.ps1 diff --git a/Types/OBS.GetInputList.Response/get_MonitorType.ps1 b/Types/OBS.Input/get_MonitorType.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/get_MonitorType.ps1 rename to Types/OBS.Input/get_MonitorType.ps1 diff --git a/Types/OBS.Input/get_SceneItem.ps1 b/Types/OBS.Input/get_SceneItem.ps1 new file mode 100644 index 000000000..e94339b31 --- /dev/null +++ b/Types/OBS.Input/get_SceneItem.ps1 @@ -0,0 +1,11 @@ +<# +.SYNOPSIS + Gets an input's scene items +.DESCRIPTION + Gets the scene items associated with an input. +#> +Get-obsscene | + Select-Object -ExpandProperty Scenes | + Get-OBSSceneItem | + Where-Object SourceName -EQ $this.InputName | + Where-Object InputKind -EQ $this.InputKind \ No newline at end of file diff --git a/Types/OBS.GetInputList.Response/get_Settings.ps1 b/Types/OBS.Input/get_Settings.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/get_Settings.ps1 rename to Types/OBS.Input/get_Settings.ps1 diff --git a/Types/OBS.GetInputList.Response/get_Status.ps1 b/Types/OBS.Input/get_Status.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/get_Status.ps1 rename to Types/OBS.Input/get_Status.ps1 diff --git a/Types/OBS.GetInputList.Response/get_Volume.ps1 b/Types/OBS.Input/get_Volume.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/get_Volume.ps1 rename to Types/OBS.Input/get_Volume.ps1 diff --git a/Types/OBS.GetInputList.Response/set_CurrentTime.ps1 b/Types/OBS.Input/set_CurrentTime.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/set_CurrentTime.ps1 rename to Types/OBS.Input/set_CurrentTime.ps1 diff --git a/Types/OBS.GetInputList.Response/set_MonitorType.ps1 b/Types/OBS.Input/set_MonitorType.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/set_MonitorType.ps1 rename to Types/OBS.Input/set_MonitorType.ps1 diff --git a/Types/OBS.GetInputList.Response/set_Settings.ps1 b/Types/OBS.Input/set_Settings.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/set_Settings.ps1 rename to Types/OBS.Input/set_Settings.ps1 diff --git a/Types/OBS.GetInputList.Response/set_Volume.ps1 b/Types/OBS.Input/set_Volume.ps1 similarity index 100% rename from Types/OBS.GetInputList.Response/set_Volume.ps1 rename to Types/OBS.Input/set_Volume.ps1 diff --git a/Types/OBS.PowerShell/Alias.psd1 b/Types/OBS.PowerShell/Alias.psd1 new file mode 100644 index 000000000..41cb2f23e --- /dev/null +++ b/Types/OBS.PowerShell/Alias.psd1 @@ -0,0 +1,3 @@ +@{ + Stats = 'Statistics' +} \ No newline at end of file diff --git a/Types/OBS.PowerShell/get_Beat.ps1 b/Types/OBS.PowerShell/get_Beat.ps1 new file mode 100644 index 000000000..42e905ced --- /dev/null +++ b/Types/OBS.PowerShell/get_Beat.ps1 @@ -0,0 +1,14 @@ +<# +.SYNOPSIS + Gets the Beat +.DESCRIPTION + Gets the Beat Controller for obs-powershell. + + The beat controller allows you to control effects on a beat. +#> +if (-not $this.'.Beat') { + $this | Add-Member NoteProperty '.Beat' ([PSCustomObject]@{ + PSTypeName = "OBS.Beat" + }) -Force +} +return $this.'.Beat' \ No newline at end of file diff --git a/Types/OBS.PowerShell/get_Connection.ps1 b/Types/OBS.PowerShell/get_Connection.ps1 new file mode 100644 index 000000000..a76a2dd3c --- /dev/null +++ b/Types/OBS.PowerShell/get_Connection.ps1 @@ -0,0 +1 @@ +& $this { $script:OBSConnections } \ No newline at end of file diff --git a/Types/OBS.PowerShell/get_Process.ps1 b/Types/OBS.PowerShell/get_Process.ps1 new file mode 100644 index 000000000..29604a42c --- /dev/null +++ b/Types/OBS.PowerShell/get_Process.ps1 @@ -0,0 +1,4 @@ +Get-Process obs* | + Sort-Object { $_.Name -in 'obs', 'obs64', 'obs32' } | + Where-Object Name -in 'obs', 'obs64', 'obs32' + \ No newline at end of file diff --git a/Types/OBS.PowerShell/get_Stats.ps1 b/Types/OBS.PowerShell/get_Statistics.ps1 similarity index 100% rename from Types/OBS.PowerShell/get_Stats.ps1 rename to Types/OBS.PowerShell/get_Statistics.ps1 diff --git a/Types/OBS.Powershell.Effect.Command/get_EffectName.ps1 b/Types/OBS.Powershell.Effect.Command/get_EffectName.ps1 index e67388205..aeccb669a 100644 --- a/Types/OBS.Powershell.Effect.Command/get_EffectName.ps1 +++ b/Types/OBS.Powershell.Effect.Command/get_EffectName.ps1 @@ -1,3 +1,9 @@ +<# +.SYNOPSIS + Gets the Effect Name +.DESCRIPTION + Gets the name of an Effect. +#> $obsEffectsPattern = [Regex]::new(' (?> ^OBS.(?>fx|effects?)\p{P} diff --git a/Types/OBS.GetSceneItemList.Response/Alias.psd1 b/Types/OBS.SceneItem/Alias.psd1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Alias.psd1 rename to Types/OBS.SceneItem/Alias.psd1 diff --git a/Types/OBS.GetSceneItemList.Response/Animate.ps1 b/Types/OBS.SceneItem/Animate.ps1 similarity index 98% rename from Types/OBS.GetSceneItemList.Response/Animate.ps1 rename to Types/OBS.SceneItem/Animate.ps1 index cff209ce8..491eb2554 100644 --- a/Types/OBS.GetSceneItemList.Response/Animate.ps1 +++ b/Types/OBS.SceneItem/Animate.ps1 @@ -72,7 +72,7 @@ filter ToScale { $nextTimeSpan = [timespan]0 -$keyNames = 'positionX', 'positionY', 'scaleX','scaleY', 'cropBottom', 'cropLeft', 'cropRight', 'cropTop', 'rotation' +$keyNames = 'boundsWidth','boundsHeight','positionX', 'positionY', 'scaleX','scaleY', 'cropBottom', 'cropLeft', 'cropRight', 'cropTop', 'rotation' $keyAliases = [Ordered]@{'Rotate'='rotation'} $duplicatedKeyAliases = [Ordered]@{ 'position' = 'positionX', 'positionY' diff --git a/Types/OBS.GetSceneItemList.Response/Blend.ps1 b/Types/OBS.SceneItem/Blend.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Blend.ps1 rename to Types/OBS.SceneItem/Blend.ps1 diff --git a/Types/OBS.SceneItem/Center.ps1 b/Types/OBS.SceneItem/Center.ps1 new file mode 100644 index 000000000..0d7b4752a --- /dev/null +++ b/Types/OBS.SceneItem/Center.ps1 @@ -0,0 +1,37 @@ +<# +.SYNOPSIS + Centers a scene item +.DESCRIPTION + Sets the scene item alignment to center +.NOTES + Also corrects the position so that the image does not only appear in a quadrant. + + If a boolean argument is passed, and it is true, then this will PassThru instead of run. + (this can be used for animations) + + If an explicit null argument is passed, then the command will not wait for an OBS response. + (this will be slightly faster) +#> +param() + +$passingThru = $false +$NoResponse = $false + +foreach ($arg in $args) { + if ($arg -is [bool]) { + if ($arg) { + $passingThru= $true + } + } + if ($null -eq $arg) { + $NoResponse = $true + } +} + +$sceneItemTransform = $this | Get-OBSSceneItemTransform + +$sceneItemTransform.alignment = 0 # 0 means center +$sceneItemTransform.positionX = $sceneItemTransform.boundsWidth/2 +$sceneItemTransform.positionY = $sceneItemTransform.boundsHeight/2 + +$this | Set-OBSSceneItemTransform -SceneItemTransform $sceneItemTransform -PassThru:$passingThru -NoResponse:$NoResponse \ No newline at end of file diff --git a/Types/OBS.GetSceneItemList.Response/Crop.ps1 b/Types/OBS.SceneItem/Crop.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Crop.ps1 rename to Types/OBS.SceneItem/Crop.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/Delete.ps1 b/Types/OBS.SceneItem/Delete.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Delete.ps1 rename to Types/OBS.SceneItem/Delete.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/Disable.ps1 b/Types/OBS.SceneItem/Disable.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Disable.ps1 rename to Types/OBS.SceneItem/Disable.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/Enable.ps1 b/Types/OBS.SceneItem/Enable.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Enable.ps1 rename to Types/OBS.SceneItem/Enable.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/FitToScreen.ps1 b/Types/OBS.SceneItem/FitToScreen.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/FitToScreen.ps1 rename to Types/OBS.SceneItem/FitToScreen.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/Lock.ps1 b/Types/OBS.SceneItem/Lock.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Lock.ps1 rename to Types/OBS.SceneItem/Lock.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/Move.ps1 b/Types/OBS.SceneItem/Move.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Move.ps1 rename to Types/OBS.SceneItem/Move.ps1 diff --git a/Types/OBS.SceneItem/PSTypeName.txt b/Types/OBS.SceneItem/PSTypeName.txt new file mode 100644 index 000000000..44fed8756 --- /dev/null +++ b/Types/OBS.SceneItem/PSTypeName.txt @@ -0,0 +1,3 @@ +OBS.GetSceneItemList.Response +OBS.GetSceneItemId.Response +OBS.SceneItem \ No newline at end of file diff --git a/Types/OBS.GetSceneItemList.Response/Remove.ps1 b/Types/OBS.SceneItem/Remove.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Remove.ps1 rename to Types/OBS.SceneItem/Remove.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/Rotate.ps1 b/Types/OBS.SceneItem/Rotate.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Rotate.ps1 rename to Types/OBS.SceneItem/Rotate.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/Scale.ps1 b/Types/OBS.SceneItem/Scale.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Scale.ps1 rename to Types/OBS.SceneItem/Scale.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/SetZIndex.ps1 b/Types/OBS.SceneItem/SetZIndex.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/SetZIndex.ps1 rename to Types/OBS.SceneItem/SetZIndex.ps1 diff --git a/Types/OBS.SceneItem/Stretch.ps1 b/Types/OBS.SceneItem/Stretch.ps1 new file mode 100644 index 000000000..381d8a325 --- /dev/null +++ b/Types/OBS.SceneItem/Stretch.ps1 @@ -0,0 +1,52 @@ +<# +.SYNOPSIS + Stretches a scene item +.DESCRIPTION + Stretches a scene item by changing it's bounds. +#> +param() + +$PassingThru = $false +$allArguments = @($args) +$animateArguments = @( +foreach ($arg in $allArguments) { + if ($arg -is [double] -or $arg -is [int] -or + ($arg -is [string] -and $arg -match '\%$') + ) { + $scale = $arg + @{scaleX=$scale;scaleY=$scale} + } + elseif ($arg -as [timespan]) { + $arg + } elseif ($arg -is [bool]) { + if ($arg) { + $PassingThru = $true + } + $arg + } else { + $scaleInfo = @{} + + if ($null -ne $arg.Width) { + $scaleInfo.boundsWidth = $arg.Width + } + elseif ($null -ne $arg.X) { + $scaleInfo.boundsWidth = $arg.X + } + + if ($null -ne $arg.Height) { + $scaleInfo.boundsHeight = $arg.Height + } + elseif ($null -ne $arg.Y) { + $scaleInfo.boundsHeight = $arg.Y + } + + if ($scaleInfo.Count) { + $scaleInfo + } else { + $arg + } + } +}) + +$this | Set-OBSSceneItemTransform -SceneItemTransform @{boundsType='OBS_BOUNDS_STRETCH'} -NoResponse -PassThru:$PassingThru +$this.Animate.Invoke($animateArguments) diff --git a/Types/OBS.GetSceneItemList.Response/Unlock.ps1 b/Types/OBS.SceneItem/Unlock.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/Unlock.ps1 rename to Types/OBS.SceneItem/Unlock.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/get_BlendMode.ps1 b/Types/OBS.SceneItem/get_BlendMode.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/get_BlendMode.ps1 rename to Types/OBS.SceneItem/get_BlendMode.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/get_Enabled.ps1 b/Types/OBS.SceneItem/get_Enabled.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/get_Enabled.ps1 rename to Types/OBS.SceneItem/get_Enabled.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/get_Filters.ps1 b/Types/OBS.SceneItem/get_Filters.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/get_Filters.ps1 rename to Types/OBS.SceneItem/get_Filters.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/get_ImageHeight.ps1 b/Types/OBS.SceneItem/get_ImageHeight.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/get_ImageHeight.ps1 rename to Types/OBS.SceneItem/get_ImageHeight.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/get_ImageWidth.ps1 b/Types/OBS.SceneItem/get_ImageWidth.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/get_ImageWidth.ps1 rename to Types/OBS.SceneItem/get_ImageWidth.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/get_Input.ps1 b/Types/OBS.SceneItem/get_Input.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/get_Input.ps1 rename to Types/OBS.SceneItem/get_Input.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/get_Layer.ps1 b/Types/OBS.SceneItem/get_Layer.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/get_Layer.ps1 rename to Types/OBS.SceneItem/get_Layer.ps1 diff --git a/Types/OBS.GetSceneItemList.Response/get_ZIndex.ps1 b/Types/OBS.SceneItem/get_ZIndex.ps1 similarity index 100% rename from Types/OBS.GetSceneItemList.Response/get_ZIndex.ps1 rename to Types/OBS.SceneItem/get_ZIndex.ps1 diff --git a/allcommands.ps1 b/allcommands.ps1 new file mode 100644 index 000000000..8e1a50ddc --- /dev/null +++ b/allcommands.ps1 @@ -0,0 +1,61164 @@ +### DO NOT EDIT THIS FILE DIRECTLY ### + +#.ExternalHelp obs-powershell-Help.xml +function Clear-OBSScene +{ + + [CmdletBinding(SupportsShouldProcess,ConfirmImpact='High')] + param( + # Name of the scene. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $SceneName + ) + + process { + if ($PSCmdlet.ShouldProcess("Clear $sceneName")) { + Get-OBSSceneItem -SceneName $SceneName | + Remove-OBSSceneItem + } + } +} +#.ExternalHelp obs-powershell-Help.xml +function Connect-OBS +{ + + [CmdletBinding(DefaultParameterSetName='ExistingConnections')] + param( + # The OBS websocket URL. If not provided, this will default to loopback on port 4455. + [Parameter(ValueFromPipelineByPropertyName,ParameterSetName='NewConnection')] + [ValidateScript({ + if ($_.Scheme -ne 'ws') { + throw "Not a websocket uri" + } + return $true + })] + [uri] + $WebSocketUri = "ws://$([ipaddress]::Loopback):4455", + + # A randomly generated password used to connect to OBS. + # You can see the websocket password in Tools -> obs-websocket settings -> show connect info + [Parameter(ValueFromPipelineByPropertyName,ParameterSetName='NewConnection')] + [Alias('WebSocketPassword')] + [string] + $WebSocketToken + ) + + + begin { + if ($home) { + $obsPowerShellRoot = Join-Path $home '.obs-powershell' + } + } + + process { + if ($PSCmdlet.ParameterSetName -eq 'NewConnection') { + $connectionExists = $script:ObsConnections[$WebSocketUri] + if ($connectionExists -and + $connectionExists.State -eq 'Running' -and + $connectionExists.WebSocket.State -eq 'Open' + ) { + $connectionExists + Write-Verbose "Already connected" + return + } + + Watch-OBS @PSBoundParameters + return + } + elseif ($PSCmdlet.ParameterSetName -eq 'ExistingConnections') { + if ($script:ObsConnections.Count) { + $script:ObsConnections.Values + } else { + $storedSockets = Get-ChildItem -path $obsPowerShellRoot -ErrorAction SilentlyContinue -Filter *.obs-websocket.clixml + + if (-not $storedSockets) { + [PSCustomObject][Ordered]@{ + PSTypeName = 'obs-powershell.not.connected' + Message = 'No connections to OBS. Use Connect-OBS to connect.' + } + } else { + $storedSockets | + Import-Clixml | + Watch-OBS + } + } + } + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Disconnect-OBS +{ + + param() + + process { + if ($script:ObsConnections.Values) { + foreach ($connection in $script:ObsConnections.Values) { + if ($connection.WebSocket.State -eq 'Open') { + $null = $connection.WebSocket.CloseAsync('NormalClosure', "obs-powershell $pid disconnecting", [Threading.CancellationToken]::new($false)) + } + } + $script:ObsConnections.Values | Stop-Job + $script:ObsConnections.Values | Remove-Job + } + if ($script:ObsConnections) { + $script:ObsConnections.Clear() + } + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBS +{ + + param() + + $script:OBS +} + +#.ExternalHelp obs-powershell-Help.xml +function Hide-OBS { + + [CmdletBinding(SupportsShouldProcess,ConfirmImpact='Medium')] + param( + # The name of the item we want to Hide + [Parameter(Mandatory,ValueFromPipelineByPropertyName)] + [Alias('SourceName','InputName')] + $ItemName, + + # The name of the scene. If not provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $SceneName + ) + + process { + # If no scene was provided + if (-not $SceneName) { + # find the current program scene + $sceneName = Get-OBSCurrentProgramScene + } + + # Walk over all items in the scene + foreach ($sceneItem in Get-OBSSceneItem -SceneName $SceneName) { + # If the match our wildcard and we confirm, remove it. + if ($sceneItem.SourceName -like $ItemName -and + $PSCmdlet.ShouldProcess("Hide input $($sceneItem.SourceName)")) { + # Hide it. + $sceneItem | Set-OBSSceneItemEnabled -SceneItemEnabled:$false + } + } + } +} + + +#.ExternalHelp obs-powershell-Help.xml +function Receive-OBS +{ + + [CmdletBinding(DefaultParameterSetName='WaitForResponse')] + param( + # The message data that has been received + [Parameter(ValueFromPipeline)] + $MessageData, + + # If set will wait for a response from the message and expand the results. + [Parameter(ParameterSetName='WaitForResponse')] + [switch] + $WaitForReponse, + + # If set, will responsd to known events, like 'hello', and resend other events as PowerShell events + [Parameter(ParameterSetName='SendEvent')] + [Alias('Resend')] + [switch] + $SendEvent, + + # The OBS websocket URL. If not provided, this will default to loopback on port 4455. + [Parameter(Mandatory,ParameterSetName='SendEvent')] + [Alias('WebSocketURL')] + [uri] + $WebSocketURI = "ws://$([ipaddress]::Loopback):4455", + + # A randomly generated password used to connect to OBS. + # You can see the websocket password in Tools -> obs-websocket settings -> show connect info + [Parameter(Mandatory,ParameterSetName='SendEvent')] + [Alias('WebSocketPassword')] + [string] + $WebSocketToken + ) + + begin { + function OBSIdentify { + $secret = "$webSocketToken$($messageData.d.authentication.salt)" + $enc = [Security.Cryptography.SHA256Managed]::new() + $secretSalted64 = [Convert]::ToBase64String( + $enc.ComputeHash([Text.Encoding]::ascii.GetBytes($secret) + )) + + $saltedSecretAndChallenge = "$secretSalted64$( + $messageData.d.authentication.challenge + )" + + $enc = [Security.Cryptography.SHA256Managed]::new() + $challenge64 = [Convert]::ToBase64String( + $enc.ComputeHash([Text.Encoding]::ascii.GetBytes( + $saltedSecretAndChallenge + )) + ) + + $identifyMessage = [Ordered]@{ + op = 1 + d = [Ordered]@{ + rpcVersion = 1 + authentication = $challenge64 + } + } + $PayloadJson = $identifyMessage | ConvertTo-Json -Compress + $SendSegment = [ArraySegment[Byte]]::new([Text.Encoding]::UTF8.GetBytes($PayloadJson)) + $null = $Websocket.SendAsync($SendSegment,'Text', $true, [Threading.CancellationToken]::new($false)) + } + + if ($home) { + $obsPowerShellRoot = Join-Path $home '.obs-powershell' + } + } + + process { + $payloadObject = $MessageData + + if ($PSCmdlet.ParameterSetName -eq 'WaitForResponse') { + $myRequestId = $payloadObject.d.requestID + $myRequestType = $payloadObject.d.requestType + if (-not $myRequestId) { + Write-Error "No .RequestID to wait for" + return + } + + # Normally, we can just wait for the event + $eventResponse = Wait-Event -SourceIdentifier $myRequestId -Timeout 1 | + Select-Object -ExpandProperty MessageData + + # however, if we are in the event pump we need to look at the output of the connection. + if (-not $eventResponse -and + $obsConnection -is [Management.Automation.Job]) { + for ($outputIndex = $obsConnection.Output.Count - 1; $outputIndex -ge 0; $outputIndex--) { + $obsOutput = $obsConnection.Output[$outputIndex] + if ($obsOutput.SourceIdentifier -eq $myRequestId) { + $eventResponse = $obsOutput.MessageData + break + } + } + } + + if ($eventResponse -is [Management.Automation.ErrorRecord]) { + if ($eventResponse.Exception.Message) { + Write-Error -ErrorRecord $eventResponse + } + return + } + + if ($null -eq $eventResponse) { return } + # Collect all properties from the response + $eventResponseProperties = @($eventResponse.psobject.properties) + + $expandedResponse = + # If there was only one property + if ($eventResponseProperties.Length -eq 1) { + $typeName = "$($eventResponseProperties.TypeNameOfValue)" + # and it was a string, array, or PSCustomObject + if ($typeName -eq 'System.String' -or $typeName -eq 'System.Object[]' -or $typeName -eq 'System.Management.Automation.PSCustomObject') { + # expand it + $eventResponse.psobject.properties.value + } else { + # otherwise, return it as is. + $eventResponse + } + } else { + $eventResponse + } + + + # Now walk thru each response and expand / decorate it + foreach ($responseObject in $expandedResponse) { + # If there was no response, move on. + if ($null -eq $responseObject) { + continue + } + # If the response is a string and it's the same as the request type + if ($responseObject -is [string] -and $responseObject -eq $myRequestType) { + continue # ignore it + } + # otherwise, if the response looks like a file + elseif ($responseObject -is [string] -and + $responseObject -match '^(?:\p{L}\:){0,1}[\\/]') { + $fileName = $responseObject -replace '[\\/]', ([io.path]::DirectorySeparatorChar) + if (Test-Path $fileName) { + $responseObject = Get-Item -LiteralPath $fileName + } + } + + # Otherwise, create a new PSObject out of the response + $responseObject = [PSObject]::new($responseObject) + + # If the response is not a string + if ($responseObject -isnot [string]) { + # clear the typename. + $responseObject.pstypenames.clear() + } + + if ($responseObject.inputKind) { + $responseObject.pstypenames.add("OBS.Input.$($responseObject.inputKind -replace '_', '.')") + } + # Decorate the response with the command name and OBS.requestype.response + $responseObject.pstypenames.add("$myCmd") + $responseObject.pstypenames.add("OBS.$myRequestType.Response") + + # Now, walk thru all properties in our input payload + foreach ($keyValue in $paramCopy.GetEnumerator()) { + # If they were not in our output + if (-not $responseObject.psobject.properties[$keyValue.Key]) { + # add them + $responseObject.psobject.properties.add( + [psnoteproperty]::new($keyValue.Key, $keyValue.Value) + ) + } + + # Doing this will make it easier to pipe one step to another + # and make results more useful. + } + + # finally, emit our response object + $responseObject + } + } + + if ($PSCmdlet.ParameterSetName -eq 'SendEvent') { + if (-not $script:ObsConnections[$webSocketUri]) { + Write-Error "Not connected to '$webSocketUri'" + return + } + + $MessageData.pstypenames.insert(0,'OBS.WebSocket.Message') + $newEventSplat = @{} + + if ($messageData.op -eq 0 -and $messageData.d.authentication) { + . OBSIdentify + } + + $newEventSplat.SourceIdentifier = 'OBS.WebSocket.Message' + $newEventSplat.MessageData = $MessageData + + New-Event @newEventSplat + + if ($messageData.op -eq 2 -and + $obsPowerShellRoot) { + $obsConnectedFileName = $webSocketUri.DnsSafeHost + '_' + $webSocketUri.Port + if (-not (Test-Path $obsPowerShellRoot)) { + $null = New-Item -ItemType Directory -Path $obsPowerShellRoot + } + $obsConnectionFile = + Join-Path $obsPowerShellRoot "$obsConnectedFileName.obs-websocket.clixml" + + if (Test-Path $obsConnectionFile) { + $fileData = Import-Clixml $obsConnectionFile + $fileData.WebSocketToken = $WebSocketToken + $fileData.WebSocketUri = $webSocketUri + $fileData | Export-Clixml -Path $obsConnectionFile + } else { + [PSCustomObject][Ordered]@{ + PSTypeName = 'OBS.PowerShell.Connection.Info' + WebSocketToken = $WebSocketToken + WebSocketUri = $webSocketUri + } | Export-Clixml -Path $obsConnectionFile + } + + + } + + if ($messageData.op -eq 5) { + $newEventSplat = @{} + $newEventSplat.SourceIdentifier = "OBS.Event.$($messageData.d.eventType)" + if ($messageData.d.eventData) { + $newEventSplat.MessageData = [PSObject]::new($messageData.d.eventData) + $newEventSplat.MessageData.pstypenames.insert(0,"OBS.$($MessageData.d.eventType).response") + $newEventSplat.MessageData.pstypenames.insert(0,"$($newEventSplat.SourceIdentifier)") + } + New-Event @newEventSplat + } + + # A message with the opcode of 7 is an event response. + if ($messageData.op -eq 7) { + $newEventSplat = @{} + # For event responses, we want to send another event using the requestID. + $newEventSplat.SourceIdentifier = $MessageData.d.requestId + # If there was response data + if ($messageData.d.responseData) { + # create a new object with that data + $newEventSplat.MessageData = [PSObject]::new($MessageData.d.responseData) + # and decorate it's return + $newEventSplat.MessageData.pstypenames.insert(0,"OBS.$($MessageData.d.requestType).response") + $newEventSplat.MessageData.pstypenames.insert(0,"$($newEventSplat.SourceIdentifier)") + } + # Otherwise, if the request failed + elseif ($messageData.d.requestStatus.result -eq $false) + { + # Our message will be an error record. + $newEventSplat.MessageData = + [Management.Automation.ErrorRecord]::new( + # using the comment as the error message + [Exception]::new($MessageData.d.requestStatus.comment), + ($messageData.d.requestId -replace '\.[0-9a-f\-]+$') + ".$($MessageData.d.requestStatus.code)", 'NotSpecified', $messageData + ) + + $newEventSplat.MessageData.pstypenames.insert(0,"OBS.$($MessageData.d.requestType).error") + $newEventSplat.MessageData.pstypenames.insert(0,"$($newEventSplat.SourceIdentifier).error") + } + New-Event @newEventSplat + } + } + + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Remove-OBS { + + [CmdletBinding(SupportsShouldProcess,ConfirmImpact='High')] + param( + # The name of the item we want to remove + [Parameter(Mandatory,ValueFromPipelineByPropertyName)] + [Alias('SourceName','InputName','SceneName')] + $ItemName + ) + + process { + # If we remove an input, we don't want to remove a scene + $removedAnInput = $false + # Go over each input + foreach ($obsInput in Get-OBSInput) { + # If it matches our wildcard and we confirm + if ($obsInput.InputName -like $ItemName -and + $PSCmdlet.ShouldProcess("Remove input $($obsInput.InputName)")) { + # remove it. + Remove-OBSInput -InputName $obsInput.InputName + $removedAnInput = $true + } + } + + # Return if we removed an input. + if ($removedAnInput) { return } + + # Go over all scenes + foreach ($obsScene in (Get-OBSScene).Scenes) { + # If the name matches our wildcard and we confirm + if ($obsScene.SceneName -like $ItemName -and + $PSCmdlet.ShouldProcess("Remove scene $($obsScene.SceneName)")) { + # remove the scene. + Remove-OBSScene -SceneName $obsScene.SceneName + } + } + } +} +#.ExternalHelp obs-powershell-Help.xml +function Send-OBS +{ + + param( + # The data to send to the obs websocket. + [Parameter(ValueFromPipeline,ValueFromPipelineByPropertyName)] + [Alias('Payload')] + $MessageData, + + # If provided, will sleep after each step. + # If -StepTime is less than 10000 ticks, it will be treated as frames per second. + # If -SerialFrame was provied, -StepTime will be the number of frames to wait. + [Parameter(ValueFromPipelineByPropertyName)] + [timespan] + $StepTime, + + # If set, will process a batch of requests in parallel. + [switch] + $Parallel, + + # If set, will process a batch of requests in parallel. + [switch] + $SerialFrame, + + # If set, will receive responses from batches of requests. + [Alias('ReceiveBatches')] + [switch] + $ReceiveBatch, + + # If set, will never attempt to receive a response. + [Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] + [switch] + $NoResponse + ) + + begin { + $allMessages = [Collections.Queue]::new() + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + if (-not $script:ObsWebSockets) { + $script:ObsWebSockets = [Ordered]@{} + } + + function SendSingleMessageToOBS { + param( + [Parameter(ValueFromPipeline)] + $payloadObject + ) + + process { + if ($null -eq $payloadObject.op) { + if ($payloadObject.requestID) { + $payloadObject = [Ordered]@{ + op = 6 + d = $payloadObject + } + } + elseif ($payloadObject.authentication) { + $payloadObject = [Ordered]@{ + op = 1 + d = $payloadObject + } + } + else { + Write-Verbose "No payload provided, broadcasting event" + $myRequestType = 'BroadcastCustomEvent' + + # If we don't have a request counter for this request type + if (-not $script:ObsRequestsCounts[$myRequestType]) { + # initialize it to zero. + $script:ObsRequestsCounts[$myRequestType] = 0 + } + # Increment the counter for requests of this type + $script:ObsRequestsCounts[$myRequestType]++ + + # and make a request ID from that. + $myRequestId = "$myRequestType.$($script:ObsRequestsCounts[$myRequestType])" + + $payloadObject = [Ordered]@{ + op = 6 + d = [Ordered]@{ + requestId = $myRequestId + requestType = $myRequestType + eventData = $payloadObject + } + } + } + } + $PayloadJson = ConvertTo-Json -Depth 100 -InputObject $payloadObject + + + # And create a byte segment to send it off. + $SendSegment = [ArraySegment[Byte]]::new([Text.Encoding]::UTF8.GetBytes($PayloadJson)) + + # If we have no OBS connections + if (-not $script:ObsConnections.Values) { + # error out + Write-Error "Not connected to OBS. Use Connect-OBS." + return + } + # Otherwise, walk over each connection + foreach ($obsConnectionInfo in @($script:ObsConnections.GetEnumerator())) { + $obsConnection = $obsConnectionInfo.Value + $OBSWebSocketUri = $obsConnectionInfo.Key + $OBSWebSocket = $obsConnection.Websocket + if ($VerbosePreference -notin 'silentlyContinue', 'ignore') { + Write-Verbose "Sending $payloadJSON" + } + + # In event-driven contexts, the websocket attachment may not work due to the accessibility of ScriptMethods. + if ($OBSWebSocket -eq $null) { + # to work around this, we can find our websocket by looking at the event it generated on connection + if (-not $script:OBSWebSockets[$OBSWebSocketUri] -or $script:OBSWebSockets[$OBSWebSocketUri].State -ne 'Open') { + $webSocketEvents = @(Get-Event -SourceIdentifier obs.powershell.websocket) + [Array]::Reverse($webSocketEvents) + foreach ($webSocketEvent in $webSocketEvents) { + if ($webSocketEvent.MessageData.Uri -eq $OBSWebSocketUri -and + $webSocketEvent.WebSocket.State -eq 'Open' + ) { + # Once we find an open socket, cache it. + $script:OBSWebSockets[$webSocketEvent.MessageData.Uri] = $webSocketEvent.MessageData.WebSocket + break + } + } + } + # set the socket to what is in the cache. + $OBSWebSocket = $script:OBSWebSockets[$OBSWebSocketUri] + + # If there was still no socket + if (-not $OBSWebSocket) { + # write an error + Write-Error "No websocket for $obsWebSocketUri" + continue # and continue. + } + } + # Since we have a working websocket, send the payload to it. + $null = $OBSWebSocket.SendAsync($SendSegment,'Text', $true, [Threading.CancellationToken]::new($false)) + # If a response was expected (and we did explicitly say to ignore responses) + if ($payloadObject.d.requestID -and + (-not $NoResponse) + ) { + if ($payloadObject.op -ne 8 -or $ReceiveBatch) { + $payloadObject | . Receive-OBS + } + } + } + } + } + } + + process { + foreach ($message in $MessageData) { + if ($null -eq $message) { continue } + $allMessages.Enqueue($Message) + if ($StepTime.TotalMilliseconds -gt 0) { + if ($SerialFrame) { + $allMessages.Enqueue([PSCustomObject][Ordered]@{ + requestType = 'Sleep' + requestData = @{ + sleepFrames = [int]$StepTime.Ticks + } + }) + } else { + if ($StepTime.Ticks -lt 10000) { + $StepTime = [TimeSpan]::FromMilliseconds(1000 / $StepTime.Ticks) + } + $allMessages.Enqueue([PSCustomObject][Ordered]@{ + requestType = 'Sleep' + requestData = @{ + sleepMillis = [int]$StepTime.TotalMilliseconds + } + }) + } + } + } + + } + + end { + if ($allMessages.Count -eq 1) { + $payloadObject = $allMessages[0] + $payloadObject | SendSingleMessageToOBS + } + elseif ($allMessages.Count -gt 0 -and $allMessages.ToArray().RequestType) { + if (-not $script:ObsRequestsCounts["Batch"]) { + $script:ObsRequestsCounts["Batch"] = 0 + } + $script:ObsRequestsCounts["Batch"]++ + + [PSCustomObject]@{ + op = 8 + d = [Ordered]@{ + requestId = "Batch.$([guid]::NewGuid())" + executionType = if ($Parallel) { + 2 + } elseif ($SerialFrame) { + 1 + } else { + 0 + } + requests = $allMessages.ToArray() + } + } | SendSingleMessageToOBS + } + else { + $allMessages | SendSingleMessageToOBS + } + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Show-OBS { + + param( + # The path or URI to show in OBS. + [Parameter(Mandatory,ValueFromPipelineByPropertyName)] + [Alias('FullName','Src', 'Uri','FileName')] + [string] + $FilePath, + + # The name of the source in OBS. + # If this is not provided, it will be derived from the -FilePath. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Name, + + # A root path. + # If not provided, this will be the root of the -FilePath (if it is a filepath). + # If the file path was a URI, the root path will be ignored. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $RootPath, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The opacity to use for the input. + # If not provided, will default to 2/3rds. + # Will only be used when showing a browser source with a -FilePath + [Parameter(ValueFromPipelineByPropertyName)] + [double] + $Opacity = (2/3), + + # Any parameters to pass to the source command. + [Parameter(ValueFromPipelineByPropertyName)] + [Collections.IDictionary] + $SourceParameter = [ordered]@{}, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force, + + # If set, will make the input become the size of the screen. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $FitToScreen + ) + + begin { + filter FitToScreenAndOutput { + if ($FitToScreen -and $_.FitToScreen) { + $_.FitToScreen() + } + $_ + } + } + + process { + # If we had a -RootPath + if ($RootPath) { + # Look in the root path + $imageFiles = @(Get-ChildItem $RootPath -Recurse -File| + # For files like this keyword + Where-Object FullName -like "*$filePath*" | + # that are extensions we could show + Where-Object Extension -in '.html', '.jpg', '.jpeg', '.gif', '.apng', '.png' + ) + if ($imageFiles.Count) { + $FilePath = ($imageFiles | Get-Random).FullName + } + } + + + + # Determine if the thing we are showing will be a ffmpeg source. + $IsMediaSource = + # If it's an http path, it's not + if ($FilePath -like 'http*') { + $false + } elseif ( + # If it's an HTML-friendly path, it's not + $FilePath -match '.(?>html?|gif|jpe?g|a?png|svg)$' + ) { + $false + } else { + # Otherwise, let's give it a try. + $true + } + + if (-not $RootPath -and $filePath -notlike 'http*') { + $RootPath = "$($FilePath | Split-Path)" + } + + # If we provided a scene + if ($Scene) { + # pass it down. + $SourceParameter.Scene = $Scene + } + + # If we provided a name + if ($Name) { + # pass it down. + $SourceParameter.Name = $Name + } + + # If we want to use -Force + if ($Force) { + # pass it down + $SourceParameter.Force = $Force + } + + # If we do not want to create a media source, + if (-not $IsMediaSource) { + # we create a browser source. + $SourceParameter.Uri = $FilePath + # If the path was not already HTML, + if ($RootPath -and $FilePath -notmatch '\.html{0,1}$') { + # we make a minimal frame in a .html file + $relativePath = $FilePath.Substring($RootPath.Length + 1) + $htmlFrame = " + + ' + + " + + $leafPath = Split-Path -Path $FilePath -Leaf + $htmlPath = Join-Path $RootPath "$($leafPath).html" + [IO.File]::WriteAllText($htmlPath, $htmlFrame) + # And set up the CSS for that frame, passing down -Opacity. + # (this may not work for all images) + $css = " + body { + background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; + } + img { + width: 100% + height: 100%; + opacity: $([float]$opacity); + } + " + $SourceParameter.Uri = $htmlPath + $SourceParameter.CSS = $css + Add-OBSBrowserSource @SourceParameter | FitToScreenAndOutput + } else { + Add-OBSBrowserSource @SourceParameter | FitToScreenAndOutput + } + + } else { + $SourceParameter.FilePath = $FilePath + Add-OBSMediaSource @SourceParameter | FitToScreenAndOutput + } + } +} +#.ExternalHelp obs-powershell-Help.xml +function Watch-OBS +{ + + param( + # The OBS websocket URL. If not provided, this will default to loopback on port 4455. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('WebSocketURL')] + [uri] + $WebSocketURI = "ws://$([ipaddress]::Loopback):4455", + + # A randomly generated password used to connect to OBS. + # You can see the websocket password in Tools -> obs-websocket settings -> show connect info + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('WebSocketPassword')] + [string] + $WebSocketToken, + + # The size of the buffer to use when receiving messages from the websocket. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateRange(1,1mb)] + [int] + $BufferSize = 64kb + ) + + begin { + $obsWatcherJobDefinition = '' + { + param( + [Collections.IDictionary]$Variable + ) + + foreach ($keyValue in $Variable.GetEnumerator()) { + $ExecutionContext.SessionState.PSVariable.Set($keyValue.Name, $keyValue.Value) + } + }.ToString() + +" +function Receive-OBS { +$($ExecutionContext.SessionState.InvokeCommand.GetCommand('Receive-OBS', 'Function').Definition) +} + +function Send-OBS { +$($ExecutionContext.SessionState.InvokeCommand.GetCommand('Send-OBS', 'Function').Definition) +} +" + { + $Websocket = [Net.WebSockets.ClientWebSocket]::new() # [Net.WebSockets.ClientWebSocket]::new() + $waitFor = [Timespan]'00:00:05' + $ConnectTask = $Websocket.ConnectAsync($webSocketUri, [Threading.CancellationToken]::new($false)) + $null = $ConnectTask.ConfigureAwait($false) + + + $obsPwd = $WebSocketToken + $WaitInterval = [Timespan]::FromMilliseconds(7) + + $BufferSize = 64kb + + $maxWaitTime = [DateTime]::Now + $WaitFor + while (!$ConnectTask.IsCompleted -and [DateTime]::Now -lt $maxWaitTime) { + + } + + if (-not $script:ObsConnections) { + $script:ObsConnections = @{} + } + $script:ObsConnections[$webSocketUri] = $Websocket + $Variable['WebSocket'] = $Websocket + + [PSCustomObject][Ordered]@{ + PSTypename = 'obs.websocket' + Uri = $webSocketUri + WebSocket = $Websocket + } + try { + + while ($true) { + # Create a buffer for the response + $buffer = [byte[]]::new($BufferSize) + $receiveSegment = [ArraySegment[byte]]::new($buffer) + if (!($Websocket.State -eq 'Open')) { + throw 'Websocket is not open anymore. {0}' -f $Websocket.State + } + # Receive the next response from the WebSocket, + $receiveTask = $Websocket.ReceiveAsync($receiveSegment, [Threading.CancellationToken]::new($false)) + # then wait for it to complete. + while (-not $receiveTask.IsCompleted) { Start-Sleep -Milliseconds $WaitInterval.TotalMilliseconds } + # "Receiving $($receiveTask.Result.Count)" | Out-Host + $msg = # Get the response and trim with extreme prejudice. + [Text.Encoding]::UTF8.GetString($buffer, 0, $receiveTask.Result.Count).Trim() -replace '\s+$' + + if ($msg) { + $messageData = try { ConvertFrom-Json $msg -ErrorAction Ignore} catch { $_ } + $received = if ($messageData -isnot [Management.Automation.ErrorRecord]) { + $messageData | Receive-OBS -WebSocketToken $WebSocketToken -WebSocketUri $webSocketUri -SendEvent -Subscription $Subscription + } else { + $messageData + } + if ($MainRunspace) { + foreach ($receivedItem in $received) { + if ($receivedItem -is [Management.Automation.PSEvent]) { + $MainRunspace.Events.GenerateEvent($receivedItem.SourceIdentifier, $receivedItem.Sender, $receivedItem.SourceArgs, $receivedItem.MessageData) + } else { + $MainRunspace.Events.GenerateEvent('obs://', $Websocket, $received, $null) + } + } + } + $received + } + + $buffer.Clear() + + } + + } catch { + Write-Error -Exception $_.Exception -Message "Exception: $($_ | Out-String)" -ErrorId "WebSocket.State.$($Websocket.State)" + } + } + + $obsWatcherJobDefinition = [scriptblock]::Create($obsWatcherJobDefinition) + + if (-not $script:ObsConnections) { + $script:ObsConnections = [Ordered]@{} + } + + $obsProcess = Get-Process obs* | + Where-Object Name -In 'obs', 'obs64', 'obs32' + + if (-not $obsProcess) { + Write-Warning "OBS is not running" + } + } + + process { + + $MainRunspace = [Runspace]::DefaultRunspace + $obsWatcher = + Start-ThreadJob -ScriptBlock $obsWatcherJobDefinition -Name "OBS.Connection.$($Credential.UserName)" -ArgumentList ([Ordered]@{ + WebSocketURI = $WebSocketURI + WebSocketToken = $WebSocketToken + BufferSize = $BufferSize + MainRunspace = $MainRunspace + }) + + $whenOutputAddedHandler = + Register-ObjectEvent -InputObject $obsWatcher.Output -EventName DataAdded -Action { + + $dataAdded = $sender[$event.SourceArgs[1].Index] + if ($dataAdded -is [Management.Automation.PSEventArgs]) { + $newEventSplat = [Ordered]@{ + SourceIdentifier = $dataAdded.SourceIdentifier + } + $newEventSplat.Sender = $eventSubscriber + if ($dataAdded.MessageData) { + $newEventSplat.MessageData = $dataAdded.MessageData + } + if ($dataAdded.SourceEventArgs) { + $newEventSplat.EventArguments = $dataAdded.SourceEventArgs + } + $messageData = $dataAdded.MessageData + New-Event @newEventSplat + } + elseif ($dataAdded.pstypenames -contains 'obs.websocket') { + New-Event -SourceIdentifier obs.powershell.websocket -MessageData $dataAdded + $eventSubscriber | Add-Member NoteProperty WebSocket $dataAdded.WebSocket -Force -PassThru + } + else { + + } + } + + $whenOutputAddedHandler | Add-Member NoteProperty Watcher $obsWatcher -Force + + $whenOutputAdded = @( + foreach ($subscriber in Get-EventSubscriber) { + if ($subscriber.Action -eq $whenOutputAddedHandler) { + $subscriber;break + } + } + ) + + Start-Sleep -Milliseconds 1 # Do the smallest of sleeps, so that the thread job actually has a chance to start. + + $obsWatcher | Add-Member NoteProperty WhenOutputAddedHandler $whenOutputAddedHandler -Force + $obsWatcher | Add-Member NoteProperty WhenOutputAdded $whenOutputAdded -Force + $obsWatcher | Add-Member NoteProperty StartTime ([datetime]::Now) -Force + $obsWatcher | Add-Member ScriptProperty WebSocket { + $this.WhenOutputAdded.WebSocket + } -Force + + $obsWatcher.pstypenames.insert(0, 'OBS.Connection') + $script:ObsConnections[$WebSocketURI] = $obsWatcher + $obsWatcher + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSAudioOutputSource { + + + #> + [Alias('Add-OBSAudioOutputSource','Get-OBSAudioOutputSource')] + param( + # The name of the audio device. + # This name or device ID of the audio device that should be captured. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('ItemValue','ItemName','DeviceID')] + [string] + $AudioDevice, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, "AudioOutput$($AudioDevice)" will be the input source name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + # Audio Output sources have an inputKind of 'wasapi_output_capture'. + $inputKind = "wasapi_output_capture" + + } + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + + if (-not $myParameters["AudioDevice"]) { + $myParameters["AudioDevice"] = "default" + } + + # Window capture is a bit of a tricky one. + # In order to get the WindowTitle to match that OBS needs, we need to look thru the input properties list. + # and for that, an input needs to exist. + if (-not $myParameters["Name"]) { + + + if ($myParameters["AudioDevice"]) { + $Name = $myParameters["Name"] = "AudioOutput-" + $myParameters["AudioDevice"] + } + else { + $Name = $myParameters["Name"] = "AudioOutput" + } + } + + + + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + } + } + } + + $addSplat = @{ + sceneName = $myParameters["Scene"] + inputName = $myParameters["Name"] + inputKind = $inputKind + inputSettings = $myParameterData + NoResponse = $myParameters["NoResponse"] + } + + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + $possibleDevices = Get-OBSInputPropertiesListPropertyItems -InputName $addSplat.inputName -PropertyName device_id + foreach ($deviceInfo in $possibleDevices) { + if ( + ($deviceInfo.itemName -eq $AudioDevice) -or + ($deviceInfo.ItemValue -eq $AudioDevice) -or + ($deviceInfo.ItemName -replace '\[[^\[\]]+\]\:\s' -eq $AudioDevice) -or + ($deviceInfo.ItemValue -like "*$AudioDevice*") -or + ($deviceInfo.ItemName -like "*$AudioDevice*") + ) { + $myParameterData["device_id"] = $deviceInfo.itemValue + break + } + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.PassThru = $true + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + + return + } + + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Scene"] + } + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSBrowserSource { + + + [Alias('Add-OBSBrowserSource','Get-OBSBrowserSource')] + param( + # The uri or file path to display. + # If the uri points to a local file, this will be preferred + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('Url', 'Href','Path','FilePath','FullName')] + [uri] + $Uri, + + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The css style used to render the browser page. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("css")] + [string] + $CSS = "body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }", + + # If set, the browser source will shutdown when it is hidden + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("shutdown")] + [switch] + $ShutdownWhenHidden, + + # If set, the browser source will restart when it is activated. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("restart_when_active")] + [switch] + $RestartWhenActived, + + # If set, audio from the browser source will be rerouted into OBS. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("reroute_audio")] + [switch] + $RerouteAudio, + + # If provided, the browser source will render at a custom frame rate. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("fps")] + [Alias('FPS')] + [int] + $FramesPerSecond, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + # Browser Sources are built into OBS. Their input kind is browser_source. + $inputKind = "browser_source" + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + if ($fps -and $fps -ne 30) { + $myParameterData["custom_fps"] = $true + } + if ($uri.Scheme -eq 'File') { + if (Test-Path $uri.AbsolutePath) { + $myParameterData["local_file"] = "$uri" -replace '[\\/]', '/' -replace '^file:///' + $myParameterData["is_local_file"] = $true + } + } + else + { + if (Test-Path $uri) { + $rp = $ExecutionContext.SessionState.Path.GetResolvedPSPathFromPSPath($uri) + $myParameterData["local_file"] = "$rp" -replace '[\\/]', '/' -replace '^file:///' + $myParameterData["is_local_file"] = $true + } else { + $myParameterData["url"] = "$uri" + } + } + + + if (-not $Name) { + $Name = $myParameters['Name'] = + if ($uri.Segments) { + $uri.Segments[-1] + } elseif ($uri -match '[\\/]') { + @($uri -split '[\\/]')[-1] + } else { + $uri + } + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $inputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSColorSource { + + + [Alias('Add-OBSColorSource','Get-OBSColorSource')] + param( + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, "Display $($Monitor + 1)" will be the input source name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName')] + [string] + $Name, + + [ValidatePattern('\#(?>[0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})')] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Color, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + $inputKind = "color_source_v3" + + } + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $hexChar = [Regex]::new('[0-9a-f]') + $hexColors = @($hexChar.Matches($Color)) + + switch ($hexColors.Length) { + 8 { + #full rgba + $alpha = [byte]::Parse($hexColors[0..1] -join '', 'HexNumber') + $red = [byte]::Parse($hexColors[2..3] -join '', 'HexNumber') + $green = [byte]::Parse($hexColors[4..5] -join '', 'HexNumber') + $blue = [byte]::Parse($hexColors[6..7] -join '', 'HexNumber') + } + 6 { + #rgb only, assume ff for alpha + $alpha = 0xff + $red = [byte]::Parse($hexColors[0..1] -join '', 'HexNumber') + $green = [byte]::Parse($hexColors[2..3] -join '', 'HexNumber') + $blue = [byte]::Parse($hexColors[4..5] -join '', 'HexNumber') + } + 4 { + #short rgba + $alpha = [byte]::Parse(($hexColors[0],$hexColors[0] -join ''), 'HexNumber') + $red = [byte]::Parse(($hexColors[1],$hexColors[1] -join ''), 'HexNumber') + $green = [byte]::Parse(($hexColors[2],$hexColors[2] -join ''), 'HexNumber') + $blue = [byte]::Parse(($hexColors[3],$hexColors[3] -join ''), 'HexNumber') + } + 3 { + #short rgb, assume f for alpha + $alpha = 0xff + $red = [byte]::Parse(($hexColors[0],$hexColors[0] -join ''), 'HexNumber') + $green = [byte]::Parse(($hexColors[1],$hexColors[1] -join ''), 'HexNumber') + $blue = [byte]::Parse(($hexColors[2],$hexColors[2] -join ''), 'HexNumber') + } + 0 { + # No color provided, default to transparent black + $alpha = 0 + $red = 0 + $green = 0 + $blue = 0 + } + } + + $hexColor = ("{0:x2}{1:x2}{2:x2}{3:x2}" -f $alpha, $blue, $green, $red) + + $realColor = [uint32]::Parse($hexColor,'HexNumber') + + + if (-not $myParameters["Name"]) { + $myParameters["Name"] = "#$hexColor" + } + + $myParameterData = [Ordered]@{color=$realColor} + + $addSplat = @{ + sceneName = $myParameters["Scene"] + inputName = $myParameters["Name"] + inputKind = "color_source_v3" + inputSettings = $myParameterData + NoResponse = $myParameters["NoResponse"] + } + + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + + } +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSDisplaySource { + + + [Alias('Add-OBSMonitorSource','Set-OBSMonitorSource','Add-OBSDisplaySource')] + param( + # The monitor number. + # This the number of the monitor you would like to capture. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("monitor")] + [Alias('MonitorNumber','Display','DisplayNumber')] + [int] + $Monitor = 1, + + # If set, will capture the cursor. + # This will be set by default. + # If explicitly set to false, the cursor will not be captured. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("capture_cursor")] + [switch] + $CaptureCursor, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, "Display $($Monitor + 1)" will be the input source name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + } + } + } + + # Users like 1 indexed, computers like zero-indexed. + $myParameterData["monitor"] = $Monitor - 1 + + if (-not $myParameters["Name"]) { + $myParameters["Name"] = "Display $($Monitor)" + } + + $addSplat = @{ + sceneName = $myParameters["Scene"] + inputName = $myParameters["Name"] + inputKind = "monitor_capture" + inputSettings = $myParameterData + NoResponse = $myParameters["NoResponse"] + } + + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $name + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSMarkdownSource { + + + [Alias('Add-OBSMarkdownSource','Get-OBSMarkdownSource')] + param( + # The markdown text, or the path to a markdown file + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Markdown, + + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The css style used to render the markdown. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("css")] + [string] + $CSS = "body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }", + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + $inputKind = "markdown_source" + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + $IsGet = $MyInvocation.InvocationName -like "Get-*" + $NoVerb = $MyInvocation.InvocationName -match '^[^-]+$' + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + if ( + $IsGet -or + ($NoVerb -and -not $NonNameParameters) + ) { + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { + $_.InputName -like $Name + } else { + $_ + } + } + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + $markdownAsUri = $null + if ($Markdown -like '*.md') { + $markdownAsUri = $markdown -as [uri] + if ($markdownAsUri.Scheme -eq 'File') { + $myParameterData["markdown_path"] = "$markdownAsUri" -replace '[\\/]', '/' -replace '^file:///' + $myParameterData["markdown_source"] = 1 + } + else { + + } + } else { + $myParameterData["text"] = $Markdown + $myParameterData["markdown_source"] = 0 + } + + if (-not $Name) { + $Name = $myParameters['Name'] = + if ($markdownAsUri.Segments) { + $markdownAsUri.Segments[-1] + } elseif ($markdownAsUri -match '[\\/]') { + @($markdownAsUri -split '[\\/]')[-1] + } elseif ($markdownAsUri) { + $markdownAsUri + } else { + "Markdown" + } + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = "markdown_source" + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSMediaSource { + + + [Alias('Add-OBSFFMpegSource','Add-OBSMediaSource','Set-OBSFFMpegSource','Get-OBSFFMpegSource','Get-OBSMediaSource')] + param( + # The path to the media file. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('FullName','LocalFile','local_file')] + [string] + $FilePath, + + # If set, the source will close when it is inactive. + # By default, this will be set to true. + # To explicitly set it to false, use -CloseWhenInactive:$false + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("close_when_inactive")] + [switch] + $CloseWhenInactive, + + # If set, the source will automatically restart. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("looping")] + [Alias('Looping')] + [switch] + $Loop, + + # If set, will use hardware decoding, if available. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("hw_decode")] + [Alias('HardwareDecoding','hw_decode')] + [switch] + $UseHardwareDecoding, + + # If set, will clear the output on the end of the media. + # If this is set to false, the media will freeze on the last frame. + # This is set to true by default. + # To explicitly set to false, use -ClearMediaEnd:$false + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("clear_on_media_end")] + [Alias('ClearOnEnd','NoFreezeFrameOnEnd')] + [switch] + $ClearOnMediaEnd, + + # Any FFMpeg demuxer options. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("ffmpeg_options")] + [Alias('FFMpegOptions', 'FFMpeg_Options')] + [string] + $FFMpegOption, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force, + + # If set, will fit the input to the screen. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $FitToScreen + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + filter OutputAndFitToScreen { + + if ($FitToScreen -and $_.FitToScreen) { + $_.FitToScreen() + } + $_ + + } + $InputKind = "ffmpeg_source" + + } + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + if ((Test-Path $FilePath)) { + $FilePathItem = Get-Item -Path $FilePath + $myParameterData['local_file'] = $FilePathItem.FullName -replace '/', '\' + } + + + + if ($myParameters['InputSettings']) { + $keys = + @(if ($myParameters['InputSettings'] -is [Collections.IDictionary]) { + $myParameters['InputSettings'].Keys + } else { + foreach ($prop in $myParameters['InputSettings'].PSObject.Properties) { + $prop.Name + } + }) + + foreach ($key in $keys) { + $myParameterData[$key] = $myParameters['InputSettings'].$key + } + + $myParameterData.remove('inputSettings') + } + + if (-not $Name) { + + $Name = $myParameters["Name"] = + if ($FilePathItem.Name) { + $FilePathItem.Name + } else { + "Media" + } + + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $InputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + + if ($myParameters.Contains('SceneItemEnabled')) { + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + + # Otherwise, if we had a result + if ($outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene and optionally fit it to the screen. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $name | + OutputAndFitToScreen + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSoundCloudSource { + + + [Alias('Add-OBSSoundCloudSource','Get-OBSSoundCloudSource')] + param( + # The uri to display. This must point to a SoundCloud URL. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('Url','SoundCloudUri','SoundCloudUrl')] + [uri] + $Uri, + + # If set, will not autoplay. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoAutoPlay, + + # If set, will not display album artwork. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoArtwork, + + # If set, will not display play count. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoPlayCount, + + # If set, will not display uploader info. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $NoUploaderInfo, + + # If provided, will start playing at a given track number. + [Parameter(ValueFromPipelineByPropertyName)] + [int] + $TrackNumber, + + # If set, will show a share link. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $ShowShare, + + # If set, will show a download link. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $ShowDownload, + + # If set, will show a buy link. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $ShowBuy, + + # The color used for the SoundCloud audio bars and buttons. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Color, + + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The css style used to render the browser page. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("css")] + [string] + $CSS = "body { background-color: rgba(0, 0, 0, 0); margin: 0px auto; overflow: hidden; }", + + # If set, the browser source will shutdown when it is hidden + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("shutdown")] + [switch] + $ShutdownWhenHidden, + + # If set, the browser source will restart when it is activated. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("restart_when_active")] + [switch] + $RestartWhenActived, + + # If set, audio from the browser source will be rerouted into OBS. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("reroute_audio")] + [switch] + $RerouteAudio, + + # If provided, the browser source will render at a custom frame rate. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("fps")] + [Alias('FPS')] + [int] + $FramesPerSecond, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, then "SoundCloud" will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + # Browser Sources are built into OBS. Their input kind is browser_source. + # Sound Cloud Sources are really Browser Sources. + $inputKind = "browser_source" + + } + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + + if (-not $uri.DnsSafeHost -or $uri.DnsSafeHost -notmatch 'SoundCloud\.com$') { + Write-Error "URI must be from SoundCloud.com" + return + } + + if ($uri.Query) { + $uri = "https://$($uri.DnsSafeHost)" + $($uri.Segments -join '') + } + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } | + Where-Object { + $_.Settings['LocalFile'] -like '*.SoundCloud.*' + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + if ($fps -and $fps -ne 30) { + $myParameterData["custom_fps"] = $true + } + + $MyObsPowerShellPath = if ($home) { + Join-Path $home ".obs-powershell" + } + + $ThisSoundCloudSourceFileName = + if ($name) { + "${name}.SoundCloudSource.html" + } else { + "SoundCloudSource.html" + } + + $ThisSoundCloudSourceFilePath = Join-Path $MyObsPowerShellPath $ThisSoundCloudSourceFileName + + + $soundCloudSrc = @( + "https://w.soundcloud.com/player/?url=" + $Uri + "&" + @( + if ($PSBoundParameters["TrackNumber"]) {"start_track=$trackNumber"} + if ($color) { "color=$color" -replace "\#",'%23'} + if ($NoAutoPlay) { "auto_play=false" } else { "auto_play=true"} + if ($NoArtwork) { "show_artwork=false" } else {"show_artwork=true" } + if ($NoUploaderInfo) { "show_user=false" } else {"show_user=true"} + if ($NoPlayCount) { "show_playcount=false" } else {"show_playcount=true" } + if ($ShowDownload) { "download=true"} else { "download=false" } + if ($ShowBuy) { "buying=true"} else { "buying=false" } + if ($ShowShare) { "sharing=true"} else { "sharing=false" } + ) -join '&' + ) -join '' + + $soundCloudWidget = @( + "" + "" + "" + "" + "" + ) -join ' ' + + $newHtmlFile = New-Item -Value $soundCloudWidget -ItemType File -Path $ThisSoundCloudSourceFilePath -Force + + $myParameterData["local_file"] = ([uri]$newHtmlFile.FullName) -replace '[\\/]', '/' -replace '^file:///' + $myParameterData["is_local_file"] = $true + + if (-not $Name) { + $Name = $myParameters['Name'] = 'SoundCloud' + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $inputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSwitchSource { + + + [Alias('Add-OBSSwitchSource','Get-OBSSwitchSource')] + param( + # The path to the media file. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('Sources')] + [string[]] + $SourceList, + + # What to select in the playlist. + # If a number is provided, this will select an index. + # If a string is provided, this will select the whole name or last part of a name, accepting wildcards. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateScript({ + $validTypeList = [System.Int32],[System.String] + + $thisType = $_.GetType() + $IsTypeOk = + $(@( foreach ($validType in $validTypeList) { + if ($_ -as $validType) { + $true;break + } + })) + + if (-not $isTypeOk) { + throw "Unexpected type '$(@($thisType)[0])'. Must be 'int','string'." + } + return $true + })] + + [Alias('SelectIndex','SelectName')] + $Select, + + # If set, the list of sources will loop. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("loop")] + [Alias('Looping')] + [switch] + $Loop, + + # If set, will switch between sources. + # Sources will be displayed for a -Duration. + # No source wil be displayed for an -Interval. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("time_switch")] + [switch] + $TimeSwitch, + + # The interval between sources + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("time_switch_between")] + [timespan] + $Interval, + + # The duration between sources that are switching at a time. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("time_switch_duration")] + [timespan] + $Duration, + + # The item that will be switched in a TimeSwitch, after -Duration and -Interval. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet("None","Next","Previous","First","Last","Random")] + [string] + $TimeSwitchTo = "Next", + + # If set, will switch on the underlying source's media state events. + # Sources will be displayed for a -Duration. + # No source wil be displayed for an -Interval. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("media_state_switch")] + [switch] + $MediaStateSwitch, + + # The change in media state that should trigger a switch + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet("Playing","Opening","Buffering","Paused","Stopped","Ended", "Error","Playing","NotOpening","NotBuffering","NotPaused","NotStopped","NotEnded", "NotError")] + $MediaStateChange, + + # When the source switcher is trigger by media end, this determines the next source that will be switched to. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet("None","Next","Previous","First","Last","Random")] + [string] + $MediaSwitchTo = "Next", + + # The name of the transition between sources. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + if (-not $script:OBSTransitionKinds) { + $script:OBSTransitionKinds = @(Get-OBSTransitionKind) -replace '_transition$' + } + + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($script:OBSTransitionKinds -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($script:OBSTransitionKinds -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $TransitionName, + + # The properties sent to the transition. + # Notice: this current requires confirmation in the UI. + [Parameter(ValueFromPipelineByPropertyName)] + [PSObject] + $TransitionProperty, + + # The name of the transition used to show a source. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + if (-not $script:OBSTransitionKinds) { + $script:OBSTransitionKinds = @(Get-OBSTransitionKind) -replace '_transition$' + } + + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($script:OBSTransitionKinds -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($script:OBSTransitionKinds -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $ShowTransition, + + # The properties sent to the show transition. + # Notice: this current requires confirmation in the UI. + [Parameter(ValueFromPipelineByPropertyName)] + [PSObject] + $ShowTransitionProperty, + + # The transition used to hide a source. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + if (-not $script:OBSTransitionKinds) { + $script:OBSTransitionKinds = @(Get-OBSTransitionKind) -replace '_transition$' + } + + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($script:OBSTransitionKinds -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($script:OBSTransitionKinds -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $HideTransition, + + # The properties sent to the hide transition. + # Notice: this current requires confirmation in the UI. + [Parameter(ValueFromPipelineByPropertyName)] + [PSObject] + $HideTransitionProperty, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName','SourceName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force, + + # If set, will fit the input to the screen. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $FitToScreen + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + filter OutputAndFitToScreen { + + if ($FitToScreen -and $_.FitToScreen) { + $_.FitToScreen() + } + $_ + + } + $InputKind = "source_switcher" + + } + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + if ($myParameters[$parameter.Name] -is [timespan]) { + $myParameterData[$bindToPropertyName] = [int]$myParameters[$parameter.Name].TotalMilliseconds + } + } + } + + + $selectedIndex = -1 + $sourcesObject = @( + $currentIndex = -1 + foreach ($sourceName in $SourceList) { + $currentIndex++ + $selected = ($null -ne $Select) -and ( + ($select -is [int] -and $currentIndex -eq $select) -or + ($select -is [string] -and + ($sourceName -like $select -or ($sourceName | Split-Path -Leaf -ErrorAction Ignore) -like $Select) + ) + ) + if ($selected) { + $selectedIndex = $currentIndex + } + [PSCustomObject][Ordered]@{hidden=$false;selected=$selected;value=$sourceName} + } + ) + + if ($sourcesObject) { + $myParameterData['sources'] = $sourcesObject + if ($selectedIndex -gt 0) { + $myParameterData["current_index"] = $selectedIndex + } + } + elseif ($Select -is [int]) { + $myParameterData['current_index'] = $Select + } + + + + if ($TransitionName) { + if ($TransitionName -notlike '*_transition') { + $TransitionName = "${TransitionName}_transition" + } + $myParameterData["transition"] = $TransitionName + } + + if ($TransitionProperty) { + $myParameterData["transition_properties"] = $TransitionProperty + } + + if ($ShowTransition) { + if ($ShowTransition -notlike '*_transition') { + $ShowTransition = "${ShowTransition}_transition" + } + $myParameterData["show_transition"] = $ShowTransition + } + + if ($ShowTransitionProperty) { + $myParameterData["show_transition_properties"] = $ShowTransitionProperty + } + + if ($HideTransition) { + if ($HideTransition -notlike '*_transition') { + $HideTransition = "${HideTransition}_transition" + } + $myParameterData["hide_transition"] = $ShowTransition + } + + if ($HideTransitionProperty) { + $myParameterData["hide_transition_properties"] = $HideTransitionProperty + } + + if ($TimeSwitchTo) { + $validValues = $MyInvocation.MyCommand.Parameters["TimeSwitchTo"].Attributes.ValidValues + for ($vvi = 0; $vvi -lt $validValues.Length;$vvi++) { + if ($TimeSwitchTo -eq $validValues[$vvi]) { + $myParameterData["time_switch_to"] = $vvi + break + } + } + } + + if ($MediaSwitchTo) { + $validValues = $MyInvocation.MyCommand.Parameters["MediaSwitchTo"].Attributes.ValidValues + for ($vvi = 0; $vvi -lt $validValues.Length;$vvi++) { + if ($TimeSwitchTo -eq $validValues[$vvi]) { + $myParameterData["media_state_switch_to"] = $vvi + break + } + } + } + + if ($MediaStateChange) { + $validValues = $MyInvocation.MyCommand.Parameters["MediaStateChange"].Attributes.ValidValues + for ($vvi = 0; $vvi -lt $validValues.Length;$vvi++) { + if ($TimeSwitchTo -eq $validValues[$vvi]) { + $myParameterData["media_switch_state"] = $vvi + break + } + } + } + + if (-not $Name) { + $Name = $myParameters["Name"] = "Source Switcher" + } + + + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $InputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + + if ($myParameters.Contains('SceneItemEnabled')) { + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + if ($sceneItem) { + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene and optionally fit it to the screen. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $name | + OutputAndFitToScreen + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSVLCSource { + + + [Alias('Add-OBSVLCSource','Set-OBSPlaylistSource','Add-OBSPlaylistSource','Get-OBSVLCSource','Get-OBSPlaylistSource')] + param( + # The path to the media file. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('FullName','LocalFile','local_file','Playlist')] + [string[]] + $FilePath, + + # What to select in the playlist. + # If a number is provided, this will select an index. + # If a string is provided, this will select the whole name or last part of a name, accepting wildcards. + # If an `[IO.FileInfo]` is provided, this will be the exact file. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateScript({ + $validTypeList = [System.Int32],[System.String],[System.IO.FileInfo] + + $thisType = $_.GetType() + $IsTypeOk = + $(@( foreach ($validType in $validTypeList) { + if ($_ -as $validType) { + $true;break + } + })) + + if (-not $isTypeOk) { + throw "Unexpected type '$(@($thisType)[0])'. Must be 'int','string','System.IO.FileInfo'." + } + return $true + })] + + [Alias('SelectIndex','SelectName')] + $Select, + + # If set, will shuffle the playlist + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("shuffle")] + [switch] + $Shuffle, + + # If set, the playlist will loop. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("loop")] + [Alias('Looping')] + [switch] + $Loop, + + # If set, will show subtitles, if available. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("subtitle_enable")] + [Alias('ShowSubtitles','Subtitles')] + [switch] + $Subtitle, + + # The selected audio track number. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("track")] + [int] + $AudioTrack, + + # The selected subtitle track number. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("subtitle")] + [int] + $SubtitleTrack, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force, + + # If set, will fit the input to the screen. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $FitToScreen + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + filter OutputAndFitToScreen { + + if ($FitToScreen -and $_.FitToScreen) { + $_.FitToScreen() + } + $_ + + } + $InputKind = "vlc_source" + + } + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + $allPaths = @(foreach ($path in $FilePath) { + foreach ($_ in $ExecutionContext.SessionState.Path.GetResolvedPSPathFromPSPath($path)) { + $_.Path + } + }) + $playlistObject = @( + $currentIndex = 0 + foreach ($path in $allPaths) { + $currentIndex++ + $selected = $Select -and ( + ($select -is [int] -and $currentIndex -eq $select) -or + ($select -is [IO.FileInfo] -and $path -eq $select.FullName) -or + ($select -is [string] -and + ($path -like $select -or ($path | Split-Path -Leaf) -like $Select) + ) + ) + [PSCustomObject][Ordered]@{hidden=$false;selected=$selected;value=$path} + } + ) + $myParameterData['playlist'] = $playlistObject + + if (-not $Name) { + $Name = $myParameters["Name"] = $FilePathItem.Name + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $InputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + + if ($myParameters.Contains('SceneItemEnabled')) { + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene and optionally fit it to the screen. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $name | + OutputAndFitToScreen + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSWaveformSource { + + + [Alias('Add-OBSWaveformSource','Get-OBSWaveformSource')] + param( + # The width of the browser source. + # If none is provided, this will be the output width of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("width")] + [int] + $Width, + + # The width of the browser source. + # If none is provided, this will be the output height of the video settings. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("height")] + [int] + $Height, + + # The audio source for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("audio_source")] + [string] + $AudioSource, + + # The display mode for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("display_mode")] + [ValidateSet("curve","bars","stepped_bars","level_meter","stepped_level_meter")] + [string] + $DisplayMode, + + # The render mode for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("render_mode")] + [ValidateSet("line","solid","gradient")] + [string] + $RenderMode, + + # The windowing mode for the waveform. + # This is the mathematical function used to determine the current "window" of audio data. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("render_mode")] + [ValidateSet("hann","hamming","blackman","blackman_harris","none")] + [string] + $WindowMode, + + # The color used for the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("color_base")] + [PSObject] + $Color, + + # The crest color used for the waveform. + # This will be ignored if the render mode is not "gradient". + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("color_crest")] + [PSObject] + $CrestColor, + + # The channel mode for the waveform. + # This can be either mono or stereo. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("channel_mode")] + [ValidateSet("mono","stereo")] + [string] + $ChannelMode, + + # The number of pixels between each channel in stereo mode + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("channel_spacing")] + [int] + $ChannelSpacing, + + # If set, will use a radial layout for the waveform + # Radial layouts will ignore the desired height of the source and instead create a square. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("radial_layout")] + [switch] + $RadialLayout, + + # If set, will invert the direction for a radial waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("invert_direction")] + [switch] + $InvertRadialDirection, + + # If set, will normalize the volume displayed in the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("normalize_volume")] + [switch] + $NoramlizeVolume, + + # If set, will automatically declare an FFTSize + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("auto_fft_size")] + [switch] + $AutoFftSize, + + # If set, will attempt to make audio peaks render faster. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("fast_peaks")] + [switch] + $FastPeak, + + # The width of the waveform bar. + # This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("bar_width")] + [int] + $BarWidth, + + # The gap between waveform bars. + # This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("bar_gap")] + [int] + $BarGap, + + # The width of waveform bar step. + # This is only valid when -DisplayMode is 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("step_width")] + [int] + $StepWidth, + + # The gap between waveform bar steps. + # This is only valid when -DisplayMode is 'stepped_bars' + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("step_gap")] + [int] + $StepGap, + + # The low-frequency cutoff of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("cutoff_low")] + [int] + $LowCutoff, + + # The high-frequency cutoff of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("cutoff_high")] + [int] + $HighCutoff, + + # The floor of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("floor")] + [int] + $Floor, + + # The ceiling of the waveform. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("ceiling")] + [int] + $Ceiling, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("slope")] + [double] + $Slope, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("rolloff_q")] + [Alias('RollOffOctaves')] + [double] + $RollOffOctave, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("rolloff_rate")] + [double] + $RollOffRate, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("grad_ratio")] + [double] + $GradientRatio, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("deadzone")] + [double] + $Deadzone, + + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("temporal_smoothing")] + [ValidateSet("none","exp_moving_avg")] + [string] + $TemporalSmoothing, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, the last segment of the URI or file path will be the input name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + $inputKind = "phandasm_waveform_source" + filter ToOBSColor { + + if ($_ -is [uint32]) { $_ } + elseif ($_ -is [string]) { + if ($_ -match '^\#[a-f0-9]{3,4}$') { + $_ = $_ -replace '[a-f0-9]','$0$0' + } + + if ($_ -match '^#[a-f0-9]{8}$') { + ( + '0x' + + (($_ -replace '#').ToCharArray()[0,1,-1,-2,-3,-4,-5,-6] -join '') + ) -as [UInt32] + } + elseif ($_ -match '^#[a-f0-9]{6}$') { + + ( + '0xff' + + (($_ -replace '#').ToCharArray()[-1..-6] -join '') + ) -as [UInt32] + } + } + + } + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + $MyInvocationName = "$($MyInvocation.InvocationName)" + $myVerb, $myNoun = $MyInvocationName -split '-' + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + $IsGet = $myVerb -eq "Get" + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + if ( + $IsGet -or + $NoVerb + ) { + $inputsOfKind = + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { + $_.InputName -like $Name + } else { + $_ + } + } + if ($NonNameParameters -and -not $IsGet) { + $paramCopy = [Ordered]@{} + $PSBoundParameters + if ($paramCopy.Name) { $paramCopy.Remove('Name') } + $inputsOfKind | & $myScriptBlock @paramCopy + } else { + $inputsOfKind + } + return + } + + if ((-not $width) -or (-not $height)) { + if (-not $script:CachedOBSVideoSettings) { + $script:CachedOBSVideoSettings = Get-OBSVideoSettings + } + $videoSettings = $script:CachedOBSVideoSettings + $myParameters["Width"] = $width = $videoSettings.outputWidth + $myParameters["Height"] = $height = $videoSettings.outputHeight + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + + + if (-not $Name) { + $Name = $myParameters['Name'] = + if ($AudioSource) { + "$($AudioSource)-Waveform" + } else { + "Waveform" + } + } + + if ($myParameterData.color_base) { + $myParameterData.color_base = $myParameterData.color_base | ToOBSColor + } + + if ($myParameterData.color_crest) { + $myParameterData.color_crest = $myParameterData.color_crest | ToOBSColor + } + + $addSplat = [Ordered]@{ + sceneName = $myParameters["Scene"] + inputKind = $inputKind + inputSettings = $myParameterData + inputName = $Name + NoResponse = $myParameters["NoResponse"] + } + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + $addSplat.Passthru = $MyParameters["PassThru"] + # If we were called with Add- + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSInput @addSplat # passthru Add-OBSInput + } else { + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + } + # Otherwise, if we had a result + if ($outputAddedResult -and + $outputAddedResult -isnot [Management.Automation.ErrorRecord]) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSWindowSource { + + + [Alias('Add-OBSWindowSource','Set-OBSWindowCaptureSource','Add-OBSWindowCaptureSource','Get-OBSWindowSource','Get-OBSWindowCaptureSource')] + param( + # The monitor number. + # This the number of the monitor you would like to capture. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('ItemValue','ItemName','WindowName','MainWindowTitle')] + [string] + $WindowTitle, + + # The number of the capture method. By default, automatic (0). + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("method")] + [int] + $CaptureMethod, + + # The capture priority. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateSet('ExactMatch','SameType','SameExecutable')] + [string] + $CapturePriority, + + # If set, will capture the cursor. + # This will be set by default. + # If explicitly set to false, the cursor will not be captured. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("cursor")] + [switch] + $CaptureCursor, + + # If set, will capture the client area. + # This will be set by default. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("client_area")] + [switch] + $ClientArea, + + # If set, will force SDR. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("force_sdr")] + [switch] + $ForceSDR, + + # The name of the scene. + # If no scene name is provided, the current program scene will be used. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('SceneName')] + [string] + $Scene, + + # The name of the input. + # If no name is provided, "Display $($Monitor + 1)" will be the input source name. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('InputName')] + [string] + $Name, + + # If set, will check if the source exists in the scene before creating it and removing any existing sources found. + # If not set, you will get an error if a source with the same name exists. + [Parameter(ValueFromPipelineByPropertyName)] + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSInput) { + $script:AddOBSInput = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSInput','Function') + $script:AddOBSInput + } else { + $script:AddOBSInput + } + $IncludeParameter = @() + $ExcludeParameter = 'inputKind','sceneName','inputName' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + $InputKind = "window_capture" + + } + process { + # Copy the bound parameters + $myParameters = [Ordered]@{} + $PSBoundParameters + # and determine the name of the invocation + $MyInvocationName = "$($MyInvocation.InvocationName)" + # Split it into verb and noun + $myVerb, $myNoun = $MyInvocationName -split '-' + # and get a copy of ourself that we can call with anonymous recursion. + $myScriptBlock = $MyInvocation.MyCommand.ScriptBlock + # Determine if the verb was get, + $IsGet = $myVerb -eq "Get" + # if no verb was used, + $NoVerb = $MyInvocationName -match '^[^\.\&][^-]+$' + # and if there were any other parameters then name + $NonNameParameters = @($PSBoundParameters.Keys) -ne 'Name' + + # If it is a get or there was no verb + if ($IsGet -or $NoVerb) { + $inputsOfKind = # Get all inputs of this kind + Get-OBSInput -InputKind $InputKind | + Where-Object { + if ($Name) { # If -Name was provided, + $_.InputName -like $Name # filter by name (as a wildcard). + } else { + $_ # otherwise, return every input. + } + } + + # If there were parameters other than name, + # and we were not explicitly called Get-* + if ($NonNameParameters -and -not $IsGet) { + # remove the name parameter + if ($myParameters.Name) { $myParameters.Remove('Name') } + # and pipe results back to ourself. + $inputsOfKind | & $myScriptBlock @myParameters + } else { + # Otherwise, we're just getting the list of inputs + $inputsOfKind + } + # (either way, if we were called Get- or with no verb, we're done now). + return + } + + if (-not $myParameters["Scene"]) { + $myParameters["Scene"] = Get-OBSCurrentProgramScene | + Select-Object -ExpandProperty currentProgramSceneName + } + + + if (-not $myParameters["WindowTitle"]) { + while ($_ -is [Diagnostics.Process] -and -not $_.MainWindowTitle) { + $_ = $_.Parent + } + if ($_.MainWindowTitle) { + $WindowTitle = $myParameters["WindowTitle"] = "$($_.MainWindowTitle)" + } + } + + # Window capture is a bit of a tricky one. + # In order to get the WindowTitle to match that OBS needs, we need to look thru the input properties list. + # and for that, an input needs to exist. + if (-not $myParameters["Name"]) { + if ($myParameters["WindowTitle"]) { + $Name = $myParameters["Name"] = "WindowCapture-" + $myParameters["WindowTitle"] + } + else { + $Name = "WindowCapture" + } + } + + + + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] -as [bool] + } + } + } + + if ($null -ne $CaptureMethod) { + $myParameterData["method"] = $CaptureMethod + } + if ($CapturePriority -eq 'ExactMatch') { + $myParameterData["priority"] = 1 + } + elseif ($CapturePriority -eq 'SameType') { + $myParameterData["priority"] = 0 + } + elseif ($CapturePriority -eq 'SameExecutable') { + $myParameterData["priority"] = 2 + } + + $addSplat = @{ + sceneName = $myParameters["Scene"] + inputName = $myParameters["Name"] + inputKind = "window_capture" + inputSettings = $myParameterData + NoResponse = $myParameters["NoResponse"] + } + + # If -SceneItemEnabled was passed, + if ($myParameters.Contains('SceneItemEnabled')) { + # propagate it to Add-OBSInput. + $addSplat.SceneItemEnabled = $myParameters['SceneItemEnabled'] -as [bool] + } + + # Add the input. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + $possibleWindows = Get-OBSInputPropertiesListPropertyItems -InputName $addSplat.inputName -PropertyName window + foreach ($windowInfo in $possibleWindows) { + if (-not $WindowTitle) { continue } + if ( + ($windowInfo.itemName -eq $WindowTitle) -or + ($windowInfo.ItemValue -eq $WindowTitle) -or + ($windowInfo.ItemName -replace '\[[^\[\]]+\]\:\s' -eq $WindowTitle) -or + ($windowInfo.ItemValue -like "*$WindowTitle*") -or + ($windowInfo.ItemName -like "*$WindowTitle*") + ) { + $myParameterData["window"] = $windowInfo.itemValue + break + } + } + + # If -PassThru was passed + if ($MyParameters["PassThru"]) { + # pass it down to each command + # Otherwise, remove SceneItemEnabled, InputKind, and SceneName + $addSplat.PassThru = $true + $addSplat.Remove('SceneItemEnabled') + $addSplat.Remove('inputKind') + $addSplat.Remove('sceneName') + # and passthru Set-OBSInputSettings. + Set-OBSInputSettings @addSplat + + return + } + + if ($Force) { # If we do, remove the input + Remove-OBSInput -InputName $addSplat.inputName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # get the input from the scene. + Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $name + } + } else { + # Otherwise, get the input from the scene, + $sceneItem = Get-OBSSceneItem -sceneName $myParameters["Scene"] | + Where-Object SourceName -eq $myParameters["Name"] + # update the input settings + $sceneItem.Input.Settings = $addSplat.inputSettings + $sceneItem # and return the scene item. + } + + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBS3dSwapTransitionShader { + +[Alias('Set-OBS3dSwapTransitionShader','Add-OBS3dSwapTransitionShader')] +param( +# Set the image_a of OBS3dSwapTransitionShader +[Alias('image_a')] +[ComponentModel.DefaultBindingProperty('image_a')] +[String] +$ImageA, +# Set the image_b of OBS3dSwapTransitionShader +[Alias('image_b')] +[ComponentModel.DefaultBindingProperty('image_b')] +[String] +$ImageB, +# Set the transition_time of OBS3dSwapTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBS3dSwapTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# Set the reflection of OBS3dSwapTransitionShader +[ComponentModel.DefaultBindingProperty('reflection')] +[Single] +$Reflection, +# Set the perspective of OBS3dSwapTransitionShader +[ComponentModel.DefaultBindingProperty('perspective')] +[Single] +$Perspective, +# Set the depth of OBS3dSwapTransitionShader +[ComponentModel.DefaultBindingProperty('depth')] +[Single] +$Depth, +# Set the background_color of OBS3dSwapTransitionShader +[Alias('background_color')] +[ComponentModel.DefaultBindingProperty('background_color')] +[String] +$BackgroundColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = '3d_swap_transition' +$ShaderNoun = 'OBS3dSwapTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/MlXGzf + +uniform texture2d image_a; +uniform texture2d image_b; +uniform float transition_time = 0.5; +uniform bool convert_linear = true; + +uniform float reflection< + string label = "Reflection (0.4)"; + string widget_type = "slider"; + float minimum = 0.00; + float maximum = 1.00; + float step = 0.01; +> = 0.4; +uniform float perspective< + string label = "Perspective (0.2)"; + string widget_type = "slider"; + float minimum = 0.00; + float maximum = 1.00; + float step = 0.01; +> = .2; +uniform float depth< + string label = "Depth (3.0)"; + string widget_type = "slider"; + float minimum = 1.00; + float maximum = 10.00; + float step = 0.1; +> = 3.; + +#ifndef OPENGL +#define lessThan(a,b) (a < b) +#endif + + +uniform float4 background_color = {0.0, 0.0, 0.0, 1.0}; + +bool inBounds (float2 p) { + return all(lessThan(float2(0.0,0.0), p)) && all(lessThan(p, float2(1.0,1.0))); +} + +float2 project (float2 p) { + return p * float2(1.0, -1.2) + float2(0.0, 2.22); +} + +float4 bgColor (float2 p, float2 pfr, float2 pto) { + float4 c = background_color; + pfr = project(pfr); + if (inBounds(pfr)) { + c += lerp(background_color, image_a.Sample(textureSampler, pfr), reflection * lerp(0.0, 1.0, pfr.y)); + } + pto = project(pto); + if (inBounds(pto)) { + c += lerp(background_color, image_b.Sample(textureSampler, pto), reflection * lerp(0.0, 1.0, pto.y)); + } + return c; +} + +float4 mainImage(VertData v_in) : TARGET { + float2 p = v_in.uv; + float2 pfr = float2(-1.,-1.); + float2 pto = float2(-1.,-1.); + + float progress = transition_time; + float size = lerp(1.0, depth, progress); + float persp = perspective * progress; + pfr = (p + float2(-0.0, -0.5)) * float2(size/(1.0-perspective*progress), size/(1.0-size*persp*p.x)) + float2(0.0, 0.5); + + size = lerp(1.0, depth, 1.-progress); + persp = perspective * (1.-progress); + pto = (p + float2(-1.0, -0.5)) * float2(size/(1.0-perspective*(1.0-progress)), size/(1.0-size*persp*(0.5-p.x))) + float2(1.0, 0.5); + + bool fromOver = progress < 0.5; + float4 rgba = background_color; + if (fromOver) { + if (inBounds(pfr)) { + rgba = image_a.Sample(textureSampler, pfr); + } + else if (inBounds(pto)) { + rgba = image_b.Sample(textureSampler, pto); + } + else { + rgba = bgColor(p, pfr, pto); + } + } + else { + if (inBounds(pto)) { + rgba = image_b.Sample(textureSampler, pto); + } + else if (inBounds(pfr)) { + rgba = image_a.Sample(textureSampler, pfr); + } + else { + rgba = bgColor(p, pfr, pto); + } + } + if (convert_linear) + rgba.rgb = srgb_nonlinear_to_linear(rgba.rgb); + return rgba; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSAddShader { + +[Alias('Set-OBSAddShader','Add-OBSAddShader')] +param( +# Set the other_image of OBSAddShader +[Alias('other_image')] +[ComponentModel.DefaultBindingProperty('other_image')] +[String] +$OtherImage, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Add' +$ShaderNoun = 'OBSAddShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d other_image; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 other = other_image.Sample(textureSampler, v_in.uv); + float4 base = image.Sample(textureSampler, v_in.uv); + return clamp(base + other, 0.0, 1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSAlphaBorderShader { + +[Alias('Set-OBSAlphaBorderShader','Add-OBSAlphaBorderShader')] +param( +# Set the border_color of OBSAlphaBorderShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_thickness of OBSAlphaBorderShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the alpha_cut_off of OBSAlphaBorderShader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'alpha_border' +$ShaderNoun = 'OBSAlphaBorderShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float4 border_color< + string label = "Border color"; +> = {0.0,0.0,0.0,1.0}; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform float alpha_cut_off< + string label = "Alpha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 pix = image.Sample(textureSampler, v_in.uv); + if (pix.a > alpha_cut_off) + return pix; + [loop] for(int x = -border_thickness;x alpha_cut_off) + return border_color; + } + } + } + return pix; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSAlphaGamingBentCameraShader { + +[Alias('Set-OBSAlphaGamingBentCameraShader','Add-OBSAlphaGamingBentCameraShader')] +param( +# Set the left_side_width of OBSAlphaGamingBentCameraShader +[Alias('left_side_width')] +[ComponentModel.DefaultBindingProperty('left_side_width')] +[Single] +$LeftSideWidth, +# Set the left_side_size of OBSAlphaGamingBentCameraShader +[Alias('left_side_size')] +[ComponentModel.DefaultBindingProperty('left_side_size')] +[Single] +$LeftSideSize, +# Set the left_side_shadow of OBSAlphaGamingBentCameraShader +[Alias('left_side_shadow')] +[ComponentModel.DefaultBindingProperty('left_side_shadow')] +[Single] +$LeftSideShadow, +# Set the left_flip_width of OBSAlphaGamingBentCameraShader +[Alias('left_flip_width')] +[ComponentModel.DefaultBindingProperty('left_flip_width')] +[Single] +$LeftFlipWidth, +# Set the left_flip_shadow of OBSAlphaGamingBentCameraShader +[Alias('left_flip_shadow')] +[ComponentModel.DefaultBindingProperty('left_flip_shadow')] +[Single] +$LeftFlipShadow, +# Set the right_side_width of OBSAlphaGamingBentCameraShader +[Alias('right_side_width')] +[ComponentModel.DefaultBindingProperty('right_side_width')] +[Single] +$RightSideWidth, +# Set the right_side_size of OBSAlphaGamingBentCameraShader +[Alias('right_side_size')] +[ComponentModel.DefaultBindingProperty('right_side_size')] +[Single] +$RightSideSize, +# Set the right_side_shadow of OBSAlphaGamingBentCameraShader +[Alias('right_side_shadow')] +[ComponentModel.DefaultBindingProperty('right_side_shadow')] +[Single] +$RightSideShadow, +# Set the right_flip_width of OBSAlphaGamingBentCameraShader +[Alias('right_flip_width')] +[ComponentModel.DefaultBindingProperty('right_flip_width')] +[Single] +$RightFlipWidth, +# Set the right_flip_shadow of OBSAlphaGamingBentCameraShader +[Alias('right_flip_shadow')] +[ComponentModel.DefaultBindingProperty('right_flip_shadow')] +[Single] +$RightFlipShadow, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'alpha-gaming-bent-camera' +$ShaderNoun = 'OBSAlphaGamingBentCameraShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float left_side_width< + string label = "Left side width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; +uniform float left_side_size< + string label = "Left side size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform float left_side_shadow< + string label = "Left side shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.8; +uniform float left_flip_width< + string label = "Left flip width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.05; +uniform float left_flip_shadow< + string label = "Left flip shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; + +uniform float right_side_width< + string label = "Right side width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; +uniform float right_side_size< + string label = "Right side size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform float right_side_shadow< + string label = "Right side shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.8; +uniform float right_flip_width< + string label = "Right flip width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.05; +uniform float right_flip_shadow< + string label = "Right flip shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos=v_in.uv; + float shadow = 1.0; + if(pos.x < left_side_width){ + pos.y -= 0.5; + pos.y /= left_side_size; + pos.y += 0.5; + pos.x -= left_side_width + left_flip_width; + pos.x /= left_side_size; + pos.x += left_side_width + left_flip_width; + shadow = left_side_shadow; + }else if(pos.x < left_side_width + left_flip_width){ + float factor = 1.0 - ((left_side_width + left_flip_width)-pos.x)/left_flip_width*(1.0 - left_side_size); + pos.y -= 0.5; + pos.y /= factor; + pos.y += 0.5; + pos.x -= left_side_width + left_flip_width; + pos.x /= factor; + pos.x += left_side_width + left_flip_width; + shadow = left_flip_shadow; + } + + if(1.0 - pos.x < right_side_width){ + pos.y -= 0.5; + pos.y /= right_side_size; + pos.y += 0.5; + pos.x -= 1.0 - (right_side_width + right_flip_width); + pos.x /= right_side_size; + pos.x += 1.0 - (right_side_width + right_flip_width); + shadow = right_side_shadow; + }else if(1.0 - pos.x < right_side_width + right_flip_width){ + float factor = 1.0 - ((right_side_width + right_flip_width) - (1.0 - pos.x))/right_flip_width*(1.0 - right_side_size); + pos.y -= 0.5; + pos.y /= factor; + pos.y += 0.5; + pos.x -= 1.0 - (right_side_width + right_flip_width); + pos.x /= factor; + pos.x += 1.0 -(right_side_width + right_flip_width); + shadow = right_flip_shadow; + } + float4 p_color = image.Sample(textureSampler, pos); + p_color.rgb *= shadow; + return p_color; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSAnimatedPathShader { + +[Alias('Set-OBSAnimatedPathShader','Add-OBSAnimatedPathShader')] +param( +# Set the ViewProj of OBSAnimatedPathShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSAnimatedPathShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSAnimatedPathShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSAnimatedPathShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSAnimatedPathShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSAnimatedPathShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSAnimatedPathShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the speed_percent of OBSAnimatedPathShader +[Alias('speed_percent')] +[ComponentModel.DefaultBindingProperty('speed_percent')] +[Int32] +$SpeedPercent, +# Set the path_map of OBSAnimatedPathShader +[Alias('path_map')] +[ComponentModel.DefaultBindingProperty('path_map')] +[String] +$PathMap, +# Set the reverse of OBSAnimatedPathShader +[ComponentModel.DefaultBindingProperty('reverse')] +[Management.Automation.SwitchParameter] +$Reverse, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'animated_path' +$ShaderNoun = 'OBSAnimatedPathShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Path effect By Charles Fettinger (https://github.com/Oncorporation) 3/2019 +//Converted to OpenGL by Q-mii & Exeldro February 24, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; + +uniform int speed_percent = 100; +uniform texture2d path_map; +uniform bool reverse = false; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float4 convert_pmalpha(float4 c) +{ + float4 ret = c; + if (c.a >= 0.001) + ret.xyz /= c.a; + else + ret = float4(0.0, 0.0, 0.0, 0.0); + return ret; +} + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + float3 pos = v_in.pos.xyz; + float3 current_pos; + float speed = speed_percent * 0.01; + //vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + float t = 1.0 + sin(elapsed_time * speed) ; + // combine luma texture and user defined shine color + float luma = path_map.Sample(textureSampler, v_in.uv).x; + if (reverse) + { + luma = 1.0 - luma; + } + + float time = lerp(0.0f, 1.0f , t - 1.0); + + // set current position in time + current_pos.x = 0; + current_pos.y = 0; + + + float2 offset = uv_offset; + if (speed == 0.0f) + { + offset.x = 0.0f; + offset.y = 0.0f; + } + else + { + offset.x = uv_offset.x + time * luma; + offset.y = uv_offset.y + time * luma; + } + + vert_out.pos = mul(float4(current_pos, 1), ViewProj); + vert_out.uv = v_in.uv * uv_scale + offset; + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSAnimatedTextureShader { + +[Alias('Set-OBSAnimatedTextureShader','Add-OBSAnimatedTextureShader')] +param( +# Set the ViewProj of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSAnimatedTextureShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSAnimatedTextureShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSAnimatedTextureShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSAnimatedTextureShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSAnimatedTextureShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSAnimatedTextureShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the notes of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the Animation_Image of OBSAnimatedTextureShader +[Alias('Animation_Image')] +[ComponentModel.DefaultBindingProperty('Animation_Image')] +[String] +$AnimationImage, +# Set the Colorization_Image of OBSAnimatedTextureShader +[Alias('Colorization_Image')] +[ComponentModel.DefaultBindingProperty('Colorization_Image')] +[String] +$ColorizationImage, +# Set the reverse of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('reverse')] +[Management.Automation.SwitchParameter] +$Reverse, +# Set the bounce of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('bounce')] +[Management.Automation.SwitchParameter] +$Bounce, +# Set the center_animation of OBSAnimatedTextureShader +[Alias('center_animation')] +[ComponentModel.DefaultBindingProperty('center_animation')] +[Management.Automation.SwitchParameter] +$CenterAnimation, +# Set the polar_animation of OBSAnimatedTextureShader +[Alias('polar_animation')] +[ComponentModel.DefaultBindingProperty('polar_animation')] +[Management.Automation.SwitchParameter] +$PolarAnimation, +# Set the polar_angle of OBSAnimatedTextureShader +[Alias('polar_angle')] +[ComponentModel.DefaultBindingProperty('polar_angle')] +[Single] +$PolarAngle, +# Set the polar_height of OBSAnimatedTextureShader +[Alias('polar_height')] +[ComponentModel.DefaultBindingProperty('polar_height')] +[Single] +$PolarHeight, +# Set the speed_horizontal_percent of OBSAnimatedTextureShader +[Alias('speed_horizontal_percent')] +[ComponentModel.DefaultBindingProperty('speed_horizontal_percent')] +[Single] +$SpeedHorizontalPercent, +# Set the speed_vertical_percent of OBSAnimatedTextureShader +[Alias('speed_vertical_percent')] +[ComponentModel.DefaultBindingProperty('speed_vertical_percent')] +[Single] +$SpeedVerticalPercent, +# Set the tint_speed_horizontal_percent of OBSAnimatedTextureShader +[Alias('tint_speed_horizontal_percent')] +[ComponentModel.DefaultBindingProperty('tint_speed_horizontal_percent')] +[Single] +$TintSpeedHorizontalPercent, +# Set the tint_speed_vertical_percent of OBSAnimatedTextureShader +[Alias('tint_speed_vertical_percent')] +[ComponentModel.DefaultBindingProperty('tint_speed_vertical_percent')] +[Single] +$TintSpeedVerticalPercent, +# Set the Alpha of OBSAnimatedTextureShader +[ComponentModel.DefaultBindingProperty('Alpha')] +[Single] +$Alpha, +# Set the Use_Animation_Image_Color of OBSAnimatedTextureShader +[Alias('Use_Animation_Image_Color')] +[ComponentModel.DefaultBindingProperty('Use_Animation_Image_Color')] +[Management.Automation.SwitchParameter] +$UseAnimationImageColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'animated_texture' +$ShaderNoun = 'OBSAnimatedTextureShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Animated Texture By Charles Fettinger (https://github.com/Oncorporation) 3/2020 +// Animates a texture with polar sizing and color options +// for use with obs-shaderfilter 1.0 +//Converted to OpenGL by Q-mii & Exeldro February 24, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; +uniform string notes; + +uniform texture2d Animation_Image; +uniform texture2d Colorization_Image; +uniform bool reverse = false; +uniform bool bounce = false; +uniform bool center_animation = true; +uniform bool polar_animation = true; +uniform float polar_angle = 90.0; +uniform float polar_height = 1.0; +uniform float speed_horizontal_percent = 50; +uniform float speed_vertical_percent = 5; +uniform float tint_speed_horizontal_percent = 50; +uniform float tint_speed_vertical_percent = 5; +uniform float Alpha = 1.0; +uniform bool Use_Animation_Image_Color = true; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float4 convert_pmalpha(float4 color) +{ + float4 ret = color; + if (color.a >= 0.001) + ret.xyz /= color.a; + else + ret = float4(0.0, 0.0, 0.0, 0.0); + return ret; +} + +float2 time(float2 speed_dir) +{ + float PI = 3.1415926535897932384626433832795; //acos(-1); + + float2 t = (elapsed_time * speed_dir) ; + if (bounce) + { + // coordinates moved from -1.0 to 1.0 to 0.0 to 2.0 then modified to fit screen + t.x = sin(elapsed_time * speed_dir.x * PI * 0.6667) + 1.0; + t.y = cos(elapsed_time * speed_dir.y * PI) + 1.0; + t *= -0.5; + } + + if (reverse) + t = t * -1; + return t; +} + +VertData mainTransform(VertData v_in) +{ + float2 speed_dir = float2(speed_horizontal_percent * 0.01, speed_vertical_percent * 0.01); + + VertData vert_out; + //float2 direction = abs(sin((elapsed_time - 0.001) * speed_dir)); + + float2 offset = uv_offset; + + if (center_animation) + { + vert_out.uv = v_in.uv - 0.5f; + } + else + { + offset += time(speed_dir); + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + offset; + } + + return vert_out; +} + + +float4 mainImage(VertData v_in) : TARGET +{ + float PI = 3.1415926535897932384626433832795; //acos(-1); + float PI180th = 0.0174532925; //PI divided by 180 + + float2 speed_dir = float2(speed_horizontal_percent * 0.01, speed_vertical_percent * 0.01); + float2 tint_speed_dir = float2(tint_speed_horizontal_percent * 0.01, tint_speed_vertical_percent * 0.01); + + //compensate for background vertex shader values + float2 background_offset = float2(-.5,-.5); + if (!center_animation) + background_offset = time(speed_dir); + float4 rgba = image.Sample(textureSampler, v_in.uv - background_offset); //float4(0.0,0.0,0.0,0.01); + + // Convert our texture coordinates to polar form: + if (polar_animation) { + + float2 polar = float2( + atan2(v_in.uv.y, v_in.uv.x) / (polar_angle * PI180th * 4), // angle + log(dot(v_in.uv, v_in.uv)) * -1 * (polar_height * PI180th * PI) // log-radius + ); + + // Check how much our texture sampling point changes between + // neighbouring pixels to the sides (ddx) and above/below (ddy) + ///float4 gradient = float4(ddx(polar), ddy(polar)); + + // If our angle wraps around between adjacent samples, + // discard one full rotation from its value and keep the fraction. + ///gradient.xz = frac(gradient.xz + 1.5f) - 0.5f; + + float2 tintUVs = polar * 4; + tintUVs += time(tint_speed_dir); + + // Apply texture scale + polar *= 4; + // Scroll the texture over time. + polar += time(speed_dir); + float4 animation = Animation_Image.Sample(textureSampler, frac(polar)); + + + float keyAmount = distance(animation.rgb,float3(0.0,0.0,0.0)); + float intensity = dot(animation.rgb ,float3(0.299,0.587,0.114)); + //animation.a = clamp((intensity),0.0,1.0); + if (Use_Animation_Image_Color) + { + animation.rgb *= Colorization_Image.Sample(textureSampler, frac(tintUVs)).rgb; + } + else + { + animation.rgb = Colorization_Image.Sample(textureSampler, frac(tintUVs)).rgb; + } + //if (keyAmount > 0.5f) + rgba = lerp(rgba, animation, animation.a * Alpha); + } + + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSAsciiShader { + +[Alias('Set-OBSAsciiShader','Add-OBSAsciiShader')] +param( +# Set the scale of OBSAsciiShader +[ComponentModel.DefaultBindingProperty('scale')] +[Int32] +$Scale, +# Set the base_color of OBSAsciiShader +[Alias('base_color')] +[ComponentModel.DefaultBindingProperty('base_color')] +[String] +$BaseColor, +# Set the monochrome of OBSAsciiShader +[ComponentModel.DefaultBindingProperty('monochrome')] +[Management.Automation.SwitchParameter] +$Monochrome, +# Set the character_set of OBSAsciiShader +[Alias('character_set')] +[ComponentModel.DefaultBindingProperty('character_set')] +[Int32] +$CharacterSet, +# Set the note of OBSAsciiShader +[ComponentModel.DefaultBindingProperty('note')] +[String] +$Note, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'ascii' +$ShaderNoun = 'OBSAsciiShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// ASCII shader for use with obs-shaderfilter 7/2020 v1.0 +// https://github.com/Oncorporation/obs-shaderfilter +// Based on the following shaders: +// https://www.shadertoy.com/view/3dtXD8 - Created by DSWebber in 2019-10-24 +// https://www.shadertoy.com/view/lssGDj - Created by movAX13h in 2013-09-22 + +// Modifications of original shaders include: +// - Porting from GLSL to HLSL +// - Combining characters sets from both source shaders +// - Adding support for parameters from OBS for monochrome rendering, scaling and dynamic character set +// +// Add Additional Characters with this tool: http://thrill-project.com/archiv/coding/bitmap/ +// converts a bitmap into int then decodes it to look like text + +uniform int scale< + string label = "Scale"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 1; // Size of characters +uniform float4 base_color< + string label = "Base color"; +> = {0.0,1.0,0.0,1.0}; // Monochrome base color +uniform bool monochrome< + string label = "Monochrome"; +> = false; +uniform int character_set< + string label = "Character set"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Large set of non-letters"; + int option_1_value = 1; + string option_1_label = "Small set of capital letters"; +> = 0; +uniform string note< + string widget_type = "info"; +> = "Base color is used as monochrome base color."; + +float character(int n, float2 p) +{ + p = floor(p*float2(4.0, 4.0) + 2.5); + if (clamp(p.x, 0.0, 4.0) == p.x) + { + if (clamp(p.y, 0.0, 4.0) == p.y) + { + int a = int(round(p.x) + 5.0 * round(p.y)); + if (((n >> a) & 1) == 1) return 1.0; + } + } + return 0.0; +} + +float2 mod(float2 x, float2 y) +{ + return x - y * floor(x/y); +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 iResolution = uv_size*uv_scale; + float2 pix = v_in.pos.xy; + float4 c = image.Sample(textureSampler, floor(pix/float2(scale*8.0,scale*8.0))*float2(scale*8.0,scale*8.0)/iResolution.xy); + + float gray = 0.3 * c.r + 0.59 * c.g + 0.11 * c.b; + + int n; + int charset = clamp(character_set, 0, 1); + + if (charset==0) + { + if (gray <= 0.2) n = 4096; // . + if (gray > 0.2) n = 65600; // : + if (gray > 0.3) n = 332772; // * + if (gray > 0.4) n = 15255086; // o + if (gray > 0.5) n = 23385164; // & + if (gray > 0.6) n = 15252014; // 8 + if (gray > 0.7) n = 13199452; // @ + if (gray > 0.8) n = 11512810; // # + } + else if (charset==1) + { + if (gray <= 0.1) n = 0; + if (gray > 0.1) n = 9616687; // R + if (gray > 0.3) n = 32012382; // S + if (gray > 0.5) n = 16303663; // D + if (gray > 0.7) n = 15255086; // O + if (gray > 0.8) n = 16301615; // B + } + + float2 p = mod(pix/float2(scale*4.0,scale*4.0),float2(2.0,2.0)) - float2(1.0,1.0); + + if (monochrome) + { + c.rgb = base_color.rgb; + } + c = c*character(n, p); + + return c; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSAspectRatioShader { + +[Alias('Set-OBSAspectRatioShader','Add-OBSAspectRatioShader')] +param( +# Set the ViewProj of OBSAspectRatioShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSAspectRatioShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSAspectRatioShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSAspectRatioShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSAspectRatioShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSAspectRatioShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSAspectRatioShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSAspectRatioShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the borderColor of OBSAspectRatioShader +[ComponentModel.DefaultBindingProperty('borderColor')] +[String] +$BorderColor, +# Set the notes of OBSAspectRatioShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'aspect_ratio' +$ShaderNoun = 'OBSAspectRatioShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro March 8, 2022 - DO NOT USE THIS IT WAS NEVER COMPLETED +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + + +// variables +uniform float4 borderColor = {0,0,0,0}; +float targetaspect = 1.7777777777777777777777f; //16.0f / 9.0f; +uniform string notes; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + + float2 hw = uv_scale; + // determine the game window''s current aspect ratio + float windowaspect = hw.x / hw.y; + + // current viewport height should be scaled by this amount + float scaleheight = windowaspect / targetaspect; + + + // if scaled height is less than current height, add letterbox + if (scaleheight < 1.0f) + { + Rect rect = camera.rect; + + rect.width = 1.0f; + rect.height = scaleheight; + rect.x = 0; + rect.y = (1.0f - scaleheight) / 2.0f; + + camera.rect = rect; + } + else // add pillarbox + { + float scalewidth = 1.0f / scaleheight; + + Rect rect = camera.rect; + + rect.width = scalewidth; + rect.height = 1.0f; + rect.x = (1.0f - scalewidth) / 2.0f; + rect.y = 0; + + camera.rect = rect; + } + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + if (v_in.uv.x < 0 || v_in.uv.x > 1 || v_in.uv.y < 0 || v_in.uv.y > 1) + { + return borderColor; + } + else + { + return image.Sample(textureSampler, v_in.uv); + } +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSBackgroundRemovalShader { + +[Alias('Set-OBSBackgroundRemovalShader','Add-OBSBackgroundRemovalShader')] +param( +# Set the ViewProj of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSBackgroundRemovalShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSBackgroundRemovalShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSBackgroundRemovalShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSBackgroundRemovalShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSBackgroundRemovalShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSBackgroundRemovalShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the notes of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the target of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('target')] +[String] +$Target, +# Set the color of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('color')] +[String] +$Color, +# Set the opacity of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('opacity')] +[Single] +$Opacity, +# Set the invert of OBSBackgroundRemovalShader +[ComponentModel.DefaultBindingProperty('invert')] +[Management.Automation.SwitchParameter] +$Invert, +# Set the Convert_709to601 of OBSBackgroundRemovalShader +[Alias('Convert_709to601')] +[ComponentModel.DefaultBindingProperty('Convert_709to601')] +[Management.Automation.SwitchParameter] +$Convert709to601, +# Set the Convert_601to709 of OBSBackgroundRemovalShader +[Alias('Convert_601to709')] +[ComponentModel.DefaultBindingProperty('Convert_601to709')] +[Management.Automation.SwitchParameter] +$Convert601to709, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'background_removal' +$ShaderNoun = 'OBSBackgroundRemovalShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// background removal effect By Charles Fettinger (https://github.com/Oncorporation) 4/2019 +//Converted to OpenGL by Exeldro February 19, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; +uniform string notes = "Opacity between 10 and 20 works. Adjust `Color` from white to fix environmental changes.\r\r\nUsage:\r\n1) Disable `Auto` settings like focus, white balance, etc.\r\n2) Take a video of just the background. \r\n3) Take a frame and use it as the background image. Windows Snipping Tool (%windir%\\system32\\SnippingTool.exe). \r\r\nThis eliminates differences based upon camera/video settings."; + +uniform texture2d target; +uniform float4 color; +uniform float opacity = 15.0; +uniform bool invert; +uniform bool Convert_709to601; +uniform bool Convert_601to709; + + +sampler_state textureSampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +struct VertDataIn { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +struct VertDataOut { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + float2 uv2 : TEXCOORD1; +}; + +float dot(float3 a,float3 b){ + return a.x*b.x+a.y*b.y+a.z*b.z; +} + +//BT.601 to BT.709 +// Correct video colorspace BT.601 [SD] to BT.709 [HD] for HD video input +// Use this shader only if BT.709 [HD] encoded video is incorrectly matrixed to full range RGB with the BT.601 [SD] colorspace. +float4 Convert601to709(float4 rgba) +{ + float3 s1 = rgba.rgb; + s1 = s1.rrr * float3(0.299, -0.1495 / 0.886, 0.5) + s1.ggg * float3(0.587, -0.2935 / 0.886, -0.2935 / 0.701) + s1.bbb * float3(0.114, 0.5, -0.057 / 0.701); // RGB to Y''CbCr, BT.601 [SD] colorspace + return (s1.rrr + float3(0, -0.1674679 / 0.894, 1.8556) * s1.ggg + float3(1.5748, -0.4185031 / 0.894, 0) * s1.bbb).rgbb; // Y''CbCr to RGB output, BT.709 [HD] colorspace +} + +//BT.709 to BT.601 +float4 Convert709to601(float4 rgba) +{ + float3 s1 = rgba.rgb; + s1 = float3(dot(float3(.2126, .7152, .0722), s1), dot(float3(-.1063 / .9278, -.3576 / .9278, .5), s1), dot(float3(.5, -.3576 / .7874, -.0361 / .7874), s1)); + return float3(s1.x + 1.402*s1.z, dot(s1, float3(1, -.202008 / .587, -.419198 / .587)), s1.x + 1.772*s1.y).rgbb; +} + +VertDataOut VSDefault(VertDataIn v_in) +{ + VertDataOut vert_out; + vert_out.pos = mul(float4(v_in.pos.x, v_in.pos.y, v_in.pos.z, 1.0), ViewProj); + vert_out.uv = v_in.uv; + vert_out.uv2 = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +float4 PSColorMaskRGBA(VertDataOut v_in) : TARGET +{ + float Tolerance = opacity * 0.01; + float4 rgba = image.Sample(textureSampler, v_in.uv); + + float4 targetRGB = target.Sample(textureSampler, v_in.uv2) * color; + if (invert){ + targetRGB.rgb = 1.0 - targetRGB.rgb; + } + if (Convert_709to601) + { + rgba.rgb = Convert709to601(rgba).rgb; + targetRGB.rgb = Convert709to601(targetRGB).rgb; + } + + if (Convert_601to709) + { + rgba.rgb = Convert601to709(rgba).rgb; + targetRGB.rbg = Convert601to709(targetRGB).rgb; + } + + float4 shadowRGB = targetRGB * targetRGB; + + if ((abs(targetRGB.r - rgba.r) <= Tolerance && + abs(targetRGB.g - rgba.g) <= Tolerance && + abs(targetRGB.b - rgba.b) <= Tolerance) + || (abs(shadowRGB.r - rgba.r) <= Tolerance && + abs(shadowRGB.g - rgba.g) <= Tolerance && + abs(shadowRGB.b - rgba.b) <= Tolerance)) + { + rgba.rgba = float4(0,0,0,0); + } + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(v_in); + pixel_shader = PSColorMaskRGBA(v_in); + } +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSBlendOpacityShader { + +[Alias('Set-OBSBlendOpacityShader','Add-OBSBlendOpacityShader')] +param( +# Set the Vertical of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# Set the Rotational of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Rotational')] +[Management.Automation.SwitchParameter] +$Rotational, +# Set the Rotation_Offset of OBSBlendOpacityShader +[Alias('Rotation_Offset')] +[ComponentModel.DefaultBindingProperty('Rotation_Offset')] +[Single] +$RotationOffset, +# Set the Opacity_Start_Percent of OBSBlendOpacityShader +[Alias('Opacity_Start_Percent')] +[ComponentModel.DefaultBindingProperty('Opacity_Start_Percent')] +[Single] +$OpacityStartPercent, +# Set the Opacity_End_Percent of OBSBlendOpacityShader +[Alias('Opacity_End_Percent')] +[ComponentModel.DefaultBindingProperty('Opacity_End_Percent')] +[Single] +$OpacityEndPercent, +# Set the Spread of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Spread')] +[Single] +$Spread, +# Set the Speed of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Apply_To_Alpha_Layer of OBSBlendOpacityShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the Notes of OBSBlendOpacityShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'blend_opacity' +$ShaderNoun = 'OBSBlendOpacityShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// opacity blend shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 14, 2022 +uniform bool Vertical; +uniform bool Rotational; +uniform float Rotation_Offset< + string label = "Rotation Offset"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 6.28318531; + float step = 0.01; +> = 0.0; +uniform float Opacity_Start_Percent< + string label = "Opacity Start Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 0.0; +uniform float Opacity_End_Percent< + string label = "Opacity End Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 100.0; +uniform float Spread< + string label = "Spread"; + string widget_type = "slider"; + float minimum = 0.25; + float maximum = 10.0; + float step = 0.01; +> = 0.5; +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.0; +uniform bool Apply_To_Alpha_Layer = true; +uniform string Notes< + string widget_type = "info"; +> = "Spread is wideness of opacity blend and is limited between .25 and 10. Edit at your own risk. Invert Start and End to Reverse effect."; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 point_color = image.Sample(textureSampler, v_in.uv); + float luminance = 0.299*point_color.r+0.587*point_color.g+0.114*point_color.b; + float4 gray = float4(luminance,luminance,luminance, 1); + + float2 lPos = (v_in.uv * uv_scale + uv_offset) / clamp(Spread, 0.25, 10.0); + float time = (elapsed_time * clamp(Speed, -5.0, 5.0)) / clamp(Spread, 0.25, 10.0); + float dist = distance(v_in.uv , (float2(0.99, 0.99) * uv_scale + uv_offset)); + + if (point_color.a > 0.0 || Apply_To_Alpha_Layer == false) + { + //set opacity and direction + float opacity = (-1 * lPos.x) * 0.5; + + if (Rotational && (Vertical == false)) + { + float timeWithOffset = time + Rotation_Offset; + float sine = sin(timeWithOffset); + float cosine = cos(timeWithOffset); + opacity = (lPos.x * cosine + lPos.y * sine) * 0.5; + } + + if (Vertical && (Rotational == false)) + { + opacity = (-1 * lPos.y) * 0.5; + } + + opacity += time; + opacity = frac(opacity); + point_color.a = lerp(Opacity_Start_Percent * 0.01, Opacity_End_Percent * 0.01, clamp(opacity, 0.0, 1.0)); + } + return point_color; +} + + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSBlinkShader { + +[Alias('Set-OBSBlinkShader','Add-OBSBlinkShader')] +param( +# Set the speed of OBSBlinkShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'blink' +$ShaderNoun = 'OBSBlinkShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 color = image.Sample(textureSampler, v_in.uv); + float t = elapsed_time * speed; + return float4(color.r, color.g, color.b, color.a * (1 + sin(t)) / 2); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSBloomShader { + +[Alias('Set-OBSBloomShader','Add-OBSBloomShader')] +param( +# Set the Angle_Steps of OBSBloomShader +[Alias('Angle_Steps')] +[ComponentModel.DefaultBindingProperty('Angle_Steps')] +[Int32] +$AngleSteps, +# Set the Radius_Steps of OBSBloomShader +[Alias('Radius_Steps')] +[ComponentModel.DefaultBindingProperty('Radius_Steps')] +[Int32] +$RadiusSteps, +# Set the ampFactor of OBSBloomShader +[ComponentModel.DefaultBindingProperty('ampFactor')] +[Single] +$AmpFactor, +# Set the notes of OBSBloomShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'bloom' +$ShaderNoun = 'OBSBloomShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Bloom shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 15, 2022 +uniform int Angle_Steps< + string label = "Angle Steps"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 5; // +uniform int Radius_Steps< + string label = "Radius Steps"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 20; + int step = 1; +> = 9; // +uniform float ampFactor< + string label = "amp Factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 2.0; +uniform string notes< + string widget_type = "info"; +> = "Steps limited in range from 0 to 20. Edit bloom.shader to remove limits at your own risk."; + +float4 mainImage(VertData v_in) : TARGET +{ + int radiusSteps = clamp(Radius_Steps, 0, 20); + int angleSteps = clamp(Angle_Steps, 1, 20); + float PI = 3.1415926535897932384626433832795;//acos(-1); + float minRadius = (0.0 * uv_pixel_interval.y); + float maxRadius = (10.0 * uv_pixel_interval.y); + + float4 c0 = image.Sample(textureSampler, v_in.uv); + float4 outputPixel = c0; + float4 accumulatedColor = float4(0,0,0,0); + + int totalSteps = radiusSteps * angleSteps; + float angleDelta = (2.0 * PI) / float(angleSteps); + float radiusDelta = (maxRadius - minRadius) / float(radiusSteps); + + for (int radiusStep = 0; radiusStep < radiusSteps; radiusStep++) { + float radius = minRadius + float(radiusStep) * radiusDelta; + + for (float angle=0.0; angle <(2.0*PI); angle += angleDelta) { + float2 currentCoord; + + float xDiff = radius * cos(angle); + float yDiff = radius * sin(angle); + + currentCoord = v_in.uv + float2(xDiff, yDiff); + float4 currentColor =image.Sample(textureSampler, currentCoord); + float currentFraction = float(radiusSteps+1 - radiusStep) / float(radiusSteps + 1); + + accumulatedColor += currentFraction * currentColor / float(totalSteps); + + } + } + + outputPixel += accumulatedColor * ampFactor; + + return outputPixel; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSBorderShader { + +[Alias('Set-OBSBorderShader','Add-OBSBorderShader')] +param( +# Set the borderColor of OBSBorderShader +[ComponentModel.DefaultBindingProperty('borderColor')] +[String] +$BorderColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'border' +$ShaderNoun = 'OBSBorderShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float4 borderColor; + +float4 mainImage(VertData v_in) : TARGET +{ + if (v_in.uv.x < 0 || v_in.uv.x > 1 || v_in.uv.y < 0 || v_in.uv.y > 1) + { + return borderColor; + } + else + { + return image.Sample(textureSampler, v_in.uv); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSBoxBlurShader { + +[Alias('Set-OBSBoxBlurShader','Add-OBSBoxBlurShader')] +param( +# Set the Strength of OBSBoxBlurShader +[ComponentModel.DefaultBindingProperty('Strength')] +[Int32] +$Strength, +# Set the Mask_Left of OBSBoxBlurShader +[Alias('Mask_Left')] +[ComponentModel.DefaultBindingProperty('Mask_Left')] +[Single] +$MaskLeft, +# Set the Mask_Right of OBSBoxBlurShader +[Alias('Mask_Right')] +[ComponentModel.DefaultBindingProperty('Mask_Right')] +[Single] +$MaskRight, +# Set the Mask_Top of OBSBoxBlurShader +[Alias('Mask_Top')] +[ComponentModel.DefaultBindingProperty('Mask_Top')] +[Single] +$MaskTop, +# Set the Mask_Bottom of OBSBoxBlurShader +[Alias('Mask_Bottom')] +[ComponentModel.DefaultBindingProperty('Mask_Bottom')] +[Single] +$MaskBottom, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'box-blur' +$ShaderNoun = 'OBSBoxBlurShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int Strength< + string label = "Strength (1)"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 25; + int step = 1; +> = 1; +uniform float Mask_Left< + string label = "Mask left (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Right< + string label = "Mask right (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Top< + string label = "Mask top (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Bottom< + string label = "Mask bottom (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +float4 mainImage(VertData v_in) : TARGET +{ + if(Strength <= 0) + return image.Sample(textureSampler, v_in.uv); + + if(Mask_Left + Mask_Right > 1.0){ + if(v_in.uv.x > Mask_Left || 1.0 - v_in.uv.x > Mask_Right ){ + return image.Sample(textureSampler, v_in.uv); + } + }else{ + if((v_in.uv.x > Mask_Left) && (1.0-v_in.uv.x > Mask_Right)){ + return image.Sample(textureSampler, v_in.uv); + } + } + if(Mask_Top + Mask_Bottom > 1.0){ + if(v_in.uv.y > Mask_Top || 1.0 - v_in.uv.y > Mask_Bottom){ + return image.Sample(textureSampler, v_in.uv); + } + }else { + if((v_in.uv.y > Mask_Top) && (1.0-v_in.uv.y > Mask_Bottom)){ + return image.Sample(textureSampler, v_in.uv); + } + } + float transparent = 0.0; + int count = 1; + float samples = 0.0; + float4 c = float4(0.0, 0.0, 0.0, 0.0); + float Steps = float(Strength); + + [loop] for (int i = -Strength; i <= Strength; i++) { + [loop] for (int k = -Strength; k <= Strength; k++) { + float4 sc = image.Sample(textureSampler, v_in.uv+float2(float(i), float(k))/uv_size*Steps); + transparent += sc.a; + count++; + c += sc * sc.a; + samples += sc.a; + } + } + if(samples > 0.0) + c /= samples; + + c.a = transparent / float(count); + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSBulgePinchShader { + +[Alias('Set-OBSBulgePinchShader','Add-OBSBulgePinchShader')] +param( +# Set the radius of OBSBulgePinchShader +[ComponentModel.DefaultBindingProperty('radius')] +[Single] +$Radius, +# Set the magnitude of OBSBulgePinchShader +[ComponentModel.DefaultBindingProperty('magnitude')] +[Single] +$Magnitude, +# Set the center_x of OBSBulgePinchShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSBulgePinchShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# Set the animate of OBSBulgePinchShader +[ComponentModel.DefaultBindingProperty('animate')] +[Management.Automation.SwitchParameter] +$Animate, +# Set the notes of OBSBulgePinchShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'BulgePinch' +$ShaderNoun = 'OBSBulgePinchShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Created by Radegast Stravinsky for obs-shaderfilter 9/2020 +uniform float radius< + string label = "Radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 0.0; +uniform float magnitude< + string label = "Magnitude"; + string widget_type = "slider"; + float minimum = -1.3333; + float maximum = 1.3333; + float step = 0.01; +> = 0.0; +uniform float center_x< + string label = "Center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.01; +> = 0.25; +uniform float center_y< + string label = "Center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.01; +> = 0.25; +uniform bool animate = false; + +uniform string notes< + string widget_type = "info"; +> = "Distorts the screen, expanding or drawing in pixels around a point." + + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center = float2(center_x, center_y); + VertData v_out; + v_out.pos = v_in.pos; + float2 hw = uv_size; + float ar = 1. * hw.y/hw.x; + v_out.uv = 1. * v_in.uv - center; + + center.x /= ar; + v_out.uv.x /= ar; + + float dist = distance(v_out.uv, center); + if (dist < radius) + { + float anim_mag = (animate ? magnitude * sin(radians(elapsed_time * 20)) : magnitude); + float percent = dist/radius; + if(anim_mag > 0) + v_out.uv = (v_out.uv - center) * lerp(1.0, smoothstep(0.0, radius/dist, percent), anim_mag * 0.75); + else + v_out.uv = (v_out.uv-center) * lerp(1.0, pow(percent, 1.0 + anim_mag * 0.75) * radius/dist, 1.0 - percent); + + v_out.uv += (2 * center); + v_out.uv.x *= ar; + + return image.Sample(textureSampler, v_out.uv); + } + else + { + return image.Sample(textureSampler, v_in.uv); + } +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSBurnShader { + +[Alias('Set-OBSBurnShader','Add-OBSBurnShader')] +param( +# Set the Burn_Gradient of OBSBurnShader +[Alias('Burn_Gradient')] +[ComponentModel.DefaultBindingProperty('Burn_Gradient')] +[String] +$BurnGradient, +# Set the Speed of OBSBurnShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Gradient_Adjust of OBSBurnShader +[Alias('Gradient_Adjust')] +[ComponentModel.DefaultBindingProperty('Gradient_Adjust')] +[Single] +$GradientAdjust, +# Set the Dissolve_Value of OBSBurnShader +[Alias('Dissolve_Value')] +[ComponentModel.DefaultBindingProperty('Dissolve_Value')] +[Single] +$DissolveValue, +# Set the Animated of OBSBurnShader +[ComponentModel.DefaultBindingProperty('Animated')] +[Management.Automation.SwitchParameter] +$Animated, +# Set the Apply_to_Channel of OBSBurnShader +[Alias('Apply_to_Channel')] +[ComponentModel.DefaultBindingProperty('Apply_to_Channel')] +[Management.Automation.SwitchParameter] +$ApplyToChannel, +# Set the Apply_Smoke of OBSBurnShader +[Alias('Apply_Smoke')] +[ComponentModel.DefaultBindingProperty('Apply_Smoke')] +[Management.Automation.SwitchParameter] +$ApplySmoke, +# Set the Smoke_Horizonal_Speed of OBSBurnShader +[Alias('Smoke_Horizonal_Speed')] +[ComponentModel.DefaultBindingProperty('Smoke_Horizonal_Speed')] +[Single] +$SmokeHorizonalSpeed, +# Set the Smoke_Vertical_Speed of OBSBurnShader +[Alias('Smoke_Vertical_Speed')] +[ComponentModel.DefaultBindingProperty('Smoke_Vertical_Speed')] +[Single] +$SmokeVerticalSpeed, +# Set the Iterations of OBSBurnShader +[ComponentModel.DefaultBindingProperty('Iterations')] +[Int32] +$Iterations, +# Set the Notes of OBSBurnShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'burn' +$ShaderNoun = 'OBSBurnShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Burn shader by Charles Fettinger (https://github.com/Oncorporation) 4/2019 +//for use with obs-shaderfilter 1.0 +//Converted to OpenGL by Exeldro February 17, 2022 +float4 mod(float4 x, float4 y) +{ + return x - y * floor(x / y); +} +float4 mod289(float4 x) +{ + return x - floor(x / 289.0) * 289.0; +} +float4 permute(float4 x) +{ + return mod289(((x * 34.0) + 1.0) * x); +} +float4 taylorInvSqrt(float4 r) +{ + return 1.79284291400159 - r * 0.85373472095314; +} +float2 fade(float2 t) { + return t * t* t* (t * (t * 6.0 - 15.0) + 10.0); +} + +float dot(float2 a,float2 b){ + return a.x*b.x+a.y*b.y; +} + +// Classic Perlin noise +float cnoise(float2 P) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac(P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + float4 i = permute(permute(ix) + iy); + float4 gx = frac(i / 41.0) * 2.0 - 1.0; + float4 gy = abs(gx) - 0.5; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + float2 g00 = float2(gx.x, gy.x); + float2 g10 = float2(gx.y, gy.y); + float2 g01 = float2(gx.z, gy.z); + float2 g11 = float2(gx.w, gy.w); + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} +// Classic Perlin noise, periodic variant +float pnoise(float2 P, float2 rep) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac(P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod(Pi, rep.xyxy); // To create noise with explicit period + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + float4 i = permute(permute(ix) + iy); + float4 gx = frac(i / 41.0) * 2.0 - 1.0; + float4 gy = abs(gx) - 0.5; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + float2 g00 = float2(gx.x, gy.x); + float2 g10 = float2(gx.y, gy.y); + float2 g01 = float2(gx.z, gy.z); + float2 g11 = float2(gx.w, gy.w); + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} + +uniform texture2d Burn_Gradient = "burngradient.png"; +uniform float Speed = 0.33; +uniform float Gradient_Adjust = 0.85; +uniform float Dissolve_Value = 1.43; +uniform bool Animated; +uniform bool Apply_to_Channel; +uniform bool Apply_Smoke = true; +uniform float Smoke_Horizonal_Speed = 0.3; +uniform float Smoke_Vertical_Speed = 0.17; +uniform int Iterations = 4; +uniform string Notes< + string widget_type = "info"; +> = "Animate refers to the burn effect. Speed is general and is reversed with negative numbers. Gradient Adjust is the width of the burn gradient. Use the burngradient.png. Dissolve Value is important. Apply Smoke adds the scrolling smoke."; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + float4 smoke = float4(1.0,1.0,1.0,1.0); + float4 result = smoke; + float t = elapsed_time * Speed; + float cycle = 1 - max((sin(t) * 2) - 1, 0); //create a negative cycle time as a delay + float2 dir = float2(Smoke_Horizonal_Speed, Smoke_Vertical_Speed); + //float largestDistance = sqrt(pow(uv_size.x, 2) + pow(uv_size.y, 2)); + + float perlin = 0.5; + float smoke_perlin = 0; + float scale = 1; + float w = 0.5; + + for (int i = 0; i < Iterations; i++) { + //float2 coord = v_in.uv * scale;// (v_in.uv + t * dir)* scale; + float2 coord = (v_in.uv + t * (dir * .1)) * scale; + float2 period = scale * dir; + perlin += pnoise(coord, period) * w; + if (Apply_Smoke) + smoke_perlin += cnoise((v_in.uv + t * dir) * scale) * w * .5; + + scale *= 2.0; + w *= 0.5; + } + + //float toPoint = abs(length(v_in.uv - (v_in.uv * .5)) / ((1.0001 - t) * largestDistance)); + if (!Animated) + cycle = 1; + float d = clamp(((Dissolve_Value * cycle + perlin) ) - 1.0, -.01, 0.99); + float overOne = saturate(d * Gradient_Adjust); + float4 burn = Burn_Gradient.Sample(textureSampler, float2(overOne, 0.5)); + + if (Apply_to_Channel) { + result = c * burn; + } + else { + result = float4(perlin, perlin, perlin, 1.0) * burn; + } + + if (smoke_perlin > 0) { + smoke *= smoke_perlin; + if (result.a <= 0.04) + result = float4(smoke.rgb, smoke_perlin); + result += smoke; + } + + return result; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCartoonShader { + +[Alias('Set-OBSCartoonShader','Add-OBSCartoonShader')] +param( +# Set the ViewProj of OBSCartoonShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSCartoonShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSCartoonShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSCartoonShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSCartoonShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSCartoonShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSCartoonShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSCartoonShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the notes of OBSCartoonShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the hue_steps of OBSCartoonShader +[Alias('hue_steps')] +[ComponentModel.DefaultBindingProperty('hue_steps')] +[Int32] +$HueSteps, +# Set the value_steps of OBSCartoonShader +[Alias('value_steps')] +[ComponentModel.DefaultBindingProperty('value_steps')] +[Int32] +$ValueSteps, +# Set the Apply_To_Alpha_Layer of OBSCartoonShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'cartoon' +$ShaderNoun = 'OBSCartoonShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Darklink''s shader modified to by Charles ''Surn'' Fettinger for use with obs-shaderfilter 3/2019 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; +uniform string notes = "5/2 seems reasonable"; + +uniform int hue_steps = 5; +uniform int value_steps = 2; +uniform bool Apply_To_Alpha_Layer = true; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +struct VertDataIn { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +struct VertDataOut { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertDataOut VSDefault(VertDataIn v_in) +{ + VertDataOut vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv; + return vert_out; +} + +float3 rgb2hsv(float3 c) +{ + float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + float4 p = lerp(float4(c.bg, K.wz), float4(c.gb, K.xy), step(c.b, c.g)); + float4 q = lerp(float4(p.xyw, c.r), float4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +float3 hsv2rgb(float3 c) +{ + float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y); +} + +float fit(float v, int factor) +{ + return round(v * factor) / factor; +} + +float hue_wrap(float h) +{ + return fmod(h + 1, 2) - 1; + if(h > 1) + return h - 2; + if(h < -1) + return h + 2; + return h; +} + +float4 PassThrough(VertDataOut v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv); + if (rgba.a > 0.0 || Apply_To_Alpha_Layer == false) + { + float3 hsv = rgb2hsv(rgba.rgb); + hsv = float3(fit(hsv.x, hue_steps), hsv.y, fit(hsv.z, value_steps)); + //hsv = float3(hue_wrap(hsv.x + 0.5), 1, hsv.z); + rgba = float4(hsv2rgb(hsv), rgba.a); + //return float4(fit(rgba.r), fit(rgba.g), fit(rgba.b), rgba.a); + } + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(v_in); + pixel_shader = PassThrough(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCellShadedShader { + +[Alias('Set-OBSCellShadedShader','Add-OBSCellShadedShader')] +param( +# Set the Angle_Steps of OBSCellShadedShader +[Alias('Angle_Steps')] +[ComponentModel.DefaultBindingProperty('Angle_Steps')] +[Int32] +$AngleSteps, +# Set the Radius_Steps of OBSCellShadedShader +[Alias('Radius_Steps')] +[ComponentModel.DefaultBindingProperty('Radius_Steps')] +[Int32] +$RadiusSteps, +# Set the ampFactor of OBSCellShadedShader +[ComponentModel.DefaultBindingProperty('ampFactor')] +[Single] +$AmpFactor, +# Set the notes of OBSCellShadedShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'cell_shaded' +$ShaderNoun = 'OBSCellShadedShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Cell Shaded shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int Angle_Steps< + string label = "Angle Steps"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 5; +uniform int Radius_Steps< + string label = "Radius Steps"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 20; + int step = 1; +> = 9; +uniform float ampFactor< + string label = "amp Factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 2.0; +uniform string notes< + string widget_type = "info"; +> = "Steps limited in range from 0 to 20. Edit cell_shaded.shader to remove limits at your own risk."; + +float4 mainImage(VertData v_in) : TARGET +{ + float radiusSteps = clamp(Radius_Steps, 0, 20); + float angleSteps = clamp(Angle_Steps, 1, 20); + float PI = 3.1415926535897932384626433832795;//acos(-1); + int totalSteps = int(radiusSteps * angleSteps); + float minRadius = (3 * uv_pixel_interval.y); + float maxRadius = (24 * uv_pixel_interval.y); + + float angleDelta = ((2 * PI) / angleSteps); + float radiusDelta = ((maxRadius - minRadius) / radiusSteps); + + float4 c0 = image.Sample(textureSampler, v_in.uv); + float4 origColor = c0; + float4 accumulatedColor = float4(0,0,0,0); + + for (int radiusStep = 0; radiusStep < radiusSteps; radiusStep++) { + float radius = minRadius + radiusStep * radiusDelta; + + for (float angle=0; angle <(2*PI); angle += angleDelta) { + float2 currentCoord; + + float xDiff = radius * cos(angle); + float yDiff = radius * sin(angle); + + currentCoord = v_in.uv + float2(xDiff, yDiff); + float4 currentColor = image.Sample(textureSampler, currentCoord); + float4 colorDiff = abs(c0 - currentColor); + float currentFraction = (radiusSteps + 1 - radiusStep) / (radiusSteps + 1); + accumulatedColor += currentFraction * colorDiff / totalSteps; + + } + } + accumulatedColor *= ampFactor; + + return c0 - accumulatedColor; // Cell shaded style +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSChromaticAberrationShader { + +[Alias('Set-OBSChromaticAberrationShader','Add-OBSChromaticAberrationShader')] +param( +# Set the power of OBSChromaticAberrationShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# Set the gamma of OBSChromaticAberrationShader +[ComponentModel.DefaultBindingProperty('gamma')] +[Single] +$Gamma, +# Set the num_iter of OBSChromaticAberrationShader +[Alias('num_iter')] +[ComponentModel.DefaultBindingProperty('num_iter')] +[Int32] +$NumIter, +# Set the distort_radial of OBSChromaticAberrationShader +[Alias('distort_radial')] +[ComponentModel.DefaultBindingProperty('distort_radial')] +[Management.Automation.SwitchParameter] +$DistortRadial, +# Set the distort_barrel of OBSChromaticAberrationShader +[Alias('distort_barrel')] +[ComponentModel.DefaultBindingProperty('distort_barrel')] +[Management.Automation.SwitchParameter] +$DistortBarrel, +# Set the offset_spectrum_ycgco of OBSChromaticAberrationShader +[Alias('offset_spectrum_ycgco')] +[ComponentModel.DefaultBindingProperty('offset_spectrum_ycgco')] +[Management.Automation.SwitchParameter] +$OffsetSpectrumYcgco, +# Set the offset_spectrum_yuv of OBSChromaticAberrationShader +[Alias('offset_spectrum_yuv')] +[ComponentModel.DefaultBindingProperty('offset_spectrum_yuv')] +[Management.Automation.SwitchParameter] +$OffsetSpectrumYuv, +# Set the use_random of OBSChromaticAberrationShader +[Alias('use_random')] +[ComponentModel.DefaultBindingProperty('use_random')] +[Management.Automation.SwitchParameter] +$UseRandom, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'chromatic-aberration' +$ShaderNoun = 'OBSChromaticAberrationShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/XssGz8 +//Converted to OpenGL by Exeldro February 14, 2022 + black background removed February 23, 2022 +uniform float power< + string label = "Power"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 0.01; +uniform float gamma< + string label = "Gamma"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 3.0; + float step = 0.01; +> = 2.2; +uniform int num_iter< + string label = "Number iterations"; + string widget_type = "slider"; + int minimum = 3; + int maximum = 25; + int step = 1; +> = 7; +uniform bool distort_radial = false; +uniform bool distort_barrel = false; +uniform bool offset_spectrum_ycgco = false; +uniform bool offset_spectrum_yuv = false; +uniform bool use_random = true; + +float2 remap( float2 t, float2 a, float2 b ) { + return clamp( (t - a) / (b - a), 0.0, 1.0 ); +} + +float3 spectrum_offset_rgb( float t ) +{ + float t0 = 3.0 * t - 1.5; + float3 ret = clamp( float3( -t0, 1.0-abs(t0), t0), 0.0, 1.0); + return ret; +} + + +float3 lin2srgb( float3 c ) +{ + return pow( c, float3(gamma, gamma, gamma) ); +} +float3 srgb2lin( float3 c ) +{ + return pow( c, float3(1.0/gamma, 1.0/gamma, 1.0/gamma)); +} + +float3 yCgCo2rgb(float3 ycc) +{ + float R = ycc.x - ycc.y + ycc.z; + float G = ycc.x + ycc.y; + float B = ycc.x - ycc.y - ycc.z; + return float3(R,G,B); +} + +float3 spectrum_offset_ycgco( float t ) +{ + //float3 ygo = float3( 1.0, 1.5*t, 0.0 ); //green-pink + //float3 ygo = float3( 1.0, -1.5*t, 0.0 ); //green-purple + float3 ygo = float3( 1.0, 0.0, -1.25*t ); //cyan-orange + //float3 ygo = float3( 1.0, 0.0, 1.5*t ); //brownyello-blue + return yCgCo2rgb( ygo ); +} + +float3 yuv2rgb( float3 yuv ) +{ + float3 rgb; + rgb.r = yuv.x + yuv.z * 1.13983; + rgb.g = yuv.x + dot( float2(-0.39465, -0.58060), yuv.yz ); + rgb.b = yuv.x + yuv.y * 2.03211; + return rgb; +} + +float2 radialdistort(float2 coord, float2 amt) +{ + float2 cc = coord - 0.5; + return coord + 2.0 * cc * amt; +} + +float2 barrelDistortion( float2 p, float2 amt ) +{ + p = 2.0 * p - 1.0; + + /* + const float maxBarrelPower = 5.0; + //note: http://glsl.heroku.com/e#3290.7 , copied from Little Grasshopper + float theta = atan(p.y, p.x); + float2 radius = float2( length(p) ); + radius = pow(radius, 1.0 + maxBarrelPower * amt); + p.x = radius.x * cos(theta); + p.y = radius.y * sin(theta); + + /*/ + // much faster version + //const float maxBarrelPower = 5.0; + //float radius = length(p); + float maxBarrelPower = sqrt(5.0); + float radius = dot(p,p); //faster but doesn''t match above accurately + p *= pow(float2(radius, radius), maxBarrelPower * amt); + /* */ + + return p * 0.5 + 0.5; +} + +float2 brownConradyDistortion(float2 uv, float dist) +{ + uv = uv * 2.0 - 1.0; + // positive values of K1 give barrel distortion, negative give pincushion + float barrelDistortion1 = 0.1 * dist; // K1 in text books + float barrelDistortion2 = -0.025 * dist; // K2 in text books + + float r2 = dot(uv,uv); + uv *= 1.0 + barrelDistortion1 * r2 + barrelDistortion2 * r2 * r2; + //uv *= 1.0 + barrelDistortion1 * r2; + + // tangential distortion (due to off center lens elements) + // is not modeled in this function, but if it was, the terms would go here + return uv * 0.5 + 0.5; +} + +float2 distort( float2 uv, float t, float2 min_distort, float2 max_distort ) +{ + float2 dist = float2(min_distort.x * (1.0-t) +max_distort.x * t, min_distort.y * (1.0-t) +max_distort.y * t); + //float2 dist = mix( min_distort, max_distort, t ); + if (distort_radial) + return radialdistort( uv, 2.0 * dist ); + + if(distort_barrel) + return barrelDistortion( uv, 1.75 * dist ); //distortion at center + return brownConradyDistortion( uv, 75.0 * dist.x ); +} + +// ==== + +float3 spectrum_offset_yuv( float t ) +{ + //float3 yuv = float3( 1.0, 3.0*t, 0.0 ); //purple-green + //float3 yuv = float3( 1.0, 0.0, 2.0*t ); //purple-green + float3 yuv = float3( 1.0, 0.0, -1.0*t ); //cyan-orange + //float3 yuv = float3( 1.0, -0.75*t, 0.0 ); //brownyello-blue + return yuv2rgb( yuv ); +} + +float3 spectrum_offset( float t ) +{ + if(offset_spectrum_ycgco) + return spectrum_offset_ycgco( t ); + if(offset_spectrum_yuv) + return spectrum_offset_yuv( t ); + return spectrum_offset_rgb( t ); + //return srgb2lin( spectrum_offset_rgb( t ) ); + //return lin2srgb( spectrum_offset_rgb( t ) ); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 max_distort = float2(power, power); + float2 min_distort = 0.5 * max_distort; + + float2 oversiz = distort(float2(1.0, 1.0), 1.0, min_distort, max_distort); + + float2 uv = remap( v_in.uv, 1.0-oversiz, oversiz ); + + //debug oversiz + //float2 distuv = distort( uv, 1.0, max_distort ); + //if ( abs(distuv.x-0.5)>0.5 || abs(distuv.y-0.5)>0.5) + //{ + // fragColor = float4( 1.0, 0.0, 0.0, 1.0 ); return; + //} + + + float stepsiz = 1.0 / (float(num_iter)-1.0); + float rnd = 0.0; + if(use_random) + rnd = rand_f; + + float t = rnd * stepsiz; + + float3 sumcol = float3(0.0, 0.0, 0.0); + float3 sumw = float3(0.0, 0.0, 0.0); + float colA = 0.0; + + for ( int i=0; iAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSChromaUVDistortionShader { + +[Alias('Set-OBSChromaUVDistortionShader','Add-OBSChromaUVDistortionShader')] +param( +# Set the distortion of OBSChromaUVDistortionShader +[ComponentModel.DefaultBindingProperty('distortion')] +[Single] +$Distortion, +# Set the amplitude of OBSChromaUVDistortionShader +[ComponentModel.DefaultBindingProperty('amplitude')] +[Single] +$Amplitude, +# Set the chroma of OBSChromaUVDistortionShader +[ComponentModel.DefaultBindingProperty('chroma')] +[Single] +$Chroma, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Chroma+UV-Distortion' +$ShaderNoun = 'OBSChromaUVDistortionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/WsdyRN + +//Higher values = less distortion +uniform float distortion< + string label = "Distortion"; + string widget_type = "slider"; + float minimum = 5.0; + float maximum = 1000.0; + float step = 0.01; +> = 75.; +//Higher values = tighter distortion +uniform float amplitude< + string label = "Amplitude"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 10.; +//Higher values = more color distortion +uniform float chroma< + string label = "Chroma"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 6.28318531; + float step = 0.01; +> = .5; + +float2 zoomUv(float2 uv, float zoom) { + float2 uv1 = uv; + uv1 += .5; + uv1 += zoom/2.-1.; + uv1 /= zoom; + return uv1; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uvt = v_in.uv; + + float2 uvtR = uvt; + float2 uvtG = uvt; + float2 uvtB = uvt; + + //Uncomment the following line to get varying chroma distortion + //chroma = sin(elapsed_time)/2.+.5; + + uvtR += float2(sin(uvt.y*amplitude+elapsed_time)/distortion, cos(uvt.x*amplitude+elapsed_time)/distortion); + uvtG += float2(sin(uvt.y*amplitude+elapsed_time+chroma)/distortion, cos(uvt.x*amplitude+elapsed_time+chroma)/distortion); + uvtB += float2(sin(uvt.y*amplitude+elapsed_time+(chroma*2.))/distortion, cos(uvt.x*amplitude+elapsed_time+(chroma*2.))/distortion); + + float2 uvR = zoomUv(uvtR, 1.1); + float2 uvG = zoomUv(uvtG, 1.1); + float2 uvB = zoomUv(uvtB, 1.1); + + float4 colR = image.Sample(textureSampler, uvR); + float4 colG = image.Sample(textureSampler, uvG); + float4 colB = image.Sample(textureSampler, uvB); + + return float4(colR.r, colG.g, colB.b, (colR.a + colG.a + colB.a) / 3.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCircleMaskFilterShader { + +[Alias('Set-OBSCircleMaskFilterShader','Add-OBSCircleMaskFilterShader')] +param( +# Set the Radius of OBSCircleMaskFilterShader +[ComponentModel.DefaultBindingProperty('Radius')] +[Single] +$Radius, +# Set the Circle_Offset_X of OBSCircleMaskFilterShader +[Alias('Circle_Offset_X')] +[ComponentModel.DefaultBindingProperty('Circle_Offset_X')] +[Int32] +$CircleOffsetX, +# Set the Circle_Offset_Y of OBSCircleMaskFilterShader +[Alias('Circle_Offset_Y')] +[ComponentModel.DefaultBindingProperty('Circle_Offset_Y')] +[Int32] +$CircleOffsetY, +# Set the Source_Offset_X of OBSCircleMaskFilterShader +[Alias('Source_Offset_X')] +[ComponentModel.DefaultBindingProperty('Source_Offset_X')] +[Int32] +$SourceOffsetX, +# Set the Source_Offset_Y of OBSCircleMaskFilterShader +[Alias('Source_Offset_Y')] +[ComponentModel.DefaultBindingProperty('Source_Offset_Y')] +[Int32] +$SourceOffsetY, +# Set the Antialiasing of OBSCircleMaskFilterShader +[ComponentModel.DefaultBindingProperty('Antialiasing')] +[Management.Automation.SwitchParameter] +$Antialiasing, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'circle-mask-filter' +$ShaderNoun = 'OBSCircleMaskFilterShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Circle Mask Filter version 1.01, for OBS Shaderfilter +// Copyright 2022 by SkeletonBow +// Twitter: +// Twitch: +// License: GNU GPLv2 +// +// Changelog: +// 1.01 - Don''t saturate() Radius parameter to allow oversizing to cover entire input texture. +// 1.0 - Initial release + +uniform float Radius< + string label = "Radius"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform int Circle_Offset_X< + string label = "Circle Offset X"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +> = 0; +uniform int Circle_Offset_Y< + string label = "Circle Offset X"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +> = 0; +uniform int Source_Offset_X< + string label = "Source Offset X"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +> = 0.0; +uniform int Source_Offset_Y< + string label = "Source Offset Y"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +> = 0.0; + +uniform bool Antialiasing = true; +#define Smoothness 100.00 +#define AAwidth 4 + +#define uv_pi uv_pixel_interval + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float2 coffset = float2(Circle_Offset_X, Circle_Offset_Y)/uv_size; + float2 soffset = float2( Source_Offset_X, Source_Offset_Y )/uv_size; + + float radius = Radius * 0.01; + float smwidth = radius * Smoothness * 0.01; + + float4 obstex = image.Sample( textureSampler, uv - soffset); + float4 color = obstex; + // Account for aspect ratio + uv.x = (uv.x - 0.5) * uv_size.x / uv_size.y + 0.5; + float2 cuv = 0.5 + coffset; + float dist = distance(cuv,uv); + // Anti-aliased or pixelated edge + if( Antialiasing ) { + color.a = smoothstep( radius, (radius+(uv_pi.x)) - (uv_pi.x * AAwidth), dist); + } else { + color.a = step( dist, radius ); + } + + return float4(color.rgb, color.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSClockAnalogShader { + +[Alias('Set-OBSClockAnalogShader','Add-OBSClockAnalogShader')] +param( +# Set the current_time_ms of OBSClockAnalogShader +[Alias('current_time_ms')] +[ComponentModel.DefaultBindingProperty('current_time_ms')] +[Int32] +$CurrentTimeMs, +# Set the current_time_sec of OBSClockAnalogShader +[Alias('current_time_sec')] +[ComponentModel.DefaultBindingProperty('current_time_sec')] +[Int32] +$CurrentTimeSec, +# Set the current_time_min of OBSClockAnalogShader +[Alias('current_time_min')] +[ComponentModel.DefaultBindingProperty('current_time_min')] +[Int32] +$CurrentTimeMin, +# Set the current_time_hour of OBSClockAnalogShader +[Alias('current_time_hour')] +[ComponentModel.DefaultBindingProperty('current_time_hour')] +[Int32] +$CurrentTimeHour, +# Set the hour_handle_color of OBSClockAnalogShader +[Alias('hour_handle_color')] +[ComponentModel.DefaultBindingProperty('hour_handle_color')] +[Single[]] +$HourHandleColor, +# Set the minute_handle_color of OBSClockAnalogShader +[Alias('minute_handle_color')] +[ComponentModel.DefaultBindingProperty('minute_handle_color')] +[Single[]] +$MinuteHandleColor, +# Set the second_handle_color of OBSClockAnalogShader +[Alias('second_handle_color')] +[ComponentModel.DefaultBindingProperty('second_handle_color')] +[Single[]] +$SecondHandleColor, +# Set the outline_color of OBSClockAnalogShader +[Alias('outline_color')] +[ComponentModel.DefaultBindingProperty('outline_color')] +[Single[]] +$OutlineColor, +# Set the top_line_color of OBSClockAnalogShader +[Alias('top_line_color')] +[ComponentModel.DefaultBindingProperty('top_line_color')] +[Single[]] +$TopLineColor, +# Set the background_color of OBSClockAnalogShader +[Alias('background_color')] +[ComponentModel.DefaultBindingProperty('background_color')] +[Single[]] +$BackgroundColor, +# Set the time_offset_hours of OBSClockAnalogShader +[Alias('time_offset_hours')] +[ComponentModel.DefaultBindingProperty('time_offset_hours')] +[Int32] +$TimeOffsetHours, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'clock_analog' +$ShaderNoun = 'OBSClockAnalogShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Based on https://www.shadertoy.com/view/XdKXzy +uniform int current_time_ms; +uniform int current_time_sec; +uniform int current_time_min; +uniform int current_time_hour; +uniform float3 hour_handle_color = {1.0,1.0,1.0}; +uniform float3 minute_handle_color = {1.0,1.0,1.0}; +uniform float3 second_handle_color = {1.0,0.0,0.0}; +uniform float3 outline_color = {1.0,1.0,1.0}; +uniform float3 top_line_color = {1.0,0.0,0.0}; +uniform float3 background_color = {.5,.5,.5}; +uniform int time_offset_hours = 0; + +#ifndef OPENGL +#define mod(x,y) (x - y * floor(x / y)) +#endif +// this is my first try to actually use glsl almost from scratch +// so far all i''ve done is learning by doing / reading glsl docs. +// this is inspired by my non glsl „elapsed_time“ projects +// especially this one: https://www.gottz.de/analoguhr.htm + +// i will most likely use a buffer in future to calculate the elapsed_time +// aswell as to draw the background of the clock only once. +// tell me if thats a bad idea. + +// update: +// screenshot: http://i.imgur.com/dF0nHDk.png +// as soon as i think its in a usefull state i''ll release the source +// of that particular c++ application on github. +// i hope sommeone might find it usefull :D + +#define PI 3.141592653589793238462643383 + +// from https://www.shadertoy.com/view/4s3XDn <3 +float ln(float2 p, float2 a, float2 b) +{ + float2 pa = p - a; + float2 ba = b - a; + float h = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0); + return length(pa - ba * h); +} + +// i think i should spend some elapsed_time reading docs in order to minimize this. +// hints apreciated +// (Rotated LiNe) +float rln(float2 uv, float start, float end, float perc) { + float inp = perc * PI * 2.0; + float2 coord = float2(sin(inp), cos(inp)); + return ln(uv, coord * start, coord * end); +} + +// i need this to have an alphachannel in the output +// i intend to use an optimized version of this shader for a transparent desktop widget experiment +float4 mixer(float4 c1, float4 c2) { + // please tell me if you think this would boost performance. + // the elapsed_time i implemented mix myself it sure did reduce + // the amount of operations but i''m not sure now + // if (c2.a <= 0.0) return c1; + // if (c2.a >= 1.0) return c2; + return float4(lerp(c1.rgb, c2.rgb, c2.a), c1.a + c2.a); + // in case you are curious how you could implement mix yourself: + // return float4(c2.rgb * c2.a + c1.rgb * (1.0-c2.a), c1.a+c2.a); +} + +float4 styleHandle(float4 color, float px, float dist, float3 handleColor, float width, float shadow) { + if (dist <= width + shadow) { + // lets draw the shadow + color = mixer(color, float4(0.0, 0.0, 0.0, + (1.0-pow(smoothstep(width, width + shadow, dist),0.2))*0.2)); + // now lets draw the antialiased handle + color = mixer(color, float4(handleColor, smoothstep(width, max(width - 3.0 * px, 0.0), dist))); + } + return color; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 R = uv_size; + // calculate the size of a pixel + float px = 1.0 / R.y; + // create percentages of the coordinate system + float2 p = (v_in.uv * uv_size).xy / R; + // center the scene and add perspective + float2 uv = (2.0 * (float2(v_in.uv.x,1.0-v_in.uv.y) * uv_size) - R) / min(R.x, R.y); + + /*float2 uv = -1.0 + 2.0 * p.xy; + // lets add perspective for mobile device support + if (uv_size.x > uv_size.y) + uv.x *= uv_size.x / uv_size.y; + else + uv.y *= uv_size.y / uv_size.x;*/ + + // lets scale the scene a bit down: + uv *= 1.1; + px *= 0.9; + + float width = 0.015; + float dist = 1.0; + float centerdist = length(uv); + + float4 color = image.Sample(textureSampler, v_in.uv); + + // background of the clock + if (centerdist < 1.0 - width) color = mixer(color, float4(background_color, 0.4*(1.8-length(uv)))); + + float isRed = 1.0; + + if (centerdist > 1.0 - 12.0 * width && centerdist <= 1.1) { + // minute bars + for (float i = 0.0; i <= 15.0; i += 1.0) { + if (mod(i, 5.0) == 0.0) { + dist = min(dist, rln(abs(uv), 1.0 - 10.0 * width, 1.0 - 2.0 * width, i / 60.0)); + // draw first bar red + if (i == 0.0 && uv.y > 0.0) { + isRed = dist; + dist = smoothstep(width, max(width - 3.0 * px, 0.0), dist); + color = mixer(color, float4(top_line_color, dist)); + dist = 1.0; + } + } + else { + dist = min(dist, rln(abs(uv), 1.0 - 10.0 * width, 1.0 - 7.0 * width, i / 60.0)); + } + } + + // outline circle + dist = min(dist, abs(1.0-width-length(uv))); + // draw clock shadow + if (centerdist > 1.0) + color = mixer(color, float4(0.0,0.0,0.0, 0.3*smoothstep(1.0 + width*2.0, 1.0, centerdist))); + + // draw outline + minute bars in white + color = mixer(color, float4(0.0, 0.0, 0.0, + (1.0 - pow(smoothstep(width, width + 0.02, min(isRed, dist)), 0.4))*0.2)); + color = mixer(color, float4(outline_color, smoothstep(width, max(width - 3.0 * px, 0.0), dist))); + } + + if (centerdist < 1.0) { + float elapsed_time = float((time_offset_hours+current_time_hour)*3600+current_time_min*60+current_time_sec) + pow(float(current_time_ms)/1000.0,16.0); + // hour + color = styleHandle(color, px, + rln(uv, -0.05, 0.5, elapsed_time / 3600.0 / 12.0), + hour_handle_color, 0.03, 0.02); + + // minute + color = styleHandle(color, px, + rln(uv, -0.075, 0.7, elapsed_time / 3600.0), + minute_handle_color, 0.02, 0.02); + + // second + color = styleHandle(color, px, + min(rln(uv, -0.1, 0.9, elapsed_time / 60.0), length(uv)-0.01), + second_handle_color, 0.01, 0.02); + } + + + return color; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSClockDigitalLedShader { + +[Alias('Set-OBSClockDigitalLedShader','Add-OBSClockDigitalLedShader')] +param( +# Set the current_time_sec of OBSClockDigitalLedShader +[Alias('current_time_sec')] +[ComponentModel.DefaultBindingProperty('current_time_sec')] +[Int32] +$CurrentTimeSec, +# Set the current_time_min of OBSClockDigitalLedShader +[Alias('current_time_min')] +[ComponentModel.DefaultBindingProperty('current_time_min')] +[Int32] +$CurrentTimeMin, +# Set the current_time_hour of OBSClockDigitalLedShader +[Alias('current_time_hour')] +[ComponentModel.DefaultBindingProperty('current_time_hour')] +[Int32] +$CurrentTimeHour, +# Set the timeMode of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('timeMode')] +[Int32] +$TimeMode, +# Set the showMatrix of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('showMatrix')] +[Management.Automation.SwitchParameter] +$ShowMatrix, +# Set the showOff of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('showOff')] +[Management.Automation.SwitchParameter] +$ShowOff, +# Set the ampm of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('ampm')] +[Management.Automation.SwitchParameter] +$Ampm, +# Set the ledColor of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('ledColor')] +[String] +$LedColor, +# Set the offsetHours of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('offsetHours')] +[Int32] +$OffsetHours, +# Set the offsetSeconds of OBSClockDigitalLedShader +[ComponentModel.DefaultBindingProperty('offsetSeconds')] +[Int32] +$OffsetSeconds, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'clock_digital_led' +$ShaderNoun = 'OBSClockDigitalLedShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// based on https://www.shadertoy.com/view/MdfGzf +// cmarangu has linked all 7 segments in his comments +// https://www.shadertoy.com/view/3dtSRj + +#ifndef OPENGL +#define mod(x,y) (x - y * floor(x / y)) +#endif + +uniform int current_time_sec; +uniform int current_time_min; +uniform int current_time_hour; + +uniform int timeMode< + string label = "Time mode"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Time"; + int option_1_value = 1; + string option_1_label = "Enable duration"; + int option_2_value = 2; + string option_2_label = "Active duration"; + int option_3_value = 3; + string option_3_label = "Show duration"; + int option_4_value = 4; + string option_4_label = "Load duration"; +> = 0; + +uniform bool showMatrix = false; +uniform bool showOff = false; +uniform bool ampm = false; +uniform float4 ledColor = {1.0,0,0,1.0}; +uniform int offsetHours = 0; +uniform int offsetSeconds = 0; + +float segment(float2 uv, bool On) +{ + if (!On && !showOff) + return 0.0; + + float seg = (1.0-smoothstep(0.08,0.09+float(On)*0.02,abs(uv.x)))* + (1.0-smoothstep(0.46,0.47+float(On)*0.02,abs(uv.y)+abs(uv.x))); + + //Fiddle with lights and matrix + //uv.x += sin(elapsed_time*60.0*6.26)/14.0; + //uv.y += cos(elapsed_time*60.0*6.26)/14.0; + + //led like brightness + if (On){ + seg *= (1.0-length(uv*float2(3.8,0.9)));//-sin(elapsed_time*25.0*6.26)*0.04; + } else { + seg *= -(0.05+length(uv*float2(0.2,0.1))); + } + return seg; +} + +float sevenSegment(float2 uv,int num) +{ + float seg= 0.0; + seg += segment(uv.yx+float2(-1.0, 0.0),num!=-1 && num!=1 && num!=4 ); + seg += segment(uv.xy+float2(-0.5,-0.5),num!=-1 && num!=1 && num!=2 && num!=3 && num!=7); + seg += segment(uv.xy+float2( 0.5,-0.5),num!=-1 && num!=5 && num!=6 ); + seg += segment(uv.yx+float2( 0.0, 0.0),num!=-1 && num!=0 && num!=1 && num!=7 ); + seg += segment(uv.xy+float2(-0.5, 0.5),num==0 || num==2 || num==6 || num==8 ); + seg += segment(uv.xy+float2( 0.5, 0.5),num!=-1 && num!=2 ); + seg += segment(uv.yx+float2( 1.0, 0.0),num!=-1 && num!=1 && num!=4 && num!=7 ); + + return seg; +} + +float showNum(float2 uv,int nr, bool zeroTrim) +{ + //Speed optimization, leave if pixel is not in segment + if (abs(uv.x)>1.5 || abs(uv.y)>1.2) + return 0.0; + + float seg= 0.0; + if (uv.x>0.0) + { + nr /= 10; + if (nr==0 && zeroTrim) + nr = -1; + seg += sevenSegment(uv+float2(-0.75,0.0),nr); + } else { + seg += sevenSegment(uv+float2( 0.75,0.0),int(mod(float(nr),10.0))); + } + + return seg; +} + +float dots(float2 uv) +{ + float seg = 0.0; + uv.y -= 0.5; + seg += (1.0-smoothstep(0.11,0.13,length(uv))) * (1.0-length(uv)*2.0); + uv.y += 1.0; + seg += (1.0-smoothstep(0.11,0.13,length(uv))) * (1.0-length(uv)*2.0); + return seg; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = ((float2(v_in.uv.x, 1.0-v_in.uv.y) * uv_size).xy-0.5*uv_size) / + min(uv_size.x,uv_size.y); + + if (uv_size.x>uv_size.y) + { + uv *= 6.0; + } + else + { + uv *= 12.0; + } + + uv.x *= -1.0; + uv.x += uv.y/12.0; + //wobble + //uv.x += sin(uv.y*3.0+elapsed_time*14.0)/25.0; + //uv.y += cos(uv.x*3.0+elapsed_time*14.0)/25.0; + uv.x += 3.5; + float seg = 0.0; + + if(timeMode == 0){ + seg += showNum(uv,current_time_sec,false); + uv.x -= 1.75; + seg += dots(uv); + uv.x -= 1.75; + seg += showNum(uv,current_time_min,false); + uv.x -= 1.75; + seg += dots(uv); + uv.x -= 1.75; + if (ampm) { + if(current_time_hour == 0){ + seg += showNum(uv,12,true); + }else if(current_time_hour > 12){ + seg += showNum(uv,current_time_hour-12,true); + }else{ + seg += showNum(uv,current_time_hour,true); + } + } else { + seg += showNum(uv,current_time_hour,true); + } + }else{ + float timeSecs = 0.0; + if(timeMode == 1){ + timeSecs = elapsed_time_enable; + }else if(timeMode == 2){ + timeSecs = elapsed_time_active; + }else if(timeMode == 3){ + timeSecs = elapsed_time_show; + }else if(timeMode == 4){ + timeSecs = elapsed_time_start; + } + + timeSecs += offsetSeconds + offsetHours*3600; + if(timeSecs < 0) + timeSecs = 0.9999-timeSecs; + seg += showNum(uv,int(mod(timeSecs,60.0)),false); + + timeSecs = floor(timeSecs/60.0); + + uv.x -= 1.75; + + seg += dots(uv); + + uv.x -= 1.75; + + seg += showNum(uv,int(mod(timeSecs,60.0)),false); + + timeSecs = floor(timeSecs/60.0); + if (ampm) + { + if(timeSecs == 0.0){ + timeSecs = 12.0; + }else if (timeSecs > 12.0){ + timeSecs = mod(timeSecs,12.0); + } + }else if (timeSecs > 24.0) { + timeSecs = mod(timeSecs,24.0); + } + + uv.x -= 1.75; + + seg += dots(uv); + + uv.x -= 1.75; + seg += showNum(uv,int(mod(timeSecs,60.0)),true); + } + + + if (seg==0.0){ + return image.Sample(textureSampler, v_in.uv); + } + // matrix over segment + if (showMatrix) + { + seg *= 0.8+0.2*smoothstep(0.02,0.04,mod(uv.y+uv.x,0.06025)); + //seg *= 0.8+0.2*smoothstep(0.02,0.04,mod(uv.y-uv.x,0.06025)); + } + if (seg<0.0) + { + seg = -seg;; + return float4(seg,seg,seg,1.0); + } + return float4(ledColor.rgb * seg, ledColor.a); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSClockDigitalNixieShader { + +[Alias('Set-OBSClockDigitalNixieShader','Add-OBSClockDigitalNixieShader')] +param( +# Set the current_time_ms of OBSClockDigitalNixieShader +[Alias('current_time_ms')] +[ComponentModel.DefaultBindingProperty('current_time_ms')] +[Int32] +$CurrentTimeMs, +# Set the current_time_sec of OBSClockDigitalNixieShader +[Alias('current_time_sec')] +[ComponentModel.DefaultBindingProperty('current_time_sec')] +[Int32] +$CurrentTimeSec, +# Set the current_time_min of OBSClockDigitalNixieShader +[Alias('current_time_min')] +[ComponentModel.DefaultBindingProperty('current_time_min')] +[Int32] +$CurrentTimeMin, +# Set the current_time_hour of OBSClockDigitalNixieShader +[Alias('current_time_hour')] +[ComponentModel.DefaultBindingProperty('current_time_hour')] +[Int32] +$CurrentTimeHour, +# Set the timeMode of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('timeMode')] +[Int32] +$TimeMode, +# Set the offsetHours of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('offsetHours')] +[Int32] +$OffsetHours, +# Set the offsetSeconds of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('offsetSeconds')] +[Int32] +$OffsetSeconds, +# Set the corecolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('corecolor')] +[Single[]] +$Corecolor, +# Set the halocolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('halocolor')] +[Single[]] +$Halocolor, +# Set the flarecolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('flarecolor')] +[Single[]] +$Flarecolor, +# Set the anodecolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('anodecolor')] +[Single[]] +$Anodecolor, +# Set the anodehighlightscolor of OBSClockDigitalNixieShader +[ComponentModel.DefaultBindingProperty('anodehighlightscolor')] +[Single[]] +$Anodehighlightscolor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'clock_digital_nixie' +$ShaderNoun = 'OBSClockDigitalNixieShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/fsBcRm +uniform int current_time_ms; +uniform int current_time_sec; +uniform int current_time_min; +uniform int current_time_hour; +uniform int timeMode< + string label = "Time mode"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Time"; + int option_1_value = 1; + string option_1_label = "Enable duration"; + int option_2_value = 2; + string option_2_label = "Active duration"; + int option_3_value = 3; + string option_3_label = "Show duration"; + int option_4_value = 4; + string option_4_label = "Load duration"; +> = 0; + +uniform int offsetHours = 0; +uniform int offsetSeconds = 0; + +// Colors as named variables, if you want to tweak them +uniform float3 corecolor = {1.0,0.7,0.0}; +uniform float3 halocolor = {1.0,0.5,0.0}; +uniform float3 flarecolor = {1.0,0.3,0.0}; +uniform float3 anodecolor = {0.2,0.1,0.1}; +uniform float3 anodehighlightscolor = {1.0,0.5,0.0}; + +#ifndef OPENGL +#define mod(x,y) (x - y * floor(x / y)) +#define lessThan(a,b) (a < b) +#define greaterThan(a,b) (a > b) +#endif + +// psrdnoise (c) Stefan Gustavson and Ian McEwan, +// ver. 2021-12-02, published under the MIT license: +// https://github.com/stegu/psrdnoise/ +float psrdnoise(float2 x, float2 period, float alpha, out float2 gradient) +{ + float2 uv = float2(x.x+x.y*0.5, x.y); + float2 i0 = floor(uv), f0 = frac(uv); + float cmp = step(f0.y, f0.x); + float2 o1 = float2(cmp, 1.0-cmp); + float2 i1 = i0 + o1, i2 = i0 + 1.0; + float2 v0 = float2(i0.x - i0.y*0.5, i0.y); + float2 v1 = float2(v0.x + o1.x - o1.y*0.5, v0.y + o1.y); + float2 v2 = float2(v0.x + 0.5, v0.y + 1.0); + float2 x0 = x - v0, x1 = x - v1, x2 = x - v2; + float3 iu, iv, xw, yw; + if(any(greaterThan(period, float2(0.0,0.0)))) { + xw = float3(v0.x, v1.x, v2.x); + yw = float3(v0.y, v1.y, v2.y); + if(period.x > 0.0) + xw = mod(float3(v0.x, v1.x, v2.x), period.x); + if(period.y > 0.0) + yw = mod(float3(v0.y, v1.y, v2.y), period.y); + iu = floor(xw + 0.5*yw + 0.5); iv = floor(yw + 0.5); + } else { + iu = float3(i0.x, i1.x, i2.x); iv = float3(i0.y, i1.y, i2.y); + } + float3 hash = mod(iu, 289.0); + hash = mod((hash*51.0 + 2.0)*hash + iv, 289.0); + hash = mod((hash*34.0 + 10.0)*hash, 289.0); + float3 psi = hash*0.07482 + alpha; + float3 gx = cos(psi); float3 gy = sin(psi); + float2 g0 = float2(gx.x, gy.x); + float2 g1 = float2(gx.y, gy.y); + float2 g2 = float2(gx.z, gy.z); + float3 w = 0.8 - float3(dot(x0, x0), dot(x1, x1), dot(x2, x2)); + w = max(w, 0.0); float3 w2 = w*w; float3 w4 = w2*w2; + float3 gdotx = float3(dot(g0, x0), dot(g1, x1), dot(g2, x2)); + float n = dot(w4, gdotx); + float3 w3 = w2*w; float3 dw = -8.0*w3*gdotx; + float2 dn0 = w4.x*g0 + dw.x*x0; + float2 dn1 = w4.y*g1 + dw.y*x1; + float2 dn2 = w4.z*g2 + dw.z*x2; + gradient = 10.9*(dn0 + dn1 + dn2); + return 10.9*n; +} + +// Compute the shortest distance from p +// to a line segment from p1 to p2. +float lined(float2 p1, float2 p2, float2 p) { + float2 p1p2 = p2 - p1; + float2 v = normalize(p1p2); + float2 s = p - p1; + float t = dot(v, s); + if (t<0.0) return length(s); + if (t>length(p1p2)) return length(p - p2); + return length(s - t*v); +} + +// Compute the shortest distance from p to a circle +// with center at c and radius r. (Extremely simple.) +float circled(float2 c, float r, float2 p) { + return abs(length(p - c) - r); +} + +// Compute the shortest distance from p to a +// circular arc with center c from p1 to p2. +// p1, p2 are in the +angle direction (ccw), +// to resolve the major/minor arc ambiguity, so +// specifying p1, p2 in the wrong order will +// yield the complement to the arc you wanted. +// If p1 = p2, the entire circle is drawn, but +// you don''t want to use this function to draw +// a circle. Use the simple circled() instead. +// If p1 and p2 have different distances to c, +// the end of the arc will not look right. If +// this is inconvenient, uncomment the 3rd line. +float arcd(float2 c, float2 p1, float2 p2, float2 p) { + + float2 v1 = p1 - c; + float2 v2 = p2 - c; + // Optional: make sure p1, p2 are both on the circle + // v2 = normalize(v2)*length(v1); + float2 v = p - c; + + float2 w = float2(dot(v, -float2(-v1.y, v1.x)), dot(v, float2(-v2.y, v2.x))); + + if(dot(v1, float2(-v2.y, v2.x)) >= 0.0) { // Arc angle <= pi + if(all(lessThan(float2(0.0,0.0), w))) { + return min(length(p1-p), length(p2-p)); // nearest end + } else { + return abs(length(v) - length(v1)); // dist to arc + } + } else { // Arc angle > pi + if(any(lessThan(float2(0.0,0.0), w))) { + return min(length(p1-p), length(p2-p)); + } else { + return abs(length(v) - length(v1)); + } + } +} + +// A convenient anti-aliased step() using auto derivatives +float aastep(float threshold, float value) { + float afwidth = 0.7 * length(float2(ddx(value), ddy(value))); + return smoothstep(threshold-afwidth, threshold+afwidth, value); +} + +// A smoothstep() that blends to an aastep() under minification +float aasmoothstep(float t1, float t2, float v) { + float aw = 0.7 * length(float2(ddx(v), ddy(v))); + float sw = max(0.5*(t2-t1), aw); + float st = 0.5*(t1+t2); + return smoothstep(st-sw, st+sw, v); +} + +// Distance field of a hexagonal (simplex) grid +// The return vector contains the distances to the +// three closest points, sorted by magnitude. +float3 hexgrid(float2 p) { + + const float stretch = 1.0/0.8660; + + // v.y = v.y + 0.0001; // needed if no stretching (rounding errors) + p.y = p.y * stretch; + // Transform to grid space (axis-aligned "simplex" grid) + float2 uv = float2(p.x + p.y*0.5, p.y); + // Determine which simplex we''re in, with i0 being the "base" + float2 i0 = floor(uv); + float2 f0 = frac(uv); + // o1 is the offset in simplex space to the second corner + float cmp = step(f0.y, f0.x); + float2 o1 = float2(cmp, 1.0-cmp); + // Enumerate the remaining simplex corners + float2 i1 = i0 + o1; + float2 i2 = i0 + float2(1.0, 1.0); + // Transform corners back to texture space + float2 p0 = float2(i0.x - i0.y * 0.5, i0.y); + float2 p1 = float2(p0.x + o1.x - o1.y * 0.5, p0.y + o1.y); + float2 p2 = float2(p0.x + 0.5, p0.y + 1.0); + float3 d = float3(length(p-p0), length(p-p1), length(p-p2)); + // Only three values - bubble sort is just fine. + d.yz = (d.y < d.z) ? d.yz : d.zy; + d.xy = (d.x < d.y) ? d.xy : d.yx; + d.yz = (d.y < d.z) ? d.yz : d.zy; + return d; +} + +// The digits. Simple functions, only a lot of them. + +// These glyphs and their implementation as distance fields +// are the original work of me (stefan.gustavson@gmail.com), +// and the code below is released under the MIT license: +// https://opensource.org/licenses/MIT +// (If that is inconvenient for you, let me know. I''m reasonable.) +// +// Experts say mortals should not attempt to design character shapes. +// "It''s just ten simple digits", I thought, "How hard can it be?" +// A week later, after countless little tweaks to proportions and +// curvature, and with a notepad full of sketches and pen-and-paper +// math, some of it horribly wrong because it was decades since I +// solved this kind of equations by hand, I know the answer: +// It can be *really* hard. But also loads of fun! +// +float nixie0(float2 p) { + // Special hack instead of pasting together arcs and lines + float d = lined(float2(2.0,2.0), float2(2.0, 6.0), p); + return abs(d - 2.0); +} + +float nixie1(float2 p) { + float d1 = lined(float2(2.0, 0.0), float2(2.0, 8.0), p); + float d2 = lined(float2(2.0, 8.0), float2(1.0, 6.0), p); + return min(d1, d2); +} + +float nixie1alt(float2 p) { // Straight line + return lined(float2(2.0, 0.0), float2(2.0, 8.0), p); +} + +float nixie2(float2 p) { + const float x = 3.2368345; // Icky coordinates, + const float y = 4.4283002; // used twice below + float d1 = lined(float2(4.25, 0.0), float2(-0.25, 0.0), p); + float d2 = arcd(float2(10.657842, -5.001899), // Also icky + float2(x, y), float2(-0.25, 0.0), p); + float d3 = arcd(float2(2.0, 6.0), float2(x, y), float2(0.0, 6.0), p); + return min(min(d1, d2), d3); +} + +float nixie2alt(float2 p) { // Straight neck + float d1 = lined(float2(4.0, 0.0), float2(0.0,0.0), p); + float d2 = lined(float2(0.0,0.0), float2(3.6, 4.8), p); + float d3 = arcd(float2(2.0, 6.0), float2(3.6, 4.8), float2(0.0, 6.0), p); + return min(min(d1, d2), d3); +} + +float nixie3(float2 p) { + // Two round parts: + // float d1 = arcd(float2(2.0, 2.1), float2(-0.1, 2.1), float2(2.0, 4.2), p); + // float d2 = arcd(float2(2.0, 6.1), float2(2.0, 4.2), float2(0.1, 6.1), p); + // Angled top, more like classic Nixie tube digits: + float d1 = arcd(float2(2.0, 2.25), float2(-0.25, 2.25), float2(2.0, 4.5), p); + float d2 = lined(float2(2.0, 4.5), float2(4.0, 7.75), p); + float d3 = lined(float2(4.0, 7.75), float2(0.0, 7.75), p); + return min(min(d1, d2), d3); +} + +float nixie3alt(float2 p) { // Two round parts of the same size + float d1 = arcd(float2(2.0,2.0), float2(0.0, 2.0), float2(2.0, 4.0), p); + float d2 = arcd(float2(2.0, 6.0), float2(2.0, 4.0), float2(0.0, 6.0), p); + return min(d1, d2); +} + +float nixie4(float2 p) { + // This digit is 5.0 units wide, most others are 4.0 or 4.5 + float d1 = lined(float2(4.0, 0.0), float2(4.0, 8.0), p); + float d2 = lined(float2(4.0, 8.0), float2(0.0, 2.0), p); + float d3 = lined(float2(0.0, 2.0), float2(5.0, 2.0), p); + return min(min(d1, d2), d3); +} + +float nixie4alt(float2 p) { + // This digit is 4.0 units wide, but looks cropped + float d1 = lined(float2(4.0, 0.0), float2(4.0, 8.0), p); + float d2 = lined(float2(4.0, 8.0), float2(0.0, 2.0), p); + float d3 = lined(float2(0.0, 2.0), float2(4.0, 2.0), p); + return min(min(d1, d2), d3); +} + +float nixie5(float2 p) { + float d1 = lined(float2(4.0, 7.75), float2(0.5, 7.75), p); + float d2 = lined(float2(0.5, 7.75), float2(0.0, 4.5), p); + float d3 = lined(float2(0.0, 4.5), float2(2.0, 4.5), p); + float d4 = arcd(float2(2.0, 2.25), float2(-0.25, 2.25), float2(2.0, 4.5), p); + return min(min(d1, d2), min(d3, d4)); +} + +float nixie5alt(float2 p) { + float d1 = lined(float2(4.0, 8.0), float2(0.0, 8.0), p); + float d2 = lined(float2(0.0, 8.0), float2(0.0, 5.0), p); + float d3 = lined(float2(0.0, 5.0), float2(2.0, 5.0), p); + float d4 = arcd(float2(2.0, 3.0), float2(4.0, 3.0), float2(2.0, 5.0), p); + float d5 = lined(float2(4.0, 3.0), float2(4.0, 2.0), p); + float d6 = arcd(float2(2.0,2.0), float2(0.0, 2.0), float2(4.0, 2.0), p); + return min(min(min(d1, d2), min(d3, d4)), min(d5, d6)); +} + +float nixie6(float2 p) { + float d1 = arcd(float2(84.0/13.0, 2.25), float2(3.0, 8.0), float2(-0.25, 2.25), p); + float d2 = circled(float2(2.0, 2.25), 2.25, p); + return min(d1, d2); +} + +float nixie6alt(float2 p) { // Straight neck + float d1 = lined(float2(0.4, 3.2), float2(3.0, 8.0), p); + float d2 = circled(float2(2.0,2.0), 2.0, p); + return min(d1, d2); +} + +float nixie7(float2 p) { // Ugly coordinates, but these expressions are exact + float d1 = lined(float2(0.0, 7.75), float2(0.25*sqrt(2259.0)-8.0, 7.75), p); + float d2 = arcd(float2(-8.0, 12.0), float2(2.5, 5.0), float2(0.25*sqrt(2259.0)-8.0, 7.75), p); + float d3 = arcd(float2(10.0, 0.0), float2(2.5, 5.0), float2(10.0-2.5*sqrt(13.0), 0.0), p); + return min(min(d1, d2), d3); +} + +float nixie7alt(float2 p) { // Straight neck + float d1 = lined(float2(0.0, 8.0), float2(4.0, 8.0), p); + float d2 = lined(float2(4.0, 8.0), float2(1.0, 0.0), p); + return min(d1, d2); +} + +float nixie8(float2 p) { + float d1 = circled(float2(2.0, 2.2), 2.2, p); + float d2 = circled(float2(2.0, 6.2), 1.8, p); + return min(d1, d2); +} + +float nixie8alt(float2 p) { // Same size loops + float d1 = circled(float2(2.0,2.0), 2.0, p); + float d2 = circled(float2(2.0, 6.0), 2.0, p); + return min(d1, d2); +} + +float nixie9(float2 p) { + float d1 = arcd(float2(-32.0/13.0, 5.75), float2(1.0, 0.0), float2(4.25, 5.75), p); + float d2 = circled(float2(2.0, 5.75), 2.25, p); + return min(d1, d2); +} + +float nixie9alt(float2 p) { // Straight neck + float d1 = lined(float2(3.6, 4.8), float2(1.0, 0.0), p); + float d2 = circled(float2(2.0, 6.0), 2.0, p); + return min(d1, d2); +} + +float nixieminus(float2 p) { + return lined(float2(0.5, 4.0), float2(3.5, 4.0), p); +} + +float nixieequals(float2 p) { + float d1 = lined(float2(0.5, 3.0), float2(3.5, 3.0), p); + float d2 = lined(float2(0.5, 5.0), float2(3.5, 5.0), p); + return min(d1, d2); +} + +float nixieplus(float2 p) { + float d1 = lined(float2(0.0, 4.0), float2(4.0, 4.0), p); + float d2 = lined(float2(2.0, 2.0), float2(2.0, 6.0), p); + return min(d1, d2); +} + +float nixiedot(float2 p) { + // circled with r=0 yields a point, but with more work + return length(p - float2(2.0, 0.0)); +} + +float nixiecolon(float2 p) { + float d1 = length(p - float2(2.0,2.0)); + float d2 = length(p - float2(2.0, 5.0)); + return min(d1, d2); +} + +// End of MIT-licensed code + +float number(int n, float2 p) { + switch(n) { + case 0: return nixie0(p); + case 1: return nixie1(p); + case 2: return nixie2(p); + case 3: return nixie3(p); + case 4: return nixie4(p); + case 5: return nixie5(p); + case 6: return nixie6(p); + case 7: return nixie7(p); + case 8: return nixie8(p); + case 9: return nixie9(p); + default: return 1e10; + } +} +// Display the current time with a retro Nixie-tube look +// Stefan Gustavson (stegu on shadertoy.com) 2022-01-26 +// All code in the "Image" tab is public domain. +// Functions in the "Common" tab are also public domain, +// except where a separate license is specified. +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = ((float2(v_in.uv.x,1.0-v_in.uv.y) * uv_size)/uv_size.x); + float time = 0.0; + if(timeMode == 0){ + time = float(current_time_hour*3600+current_time_min*60+current_time_sec) + float(current_time_ms)/1000.0; + }else if(timeMode == 1){ + time = elapsed_time_enable; + }else if(timeMode == 2){ + time = elapsed_time_active; + }else if(timeMode == 3){ + time = elapsed_time_show; + }else if(timeMode == 4){ + time = elapsed_time_start; + } + time += offsetSeconds + offsetHours * 3600; + if(time < 0) + time = 0.9999-time; + float2 p = -3.0+uv*50.0 - float2(0.0,9.0); + + float bbox = 1.0-max(max(1.0-aastep(-3.0, p.x), aastep(47.0, p.x)), + max(1.0-aastep(-3.0, p.y), aastep(11.0, p.y))); + + // Some relief for the GPU: exit early if we''re in the black margins + if(bbox == 0.0) { + return float4(float3(0.0,0.0,0.0),1.0); + } + + // If not, well, let''s put that GPU to good use! + float secs = floor(mod(time, 60.0)); + float mins = floor(mod(time, 3600.0)/60.0); + float hrs = floor(time/3600.0); + int h10 = int(floor(hrs/10.0)); + int h1 = int(floor(mod(hrs, 10.0))); + int m10 = int(floor(mins/10.0)); + int m1 = int(floor(mod(mins, 10.0))); + int s10 = int(floor(secs/10.0)); + int s1 = int(floor(mod(secs, 10.0))); + + float2 wspace = float2(6.5, 0.0); + float2 nspace = float2(3.5, 0.0); + float d = 1e10; + d = min(d, number(h10, p)); + d = min(d, number(h1, p-wspace)); + d = min(d, nixiecolon(p-wspace-1.45*nspace)-0.2); + d = min(d, number(m10, p-2.0*wspace-nspace)); + d = min(d, number(m1, p-3.0*wspace-nspace)); + d = min(d, nixiecolon(p-3.0*wspace-2.4*nspace)-0.2); + d = min(d, number(s10, p-4.0*wspace-2.0*nspace)); + d = min(d, number(s1, p-5.0*wspace-2.0*nspace)); + + float2 g; // For gradients returned from psrdnoise() + + // Digit outlines + float core = 1.0-aastep(0.2, d); + // "flare" is a wide blurry region around the characters, and + // "flarenoise" is a spatio-temporal modulation of its extents + // (slight flickering, but not all characters at the same time) + float flarenoise = psrdnoise(float2(p.x*0.1,5.0*elapsed_time), float2(0.0,0.0), 0.0, g); + float flare = 1.0-smoothstep(0.0, 2.5, d + 0.05*flarenoise); + flare *= flare; // A more rapid decline towards the edge + // "glow" is a variation in the intensity of the glowy cathode (core) + float glow = 0.8+0.2*psrdnoise(p - float2(0.0, 2.0*elapsed_time), float2(0.0,0.0), 4.0*time, g); + // Now we mess up the distance field a little for the "halo" effect + d += 0.1*psrdnoise(p - float2(0.0, 2.0*elapsed_time), float2(0.0,0.0), 8.0*time, g); + d += 0.05*psrdnoise(2.0*p - float2(0.0, 4.0*elapsed_time) + 0.15*g, float2(0.0,0.0), -16.0*time, g); + // "halo" is a kind of flame/plasma cloud near the core. A real Nixie tube + // doesn''t have this, but it adds some appealing visual detail. + // Looks more like hot filaments than "cold cathodes", but... oh, well. + float halo = 1.0-smoothstep(-0.3, 0.3, d); + + // Brittle parameters! This scale/shift of p has a strong impact + // on the pattern at the edges of the grid through "anodefade". + float3 anodedists = hexgrid(1.7*p+float2(0.1,0.23)); + float anodedist = anodedists.y - anodedists.x; // Voronoi cell borders + // Fade the hexagonal holes in the anode towards the edges + float anodefade = max(max(1.0-aasmoothstep(-2.2, -1.5, p.x), aasmoothstep(45.5, 46.2, p.x)), + max(1.0-aasmoothstep(-2.0, -1.6, p.y), aasmoothstep(9.4, 10.0, p.y))); + float anode = 1.0 - aastep(0.1, anodedist - anodefade); + + float anodecolornoise = 0.02*psrdnoise(p*float2(0.2,2.0), float2(0.0,0.0), 0.0, g); + float3 anodecolorresult = anodecolor+ anodecolornoise*anodehighlightscolor; // Long variable names, I know + + float3 mixcolor = float3(0.0,0.0,0.0); // Mix additively from black + mixcolor = lerp(mixcolor, flarecolor, 0.5*flare); + mixcolor = lerp(mixcolor, halocolor, 0.9*halo); + mixcolor = lerp(mixcolor, corecolor, core*glow); + mixcolor = lerp(mixcolor, anodecolorresult, anode); + mixcolor *= bbox; // AA-mask to black at the very edge of the bounding box + return float4(mixcolor,1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSColorDepthShader { + +[Alias('Set-OBSColorDepthShader','Add-OBSColorDepthShader')] +param( +# Set the colorDepth of OBSColorDepthShader +[ComponentModel.DefaultBindingProperty('colorDepth')] +[Single] +$ColorDepth, +# Set the pixelSize of OBSColorDepthShader +[ComponentModel.DefaultBindingProperty('pixelSize')] +[Single] +$PixelSize, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'color-depth' +$ShaderNoun = 'OBSColorDepthShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/tscfWM +uniform float colorDepth< + string label = "Color depth"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 100.0; + float step = 0.01; +> = 5.0; + +uniform float pixelSize< + string label = "Pixel Size"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 100.0; + float step = 0.01; +> = 5.0; + + +float4 mainImage(VertData v_in) : TARGET +{ + // Change these to change results + float2 size = uv_size / pixelSize; + float2 uv = v_in.uv; + // Maps UV onto grid of variable size to pixilate the image + uv = round(uv*size)/size; + float4 col = image.Sample(textureSampler, uv); + // Maps color onto the specified color depth + return float4(round(col.r * colorDepth) / colorDepth, + round(col.g * colorDepth) / colorDepth, + round(col.b * colorDepth) / colorDepth, 1.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSColorGradeFilterShader { + +[Alias('Set-OBSColorGradeFilterShader','Add-OBSColorGradeFilterShader')] +param( +# Set the notes of OBSColorGradeFilterShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the lut of OBSColorGradeFilterShader +[ComponentModel.DefaultBindingProperty('lut')] +[String] +$Lut, +# Set the lut_amount_percent of OBSColorGradeFilterShader +[Alias('lut_amount_percent')] +[ComponentModel.DefaultBindingProperty('lut_amount_percent')] +[Int32] +$LutAmountPercent, +# Set the lut_scale_percent of OBSColorGradeFilterShader +[Alias('lut_scale_percent')] +[ComponentModel.DefaultBindingProperty('lut_scale_percent')] +[Int32] +$LutScalePercent, +# Set the lut_offset_percent of OBSColorGradeFilterShader +[Alias('lut_offset_percent')] +[ComponentModel.DefaultBindingProperty('lut_offset_percent')] +[Int32] +$LutOffsetPercent, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'color_grade_filter' +$ShaderNoun = 'OBSColorGradeFilterShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Color Grade Filter by Charles Fettinger for obs-shaderfilter plugin 4/2020 +//https://github.com/Oncorporation/obs-shaderfilter +//OBS messed up the LUT system, this is basically the old LUT system +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform string notes< + string widget_type = "info"; +> = "Choose LUT, Default LUT amount is 100, scale = 100, offset = 0. Valid values: -200 to 200"; + +uniform texture2d lut< + string label = "LUT"; +>; +uniform int lut_amount_percent< + string label = "LUT amount percentage"; + string widget_type = "slider"; + int minimum = -200; + int maximum = 200; + int step = 1; +> = 100; +uniform int lut_scale_percent< + string label = "LUT scale percentage"; + string widget_type = "slider"; + int minimum = -200; + int maximum = 200; + int step = 1; +> = 100; +uniform int lut_offset_percent< + string label = "LUT offset percentage"; + string widget_type = "slider"; + int minimum = -200; + int maximum = 200; + int step = 1; +> = 0; + + +float4 mainImage(VertData v_in) : TARGET +{ + float lut_amount = clamp(lut_amount_percent *.01, -2.0, 2.0); + float lut_scale = clamp(lut_scale_percent *.01,-2.0, 2.0); + float lut_offset = clamp(lut_offset_percent *.01,-2.0, 2.0); + + float4 textureColor = image.Sample(textureSampler, v_in.uv); + float lumaLevel = textureColor.r * 0.2126 + textureColor.g * 0.7152 + textureColor.b * 0.0722; + float blueColor = float(lumaLevel);//textureColor.b * 63.0 + + float2 quad1; + quad1.y = floor(floor(float(blueColor)) / 8.0); + quad1.x = floor(float(blueColor)) - (quad1.y * 8.0); + + float2 quad2; + quad2.y = floor(ceil(float(blueColor)) / 8.0); + quad2.x = ceil(float(blueColor)) - (quad2.y * 8.0); + + float2 texPos1; + texPos1.x = (quad1.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); + texPos1.y = (quad1.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); + + float2 texPos2; + texPos2.x = (quad2.x * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.r); + texPos2.y = (quad2.y * 0.125) + 0.5/512.0 + ((0.125 - 1.0/512.0) * textureColor.g); + + float4 newColor1 = lut.Sample(textureSampler, texPos1); + newColor1.rgb = newColor1.rgb * lut_scale + lut_offset; + float4 newColor2 = lut.Sample(textureSampler, texPos2); + newColor2.rgb = newColor2.rgb * lut_scale + lut_offset; + float4 luttedColor = lerp(newColor1, newColor2, frac(float(blueColor))); + + float4 final_color = lerp(textureColor, luttedColor, lut_amount); + return float4(final_color.rgb, textureColor.a); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCornerPinShader { + +[Alias('Set-OBSCornerPinShader','Add-OBSCornerPinShader')] +param( +# Set the Antialias_Edges of OBSCornerPinShader +[Alias('Antialias_Edges')] +[ComponentModel.DefaultBindingProperty('Antialias_Edges')] +[Management.Automation.SwitchParameter] +$AntialiasEdges, +# Set the Top_Left_X of OBSCornerPinShader +[Alias('Top_Left_X')] +[ComponentModel.DefaultBindingProperty('Top_Left_X')] +[Single] +$TopLeftX, +# Set the Top_Left_Y of OBSCornerPinShader +[Alias('Top_Left_Y')] +[ComponentModel.DefaultBindingProperty('Top_Left_Y')] +[Single] +$TopLeftY, +# Set the Top_Right_X of OBSCornerPinShader +[Alias('Top_Right_X')] +[ComponentModel.DefaultBindingProperty('Top_Right_X')] +[Single] +$TopRightX, +# Set the Top_Right_Y of OBSCornerPinShader +[Alias('Top_Right_Y')] +[ComponentModel.DefaultBindingProperty('Top_Right_Y')] +[Single] +$TopRightY, +# Set the Bottom_Left_X of OBSCornerPinShader +[Alias('Bottom_Left_X')] +[ComponentModel.DefaultBindingProperty('Bottom_Left_X')] +[Single] +$BottomLeftX, +# Set the Bottom_Left_Y of OBSCornerPinShader +[Alias('Bottom_Left_Y')] +[ComponentModel.DefaultBindingProperty('Bottom_Left_Y')] +[Single] +$BottomLeftY, +# Set the Bottom_Right_X of OBSCornerPinShader +[Alias('Bottom_Right_X')] +[ComponentModel.DefaultBindingProperty('Bottom_Right_X')] +[Single] +$BottomRightX, +# Set the Bottom_Right_Y of OBSCornerPinShader +[Alias('Bottom_Right_Y')] +[ComponentModel.DefaultBindingProperty('Bottom_Right_Y')] +[Single] +$BottomRightY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'corner-pin' +$ShaderNoun = 'OBSCornerPinShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Corner Pin, Version 0.1, for OBS Shaderfilter +// Copyright ©️ 2022 by SkeletonBow +// License: GNU General Public License, version 2 +// Contact info: +// Twitter: +// Twitch: +// +// Based on: +// Original work by Inigo Quilez: https://www.iquilezles.org/www/articles/ibilinear/ibilinear.htm +// https://www.youtube.com/c/InigoQuilez +// https://iquilezles.org/ +// and the derivative StreamFX Corner Pin effect by Xaymar +// https://github.com/Xaymar/obs-StreamFX +// +// Description: +// Corner Pin allows you to pin the corners of an image onto the corners of an arbitrarily +// angled picture frame, TV screen or other rectangular surface in 3D space in an underlying +// image with proper perspective without distortion. +// +// TODO: +// - Add feature to automatically quantize corners to pixel centers +// +// Changelog: +// 0.1 - Initial release based on the StreamFX Corner Pin effect, as well as the original work by +// Inigo Quilez that it was based upon. + +uniform bool Antialias_Edges = true; + +uniform float Top_Left_X< + string label = "Top left x"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = -100.; +uniform float Top_Left_Y< + string label = "Top left y"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = -100.; +uniform float Top_Right_X< + string label = "Top right x"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = 100.; +uniform float Top_Right_Y< + string label = "Top right y"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = -100.; +uniform float Bottom_Left_X< + string label = "Bottom left x"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = -100.; +uniform float Bottom_Left_Y< + string label = "Bottom left y"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = 100.; +uniform float Bottom_Right_X< + string label = "Bottom right x"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = 100.; +uniform float Bottom_Right_Y< + string label = "Bottom right y"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.1; +> = 100.; + +// DEVELOPMENTAL DEBUGGING OPTIONS +//uniform float AAstrength = 1.0; +//uniform float AAdist = 1.0; +//uniform float debug_psmult = 1.0; +//#define PIXEL_SIZE_MULT 2.0 + +float cross2d(in float2 a, in float2 b) +{ + return (a.x * b.y) - (a.y * b.x); +} + +float2 inverse_bilinear(in float2 p, in float2 a, in float2 b, in float2 c, in float2 d) +{ + float2 result = float2(-1., -1.); + + float2 e = b - a; + float2 f = d - a; + float2 g = a-b+c-d; + float2 h = p-a; + + float k2 = cross2d(g, f); + float k1 = cross2d(e, f) + cross2d(h, g); + float k0 = cross2d(h, e); + + if (abs(k2) < .001) { // Edges are likely parallel, so this is a linear equation. + result = float2( + (h.x * k1 + f.x * k0) / (e.x * k1 - g.x * k0), + -k0 / k1 + ); + } else { // It''s a quadratic equation. + float w = k1 * k1 - 4.0 * k0 * k2; + if (w < 0.0) { // Prevent GPUs from going insane. + return result; + } + w = sqrt(w); + + float ik2 = 0.5/k2; + float v = (-k1 - w) * ik2; + float u = (h.x - f.x * v) / (e.x + g.x * v); + + if (u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0) { + v = (-k1 + w) * ik2; + u = (h.x - f.x * v) / (e.x + g.x * v); + } + + result = float2(u, v); + } + + return result; +} + +// distance to a line segment +float sdSegment( in float2 p, in float2 a, in float2 b ) +{ + p -= a; b -= a; + return length( p-b*saturate(dot(p,b)/dot(b,b)) ); +} + +// Anti-alias edges - EXPERIMENTAL - (SkeletonBow) +float aastepEdgeAlpha(in float alpha, in float2 p, in float2 a, in float2 b) +{ + //float ps = 2.0 * (2.0/uv_size.y); // Original +// float ps = debug_psmult * (2.0/uv_size.y); + float ps = (2.0/uv_size.y); +// float ps = fwidth(p)*2.; // Try using fwidth() - goes haywire on AMD Radeon HD7850 at least, disable for now + return lerp( alpha, 0.0, 1.0 - smoothstep(0.0,ps,sdSegment(p,a,b))); +} + +float4 mainImage( VertData v_in ) : TARGET { + float2 p = 2.* v_in.uv - 1.; + + float2 Top_Left = float2(Top_Left_X, Top_Left_Y) * .01; + float2 Top_Right = float2(Top_Right_X, Top_Right_Y) * .01; + float2 Bottom_Left = float2(Bottom_Left_X, Bottom_Left_Y) * .01; + float2 Bottom_Right = float2(Bottom_Right_X, Bottom_Right_Y) * .01; + + // Convert from screen coords to potential Quad UV coordinates + float2 uv = inverse_bilinear(p, Top_Left, Top_Right, Bottom_Right, Bottom_Left); + + if (max(abs(uv.x - .5), abs(uv.y - .5)) >= .5) { + return float4(0.0, 0.0, 0.0, 0.0); + } + + float4 texel = image.Sample(textureSampler, uv); + + if ( Antialias_Edges ) { + // Anti-alias edges of texture + texel.a = aastepEdgeAlpha(texel.a, p, Top_Left, Top_Right); + texel.a = aastepEdgeAlpha(texel.a, p, Top_Right, Bottom_Right); + texel.a = aastepEdgeAlpha(texel.a, p, Bottom_Right, Bottom_Left); + texel.a = aastepEdgeAlpha(texel.a, p, Bottom_Left, Top_Left); + } + return texel; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCrtCurvatureShader { + +[Alias('Set-OBSCrtCurvatureShader','Add-OBSCrtCurvatureShader')] +param( +# Set the strength of OBSCrtCurvatureShader +[ComponentModel.DefaultBindingProperty('strength')] +[Single] +$Strength, +# Set the border of OBSCrtCurvatureShader +[ComponentModel.DefaultBindingProperty('border')] +[String] +$Border, +# Set the feathering of OBSCrtCurvatureShader +[ComponentModel.DefaultBindingProperty('feathering')] +[Single] +$Feathering, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'crt-curvature' +$ShaderNoun = 'OBSCrtCurvatureShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float strength< + string label = "Strength"; + string widget_type = "slider"; + float minimum = 0.; + float maximum = 200.; + float step = 0.01; +> = 33.33; + +uniform float4 border< + string label = "Border Color"; +> = {0., 0., 0., 1.}; + +uniform float feathering< + string label = "Feathering"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 33.33; + + +float4 mainImage(VertData v_in) : TARGET +{ + float2 cc = v_in.uv - float2(0.5, 0.5); + float dist = dot(cc, cc) * strength / 100.0; + float2 bent = v_in.uv + cc * (1.0 + dist) * dist; + if ((bent.x <= 0.0 || bent.x >= 1.0) || (bent.y <= 0.0 || bent.y >= 1.0)) { + return border; + } + if (feathering >= .01) { + float2 borderArea = float2(0.5, 0.5) * feathering / 100.0; + float2 borderDistance = (float2(0.5, 0.5) - abs(bent - float2(0.5, 0.5))) / float2(0.5, 0.5); + borderDistance = (min(borderDistance - float2(0.5, 0.5) * feathering / 100.0, 0) + borderArea) / borderArea; + float borderFade = sin(borderDistance.x * 1.570796326) * sin(borderDistance.y * 1.570796326); + return lerp(border, image.Sample(textureSampler, bent), borderFade); + } + + return image.Sample(textureSampler, bent); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCurveShader { + +[Alias('Set-OBSCurveShader','Add-OBSCurveShader')] +param( +# Set the strength of OBSCurveShader +[ComponentModel.DefaultBindingProperty('strength')] +[Single] +$Strength, +# Set the scale of OBSCurveShader +[ComponentModel.DefaultBindingProperty('scale')] +[Single] +$Scale, +# Set the curve_color of OBSCurveShader +[Alias('curve_color')] +[ComponentModel.DefaultBindingProperty('curve_color')] +[String] +$CurveColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'curve' +$ShaderNoun = 'OBSCurveShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.14159265359 + +uniform float strength< + string label = "Strength"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +uniform float scale< + string label = "Scale"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 1.0; + +uniform float4 curve_color = {0,0,0,0}; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + const float ydiff = 1.0; + uv -= float2(0.5,ydiff); + uv.x *= ( uv_size.x / uv_size.y); + uv /= scale; + if(strength > 0.0){ + float d = tan((1.0-strength)*PI/2.0); + float r = length(float2(0.5*(uv_size.x / uv_size.y), d)); + float2 center = float2(0.0,(1.0-ydiff)+d); + float pd = distance(uv, center); + if(pd < r) + return curve_color; + float angle = atan2(center.x-uv.x,center.y-uv.y); + uv = float2(uv.x + sin(angle)*(pd-r),(1.0-ydiff)-(pd-r)); + } + uv.x /= ( uv_size.x / uv_size.y); + uv += float2(0.5,ydiff); + return image.Sample(textureSampler,uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCutRectPerCornerShader { + +[Alias('Set-OBSCutRectPerCornerShader','Add-OBSCutRectPerCornerShader')] +param( +# Set the corner_tl of OBSCutRectPerCornerShader +[Alias('corner_tl')] +[ComponentModel.DefaultBindingProperty('corner_tl')] +[Int32] +$CornerTl, +# Set the corner_tr of OBSCutRectPerCornerShader +[Alias('corner_tr')] +[ComponentModel.DefaultBindingProperty('corner_tr')] +[Int32] +$CornerTr, +# Set the corner_br of OBSCutRectPerCornerShader +[Alias('corner_br')] +[ComponentModel.DefaultBindingProperty('corner_br')] +[Int32] +$CornerBr, +# Set the corner_bl of OBSCutRectPerCornerShader +[Alias('corner_bl')] +[ComponentModel.DefaultBindingProperty('corner_bl')] +[Int32] +$CornerBl, +# Set the border_thickness of OBSCutRectPerCornerShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSCutRectPerCornerShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_alpha_start of OBSCutRectPerCornerShader +[Alias('border_alpha_start')] +[ComponentModel.DefaultBindingProperty('border_alpha_start')] +[Single] +$BorderAlphaStart, +# Set the border_alpha_end of OBSCutRectPerCornerShader +[Alias('border_alpha_end')] +[ComponentModel.DefaultBindingProperty('border_alpha_end')] +[Single] +$BorderAlphaEnd, +# Set the alpha_cut_off of OBSCutRectPerCornerShader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'cut_rect_per_corner' +$ShaderNoun = 'OBSCutRectPerCornerShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int corner_tl< + string label = "Corner top left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int corner_tr< + string label = "Corner top right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int corner_br< + string label = "Corner bottom right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int corner_bl< + string label = "Corner bottom left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_color; +uniform float border_alpha_start< + string label = "Border aplha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float border_alpha_end< + string label = "Border aplha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; +uniform float alpha_cut_off< + string label = "Alpha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 pixel = image.Sample(textureSampler, v_in.uv); + int closedEdgeX = 0; + int closedEdgeY = 0; + if(pixel.a < alpha_cut_off){ + return float4(1.0,0.0,0.0,0.0); + } + int corner_top = corner_tl>corner_tr?corner_tl:corner_tr; + int corner_right = corner_tr>corner_br?corner_tr:corner_br; + int corner_bottom = corner_bl>corner_br?corner_bl:corner_br; + int corner_left = corner_tl>corner_bl?corner_tl:corner_bl; + + if(image.Sample(textureSampler, v_in.uv + float2(corner_right*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = corner_right; + }else if(image.Sample(textureSampler, v_in.uv + float2(-corner_left*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = -corner_left; + } + if(image.Sample(textureSampler, v_in.uv + float2(0,corner_bottom*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = corner_bottom; + }else if(image.Sample(textureSampler, v_in.uv + float2(0,-corner_top*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = -corner_top; + } + if(closedEdgeX == 0 && closedEdgeY == 0){ + return pixel; + } + if(closedEdgeX != 0){ + [loop] for(int x = 1;x 0 && closedEdgeY < 0){ + corner_radius = corner_tr; + }else if(closedEdgeX > 0 && closedEdgeY > 0){ + corner_radius = corner_br; + }else if(closedEdgeX < 0 && closedEdgeY > 0){ + corner_radius = corner_bl; + } + if(closedEdgeXabs > corner_radius && closedEdgeYabs > corner_radius){ + return pixel; + } + if(closedEdgeXabs == 0){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeYabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeYabs == 0){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeXabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeXabs > corner_radius){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeYabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeYabs > corner_radius){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeXabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + float d = closedEdgeXabs+closedEdgeYabs; + if(d>corner_radius){ + if(d-corner_radius <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + ((d-corner_radius)/ float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + return float4(0.0,0.0,0.0,0.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCylinderShader { + +[Alias('Set-OBSCylinderShader','Add-OBSCylinderShader')] +param( +# Set the cylinder_factor of OBSCylinderShader +[Alias('cylinder_factor')] +[ComponentModel.DefaultBindingProperty('cylinder_factor')] +[Single] +$CylinderFactor, +# Set the background_cut of OBSCylinderShader +[Alias('background_cut')] +[ComponentModel.DefaultBindingProperty('background_cut')] +[Single] +$BackgroundCut, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'cylinder' +$ShaderNoun = 'OBSCylinderShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float cylinder_factor< + string label = "Cylinder factor"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.2; +uniform float background_cut< + string label = "Background cut"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.1; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + uv.x -= 0.5; + float bend = sqrt(1.0 - uv.x*uv.x*4); + uv.y = uv.y/(1.0 - cylinder_factor)-bend*cylinder_factor; + uv.y-=cylinder_factor/2; + uv.x /= 2; + uv.x += 0.5; + float4 front_color = image.Sample(textureSampler, uv); + front_color.rgb *= bend/2+0.5; + if(front_color.a >= 1.0) + return front_color; + + uv = v_in.uv; + uv.x -= 0.5; + if(abs(uv.x) < background_cut) + return front_color; + uv.y = uv.y/(1.0 - cylinder_factor)+bend*cylinder_factor; + uv.y-=cylinder_factor/2; + uv.x /= 2; + if(uv.x > 0){ + uv.x = 1.0 - uv.x; + }else{ + uv.x = 0 - uv.x; + } + + float4 back_color = image.Sample(textureSampler, uv); + back_color.rgb *= 0.5-bend/2; + front_color.rgb *= front_color.a; + front_color.rgb += back_color.rgb * (1.0 - front_color.a) * back_color.a; + front_color.a = back_color.a * (1.0 - front_color.a) + front_color.a; + return front_color; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDarkenShader { + +[Alias('Set-OBSDarkenShader','Add-OBSDarkenShader')] +param( +# Set the Opacity_Percentage of OBSDarkenShader +[Alias('Opacity_Percentage')] +[ComponentModel.DefaultBindingProperty('Opacity_Percentage')] +[Single] +$OpacityPercentage, +# Set the Fill_Percentage of OBSDarkenShader +[Alias('Fill_Percentage')] +[ComponentModel.DefaultBindingProperty('Fill_Percentage')] +[Single] +$FillPercentage, +# Set the Notes of OBSDarkenShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'darken' +$ShaderNoun = 'OBSDarkenShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float Opacity_Percentage = 100.0; +uniform float Fill_Percentage = 100.0; +uniform string Notes = "Simulates a photo editing darken layer blending mode. Fill percentage is the interior alpha and Opacity is the layer alpha."; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 other = float4(1.0, 1.0, 1.0, 1.0); + float4 base = image.Sample(textureSampler, v_in.uv); + float luminance = dot(base.rgb, float3(0.299, 0.587, 0.114)); + float4 gray = float4(luminance,luminance,luminance, 1.0); + + return min(base,other); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDeadPixelFixerShader { + +[Alias('Set-OBSDeadPixelFixerShader','Add-OBSDeadPixelFixerShader')] +param( +# Set the Dead_Pixel_X of OBSDeadPixelFixerShader +[Alias('Dead_Pixel_X')] +[ComponentModel.DefaultBindingProperty('Dead_Pixel_X')] +[Int32] +$DeadPixelX, +# Set the Dead_Pixel_Y of OBSDeadPixelFixerShader +[Alias('Dead_Pixel_Y')] +[ComponentModel.DefaultBindingProperty('Dead_Pixel_Y')] +[Int32] +$DeadPixelY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'dead-pixel-fixer' +$ShaderNoun = 'OBSDeadPixelFixerShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Dead Pixel Fixer, Version 0.01, for OBS Shaderfilter +// Copyright ©️ 2022 by SkeletonBow +// License: GNU General Public License, version 2 +// Contact info: +// Twitter: +// Twitch: +// +// Description: Intended for use with an input source that has a dead pixel on its sensor such as a webcam. +// The pixel located at the user configured offset will have its color overridden by taking the average of the +// color of the 8 pixels immediately surrounding it, effectively hiding the dead pixel. +// +// Changelog: +// 0.01 - Initial release + +uniform int Dead_Pixel_X< + string label = "Dead Pixel X"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 2000; + int step = 1; +> = 0; +uniform int Dead_Pixel_Y< + string label = "Dead Pixel Y"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 2000; + int step = 1; +> = 0; + +float3 blur_dead_pixel(in float2 pos) +{ + float3 color; + color = image.Sample(textureSampler, (pos + float2(-1.0, -0.5))/uv_size).rgb; + color += image.Sample(textureSampler, (pos + float2(0.5, -1.0))/uv_size).rgb; + color += image.Sample(textureSampler, (pos + float2(1.0, 0.5))/uv_size).rgb; + color += image.Sample(textureSampler, (pos + float2(-0.5, 1.0))/uv_size).rgb; + return color * 0.25; +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float2 pos = v_in.pos.xy; + float2 dp_pos = clamp( float2(Dead_Pixel_X, Dead_Pixel_Y), float2(0.0,0.0), uv_size - 1); + float4 obstex = image.Sample(textureSampler, uv); + float3 color; + + if(floor(pos.x) == floor(dp_pos.x) && floor(pos.y) == floor(dp_pos.y) ) { + color = blur_dead_pixel(pos); + } else { + color.rgb = obstex.rgb; + } + return float4( color, obstex.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDensitySatHueShader { + +[Alias('Set-OBSDensitySatHueShader','Add-OBSDensitySatHueShader')] +param( +# Set the notes of OBSDensitySatHueShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the density_r of OBSDensitySatHueShader +[Alias('density_r')] +[ComponentModel.DefaultBindingProperty('density_r')] +[Single] +$DensityR, +# Set the saturation_r of OBSDensitySatHueShader +[Alias('saturation_r')] +[ComponentModel.DefaultBindingProperty('saturation_r')] +[Single] +$SaturationR, +# Set the hueShift_r of OBSDensitySatHueShader +[Alias('hueShift_r')] +[ComponentModel.DefaultBindingProperty('hueShift_r')] +[Single] +$HueShiftR, +# Set the density_y of OBSDensitySatHueShader +[Alias('density_y')] +[ComponentModel.DefaultBindingProperty('density_y')] +[Single] +$DensityY, +# Set the saturation_y of OBSDensitySatHueShader +[Alias('saturation_y')] +[ComponentModel.DefaultBindingProperty('saturation_y')] +[Single] +$SaturationY, +# Set the hueShift_y of OBSDensitySatHueShader +[Alias('hueShift_y')] +[ComponentModel.DefaultBindingProperty('hueShift_y')] +[Single] +$HueShiftY, +# Set the density_g of OBSDensitySatHueShader +[Alias('density_g')] +[ComponentModel.DefaultBindingProperty('density_g')] +[Single] +$DensityG, +# Set the saturation_g of OBSDensitySatHueShader +[Alias('saturation_g')] +[ComponentModel.DefaultBindingProperty('saturation_g')] +[Single] +$SaturationG, +# Set the hueShift_g of OBSDensitySatHueShader +[Alias('hueShift_g')] +[ComponentModel.DefaultBindingProperty('hueShift_g')] +[Single] +$HueShiftG, +# Set the density_c of OBSDensitySatHueShader +[Alias('density_c')] +[ComponentModel.DefaultBindingProperty('density_c')] +[Single] +$DensityC, +# Set the saturation_c of OBSDensitySatHueShader +[Alias('saturation_c')] +[ComponentModel.DefaultBindingProperty('saturation_c')] +[Single] +$SaturationC, +# Set the hueShift_c of OBSDensitySatHueShader +[Alias('hueShift_c')] +[ComponentModel.DefaultBindingProperty('hueShift_c')] +[Single] +$HueShiftC, +# Set the density_b of OBSDensitySatHueShader +[Alias('density_b')] +[ComponentModel.DefaultBindingProperty('density_b')] +[Single] +$DensityB, +# Set the saturation_b of OBSDensitySatHueShader +[Alias('saturation_b')] +[ComponentModel.DefaultBindingProperty('saturation_b')] +[Single] +$SaturationB, +# Set the hueShift_b of OBSDensitySatHueShader +[Alias('hueShift_b')] +[ComponentModel.DefaultBindingProperty('hueShift_b')] +[Single] +$HueShiftB, +# Set the density_m of OBSDensitySatHueShader +[Alias('density_m')] +[ComponentModel.DefaultBindingProperty('density_m')] +[Single] +$DensityM, +# Set the saturation_m of OBSDensitySatHueShader +[Alias('saturation_m')] +[ComponentModel.DefaultBindingProperty('saturation_m')] +[Single] +$SaturationM, +# Set the hueShift_m of OBSDensitySatHueShader +[Alias('hueShift_m')] +[ComponentModel.DefaultBindingProperty('hueShift_m')] +[Single] +$HueShiftM, +# Set the global_density of OBSDensitySatHueShader +[Alias('global_density')] +[ComponentModel.DefaultBindingProperty('global_density')] +[Single] +$GlobalDensity, +# Set the global_saturation of OBSDensitySatHueShader +[Alias('global_saturation')] +[ComponentModel.DefaultBindingProperty('global_saturation')] +[Single] +$GlobalSaturation, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'density_sat_hue' +$ShaderNoun = 'OBSDensitySatHueShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Density-Saturation-Hue Shader for OBS Shaderfilter +// Modified by CameraTim for use with obs-shaderfilter 12/2024 v.12 + +uniform string notes< + string widget_type = "info"; +> = "Density adjustment shader: Density reduces luminance, while saturation is subtractively increased to avoid greyish colors."; + +uniform float density_r < + string label = "Red Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_r < + string label = "Red Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_r < + string label = "Red Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_y < + string label = "Yellow Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_y < + string label = "Yellow Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_y < + string label = "Yellow Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_g < + string label = "Green Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_g < + string label = "Green Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_g < + string label = "Green Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_c < + string label = "Cyan Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_c < + string label = "Cyan Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_c < + string label = "Cyan Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_b < + string label = "Blue Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_b < + string label = "Blue Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_b < + string label = "Blue Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float density_m < + string label = "Magenta Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float saturation_m < + string label = "Magenta Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float hueShift_m < + string label = "Magenta Hue Shift"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float global_density < + string label = "Global Density"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float global_saturation < + string label = "Global Sat"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +// Tetrahedral interpolation based on the ordering of the input color channels +float3 applyAdjustments(float3 p) { + // Pre-calculate the flipped density values for each channel: + float d_r = -(density_r + global_density); + float d_y = -(density_y + global_density); + float d_g = -(density_g + global_density); + float d_c = -(density_c + global_density); + float d_b = -(density_b + global_density); + float d_m = -(density_m + global_density); + + // Compute the color vectors for each hue region using the flipped densities: + float3 red = float3( + 1.0 + d_r, + d_r - (saturation_r + global_saturation), + d_r + hueShift_r - (saturation_r + global_saturation) + ); + + float3 yellow = float3( + 1.0 + hueShift_y + d_y, + 1.0 + d_y, + d_y - (saturation_y + global_saturation) + ); + + float3 green = float3( + d_g - (saturation_g + global_saturation), + 1.0 + d_g, + d_g + hueShift_g - (saturation_g + global_saturation) + ); + + float3 cyan = float3( + d_c - (saturation_c + global_saturation), + 1.0 + hueShift_c + d_c, + 1.0 + d_c + ); + + float3 blue = float3( + d_b + hueShift_b - (saturation_b + global_saturation), + d_b - (saturation_b + global_saturation), + 1.0 + d_b + ); + + float3 magenta = float3( + 1.0 + d_m, + d_m - (saturation_m + global_saturation), + 1.0 + hueShift_m + d_m + ); + + // Define the black and white endpoints: + float3 blk = float3(0.0, 0.0, 0.0); + float3 wht = float3(1.0, 1.0, 1.0); + + float3 rgb; + if (p.r > p.g) { + if (p.g > p.b) { + // p.r >= p.g >= p.b + rgb = p.r * (red - blk) + blk + p.g * (yellow - red) + p.b * (wht - yellow); + } else if (p.r > p.b) { + // p.r >= p.b > p.g + rgb = p.r * (red - blk) + blk + p.g * (wht - magenta) + p.b * (magenta - red); + } else { + // p.b >= p.r > p.g + rgb = p.r * (magenta - blue) + p.g * (wht - magenta) + p.b * (blue - blk) + blk; + } + } else { + if (p.b > p.g) { + // p.b >= p.g >= p.r + rgb = p.r * (wht - cyan) + p.g * (cyan - blue) + p.b * (blue - blk) + blk; + } else if (p.b > p.r) { + // p.g >= p.r and p.b > p.r + rgb = p.r * (wht - cyan) + p.g * (green - blk) + blk + p.b * (cyan - green); + } else { + // p.g >= p.b >= p.r + rgb = p.r * (yellow - green) + p.g * (green - blk) + blk + p.b * (wht - yellow); + } + } + return clamp(rgb, 0.0, 1.0); +} + +float4 mainImage(VertData v_in) : TARGET { + float4 inputColor = image.Sample(textureSampler, v_in.uv); + float3 adjustedColor = applyAdjustments(inputColor.rgb); + return float4(adjustedColor, inputColor.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDiffuseTransitionShader { + +[Alias('Set-OBSDiffuseTransitionShader','Add-OBSDiffuseTransitionShader')] +param( +# Set the image_a of OBSDiffuseTransitionShader +[Alias('image_a')] +[ComponentModel.DefaultBindingProperty('image_a')] +[String] +$ImageA, +# Set the image_b of OBSDiffuseTransitionShader +[Alias('image_b')] +[ComponentModel.DefaultBindingProperty('image_b')] +[String] +$ImageB, +# Set the transition_time of OBSDiffuseTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBSDiffuseTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# Set the num_samples of OBSDiffuseTransitionShader +[Alias('num_samples')] +[ComponentModel.DefaultBindingProperty('num_samples')] +[Int32] +$NumSamples, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'diffuse_transition' +$ShaderNoun = 'OBSDiffuseTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/4cK3z1 +uniform texture2d image_a; +uniform texture2d image_b; +uniform float transition_time = 0.5; +uniform bool convert_linear = true; + +// Diffuse (move pixels) between two 2D images +// Demo inspired by Iterative-(de)Blending (see Figure 9 in https://arxiv.org/pdf/2305.03486.pdf) +// Note: the approach in this demo is different - rather than randomising paths we use means + +// increase for greater precision - this is O(n^2) :( +uniform int num_samples< + string label = "Number of samples (10)"; + string widget_type = "slider"; + int minimum = 2; + int maximum = 100; + int step = 1; +> = 10; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + + if (transition_time < 0.00001) { + return image_a.Sample(textureSampler, uv); + } + + // we need to normalise the distributions so just sum the samples for a division later + // note: could calculate this once per image in a buffer or something + float3 from_total = float3(0.0,0.0,0.0); + float3 to_total = float3(0.0,0.0,0.0); + + for (int i=0; iAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDigitalRainShader { + +[Alias('Set-OBSDigitalRainShader','Add-OBSDigitalRainShader')] +param( +# Set the font of OBSDigitalRainShader +[ComponentModel.DefaultBindingProperty('font')] +[String] +$Font, +# Set the noise of OBSDigitalRainShader +[ComponentModel.DefaultBindingProperty('noise')] +[String] +$Noise, +# Set the base_color of OBSDigitalRainShader +[Alias('base_color')] +[ComponentModel.DefaultBindingProperty('base_color')] +[String] +$BaseColor, +# Set the rain_speed of OBSDigitalRainShader +[Alias('rain_speed')] +[ComponentModel.DefaultBindingProperty('rain_speed')] +[Single] +$RainSpeed, +# Set the char_speed of OBSDigitalRainShader +[Alias('char_speed')] +[ComponentModel.DefaultBindingProperty('char_speed')] +[Single] +$CharSpeed, +# Set the glow_contrast of OBSDigitalRainShader +[Alias('glow_contrast')] +[ComponentModel.DefaultBindingProperty('glow_contrast')] +[Single] +$GlowContrast, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'digital-rain' +$ShaderNoun = 'OBSDigitalRainShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// based on https://www.shadertoy.com/view/ldccW4 by WillKirkby + + +#ifndef OPENGL +#define fract frac +#define mix lerp +#endif + +uniform texture2d font = "font.png"; +uniform texture2d noise = "noise.png"; +uniform float4 base_color = {.1, 1.0, .35, 1.0}; +uniform float rain_speed< + string label = "Rain Speed"; + string widget_type = "slider"; + float minimum = 0.001; + float maximum = 2.0; + float step = .001; +> = 1.0; + +uniform float char_speed< + string label = "Character Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = .001; +> = 1.0; + +uniform float glow_contrast< + string label = "Glow contrast"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.5; + float step = .001; +> = 1.0; + + +float mod(float x, float y) +{ + return x - y * floor(x/y); +} + +float2 mod2(float2 x, float2 y) +{ + return x - y * floor(x/y); +} + +float text(float2 fragCoord) +{ + float2 uv = mod2(fragCoord, float2(16.0, 16.0) )/16.0; + float2 block = (fragCoord*.0625 - uv)/uv_size*16.0; + uv = uv*.8+.1; // scale the letters up a bit + block += elapsed_time*.002*char_speed; + uv += floor(noise.Sample(textureSampler, fract(block)).xy * 16.); // randomize letters + uv *= .0625; // bring back into 0-1 range + return font.Sample(textureSampler, uv).r; +} + +float3 rain(float2 fragCoord) +{ + fragCoord.x -= mod(fragCoord.x, 16.); + float offset=sin(fragCoord.x*15.); + float speed=(cos(fragCoord.x*3.)*.3+.7)*rain_speed; + + float y = fract(fragCoord.y/uv_size.y + elapsed_time*speed + offset); + return base_color.rgb / pow(y*20.0, glow_contrast); +} + +float4 mainImage(VertData v_in) : TARGET +{ + return mix(image.Sample(textureSampler, v_in.uv),float4(rain(float2(v_in.uv.x,1.0-v_in.uv.y)*uv_size),1.0), text(v_in.uv*uv_size)); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDivideRotateShader { + +[Alias('Set-OBSDivideRotateShader','Add-OBSDivideRotateShader')] +param( +# Set the iChannel0 of OBSDivideRotateShader +[ComponentModel.DefaultBindingProperty('iChannel0')] +[String] +$IChannel0, +# Set the speed_percentage of OBSDivideRotateShader +[Alias('speed_percentage')] +[ComponentModel.DefaultBindingProperty('speed_percentage')] +[Int32] +$SpeedPercentage, +# Set the alpha_percentage of OBSDivideRotateShader +[Alias('alpha_percentage')] +[ComponentModel.DefaultBindingProperty('alpha_percentage')] +[Int32] +$AlphaPercentage, +# Set the Apply_To_Alpha_Layer of OBSDivideRotateShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the notes of OBSDivideRotateShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'divide_rotate' +$ShaderNoun = 'OBSDivideRotateShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// divide and rotate shader for OBS Studio shaderfilter plugin +// originally from shadertoy (https://www.shadertoy.com/view/3sy3Dh) +// Modified by Charles Fettinger (https://github.com/Oncorporation) 10/2019 +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform texture2d iChannel0; +uniform int speed_percentage< + string label = "Speed"; + string widget_type = "slider"; + int minimum = -10; + int maximum = 10; + int step = 1; +> = 5; +uniform int alpha_percentage< + string label = "Opacity Percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform bool Apply_To_Alpha_Layer = true; + +uniform string notes< + string widget_type = "info"; +> = "add rotation and speed"; + + +float2 cm(float2 a, float2 b) { + return float2(a.x * b.x - a.y * b.y, a.x * b.y + a.y * b.x); +} + +float2 iter(float2 uv, float2 rot, float scale) { + float2 gv = frac(cm(uv, rot) * scale); + float boundDist = 1. - max(abs(gv.x), abs(gv.y)); + float mask = step(.03, boundDist); + gv *= mask; + return gv; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float alpha = clamp(alpha_percentage * 0.01, 0.0, 1.0); + float speed = clamp(speed_percentage * 0.01, -10.0, 10.0); + + // Normalize coords + //float2 uv = (v_in.uv * uv_scale + uv_offset); + float2 uv = (float2(v_in.uv.x, (1 - v_in.uv.y)) * uv_scale + uv_offset) - .5 * (v_in.uv * uv_scale + uv_offset);// / v_in.uv.y; + float2 mouse = (v_in.uv.xy - .5 * v_in.uv.xy) / v_in.uv.y; + + // Add some time rotation and offset + float t = elapsed_time * speed; + float2 time = float2(sin(t), cos(t)); + uv += time; + + // Imaginary component has to be mirrored for natural feeling rotation + mouse.y *= -1.0; + + // Draw few layers of this to bend space + float2 rot = cm(mouse, time); + for (float i=1.0; i<=3.0; i++) { + uv = iter(uv, rot, 1.5); + } + + // Combine background with new image + float4 background_color = image.Sample(textureSampler, v_in.uv); + float4 col = iChannel0.Sample(textureSampler, uv); + + // Border + if (uv.x == 0.0 && uv.y == 0.0) { + col = float4(0,0,0,alpha); + } + + // if not appling to alpha layer, set output alpha + if (Apply_To_Alpha_Layer == false) + col.a = alpha; + + //output color is combined with background image + col.rgb = lerp(background_color.rgb,col.rgb,clamp(alpha, 0.0, 1.0)); + + return col; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDoodleShader { + +[Alias('Set-OBSDoodleShader','Add-OBSDoodleShader')] +param( +# Set the ViewProj of OBSDoodleShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSDoodleShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSDoodleShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSDoodleShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSDoodleShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSDoodleShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSDoodleShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSDoodleShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the Doodle_Scale_Percent of OBSDoodleShader +[Alias('Doodle_Scale_Percent')] +[ComponentModel.DefaultBindingProperty('Doodle_Scale_Percent')] +[Single] +$DoodleScalePercent, +# Set the Snap_Percent of OBSDoodleShader +[Alias('Snap_Percent')] +[ComponentModel.DefaultBindingProperty('Snap_Percent')] +[Single] +$SnapPercent, +# Set the Notes of OBSDoodleShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'doodle' +$ShaderNoun = 'OBSDoodleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// doodle effect by Charles Fettinger (https://github.com/Oncorporation) 5/2019 +// for use with obs-shaderfilter 1.0 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +uniform float Doodle_Scale_Percent< + string label = "Doodle Scale Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 2.5; +uniform float Snap_Percent< + string label = "Snap Percent"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 100.0; + float step = 0.1; +> = 7.5; +uniform string Notes< + string widget_type = "info"; +> = "Doodle skews the image by the Scale Percent, Snap Percent controls the number of doodles per second."; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float3 rand3(float3 co) +{ + float j = 4096.0*sin(dot(co, float3(17.0, 59.4, 15.0))); + float3 result; + result.z = frac(512.0*j); + j *= .125; + result.x = frac(512.0*j); + j *= .125; + result.y = frac(512.0*j); + return result - 0.5; +} + +float snap(float x, float snap) +{ + return snap * round(x / max(0.01,snap)); +} + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + float time = snap((1 + sin(elapsed_time)) * 0.5, Snap_Percent * .01); + float rand = snap(rand_f, Snap_Percent *.01); + float2 noise = rand3(v_in.pos.xyz + float3(time,0.0,0.0)).xy * (Doodle_Scale_Percent * .01); + vert_out.uv.xy += noise; + + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +technique Draw +{ + pass p0 + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDrawingsShader { + +[Alias('Set-OBSDrawingsShader','Add-OBSDrawingsShader')] +param( +# Set the AngleNum of OBSDrawingsShader +[ComponentModel.DefaultBindingProperty('AngleNum')] +[Int32] +$AngleNum, +# Set the SampNum of OBSDrawingsShader +[ComponentModel.DefaultBindingProperty('SampNum')] +[Int32] +$SampNum, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'drawings' +$ShaderNoun = 'OBSDrawingsShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/ldlcWs + +uniform int AngleNum< + string label = "Number of angles"; + string widget_type = "slider"; + int minimum = 0.0; + int maximum = 25; + int step = 1; +> = 3; +uniform int SampNum< + string label = "Number of samples"; + string widget_type = "slider"; + int minimum = 0.0; + int maximum = 25; + int step = 1; +> = 9; + +float4 getCol(float2 pos) +{ + // take aspect ratio into account + float2 uv=pos; + float4 c1=image.Sample(textureSampler, uv); + float4 e=smoothstep(float4(-0.05,-0.05,-0.05,-0.05),float4(-0.0,-0.0,-0.0,-0.0),float4(uv,float2(1,1)-uv)); + c1=lerp(float4(1,1,1,0),c1,e.x*e.y*e.z*e.w); + float d=clamp(dot(c1.xyz,float3(-.5,1.,-.5)),0.0,1.0); + float4 c2=float4(.7,.7,.7,.7); + return min(lerp(c1,c2,1.8*d),.7); +} + +float4 getColHT(float2 pos) +{ + return smoothstep(0.795,1.05,getCol(pos)*.8+.2+1.0); +} + +float getVal(float2 pos) +{ + float4 c=getCol(pos); + return pow(dot(c.xyz,float3(.333,.333,.333)),1.)*1.; +} + +float2 getGrad(float2 pos, float eps) +{ + float2 d=float2(eps,0.); + return float2( + getVal(pos+d.xy)-getVal(pos-d.xy), + getVal(pos+d.yx)-getVal(pos-d.yx) + )/eps/2.; +} + + + float lum( float3 c) { + return dot(c, float3(0.3, 0.59, 0.11)); + } + + + float3 clipcolor( float3 c) { + float l = lum(c); + float n = min(min(c.r, c.g), c.b); + float x = max(max(c.r, c.g), c.b); + + if (n < 0.0) { + c.r = l + ((c.r - l) * l) / (l - n); + c.g = l + ((c.g - l) * l) / (l - n); + c.b = l + ((c.b - l) * l) / (l - n); + } + if (x > 1.25) { + c.r = l + ((c.r - l) * (1.0 - l)) / (x - l); + c.g = l + ((c.g - l) * (1.0 - l)) / (x - l); + c.b = l + ((c.b - l) * (1.0 - l)) / (x - l); + } + return c; + } + + float3 setlum( float3 c, float l) { + float d = l - lum(c); + c = c + float3(d,d,d); + return clipcolor(0.85*c); + } + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + float3 col = float3(0,0,0); + float3 col2 = float3(0,0,0); + float sum=0.; + + for(int i=0;iAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDropShadowShader { + +[Alias('Set-OBSDropShadowShader','Add-OBSDropShadowShader')] +param( +# Set the shadow_offset_x of OBSDropShadowShader +[Alias('shadow_offset_x')] +[ComponentModel.DefaultBindingProperty('shadow_offset_x')] +[Int32] +$ShadowOffsetX, +# Set the shadow_offset_y of OBSDropShadowShader +[Alias('shadow_offset_y')] +[ComponentModel.DefaultBindingProperty('shadow_offset_y')] +[Int32] +$ShadowOffsetY, +# Set the shadow_blur_size of OBSDropShadowShader +[Alias('shadow_blur_size')] +[ComponentModel.DefaultBindingProperty('shadow_blur_size')] +[Int32] +$ShadowBlurSize, +# Set the notes of OBSDropShadowShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the shadow_color of OBSDropShadowShader +[Alias('shadow_color')] +[ComponentModel.DefaultBindingProperty('shadow_color')] +[String] +$ShadowColor, +# Set the is_alpha_premultiplied of OBSDropShadowShader +[Alias('is_alpha_premultiplied')] +[ComponentModel.DefaultBindingProperty('is_alpha_premultiplied')] +[Management.Automation.SwitchParameter] +$IsAlphaPremultiplied, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'drop_shadow' +$ShaderNoun = 'OBSDropShadowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Drop Shadow shader modified by Charles Fettinger +// impose a limiter to keep from crashing the system +//Converted to OpenGL by Exeldro February 19, 2022 +uniform int shadow_offset_x< + string label = "Shadow offset x"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +> = 5; +uniform int shadow_offset_y< + string label = "Shadow offset y"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +> = 5; +uniform int shadow_blur_size< + string label = "Shadow blur size"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 15; + int step = 1; +> = 3; +uniform string notes< + string widget_type = "info"; +> = "blur size is limited to a max of 15 to ensure GPU"; + +uniform float4 shadow_color; + +uniform bool is_alpha_premultiplied; + +float4 mainImage(VertData v_in) : TARGET +{ + int shadow_blur_size_limited = max(0, min(15, shadow_blur_size)); + int shadow_blur_samples = int(pow(float(shadow_blur_size_limited * 2 + 1), 2.0)); + + float4 color = image.Sample(textureSampler, v_in.uv); + float2 shadow_uv = float2(v_in.uv.x - uv_pixel_interval.x * float(shadow_offset_x), + v_in.uv.y - uv_pixel_interval.y * float(shadow_offset_y)); + + float sampled_shadow_alpha = 0.0; + + for (int blur_x = -shadow_blur_size_limited; blur_x <= shadow_blur_size_limited; blur_x++) + { + for (int blur_y = -shadow_blur_size_limited; blur_y <= shadow_blur_size_limited; blur_y++) + { + float2 blur_uv = shadow_uv + float2(uv_pixel_interval.x * float(blur_x), uv_pixel_interval.y * float(blur_y)); + sampled_shadow_alpha += image.Sample(textureSampler, blur_uv).a / float(shadow_blur_samples); + } + } + + float4 final_shadow_color = float4(shadow_color.r, shadow_color.g, shadow_color.b, shadow_color.a * sampled_shadow_alpha); + return final_shadow_color * (1.0-color.a) + color * (is_alpha_premultiplied?color.a:1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDrunkShader { + +[Alias('Set-OBSDrunkShader','Add-OBSDrunkShader')] +param( +# Set the color_matrix of OBSDrunkShader +[Alias('color_matrix')] +[ComponentModel.DefaultBindingProperty('color_matrix')] +[Single[][]] +$ColorMatrix, +# Set the glow_percent of OBSDrunkShader +[Alias('glow_percent')] +[ComponentModel.DefaultBindingProperty('glow_percent')] +[Int32] +$GlowPercent, +# Set the blur of OBSDrunkShader +[ComponentModel.DefaultBindingProperty('blur')] +[Int32] +$Blur, +# Set the min_brightness of OBSDrunkShader +[Alias('min_brightness')] +[ComponentModel.DefaultBindingProperty('min_brightness')] +[Int32] +$MinBrightness, +# Set the max_brightness of OBSDrunkShader +[Alias('max_brightness')] +[ComponentModel.DefaultBindingProperty('max_brightness')] +[Int32] +$MaxBrightness, +# Set the pulse_speed_percent of OBSDrunkShader +[Alias('pulse_speed_percent')] +[ComponentModel.DefaultBindingProperty('pulse_speed_percent')] +[Int32] +$PulseSpeedPercent, +# Set the Apply_To_Alpha_Layer of OBSDrunkShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the glow_color of OBSDrunkShader +[Alias('glow_color')] +[ComponentModel.DefaultBindingProperty('glow_color')] +[String] +$GlowColor, +# Set the ease of OBSDrunkShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the glitch of OBSDrunkShader +[ComponentModel.DefaultBindingProperty('glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the notes of OBSDrunkShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'drunk' +$ShaderNoun = 'OBSDrunkShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Drunk shader by Charles Fettinger (https://github.com/Oncorporation) 2/2019 +//Converted to OpenGL by Q-mii & Exeldro March 11, 2022 +uniform float4x4 color_matrix; + + +uniform int glow_percent< + string label = "Glow percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 10; +uniform int blur< + string label = "Blur"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 1; +uniform int min_brightness< + string label = "Min brightness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 27; +uniform int max_brightness< + string label = "Max brightness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform int pulse_speed_percent< + string label = "Pulse speed percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform bool Apply_To_Alpha_Layer = true; +uniform float4 glow_color; +uniform bool ease; +uniform bool glitch; +uniform string notes< + string widget_type = "info"; +> ="''drunk refers to the bad blur effect of using 4 coordinates to blur. ''blur'' - the distance between the 4 copies (recommend 1-4)"; + + +// Gaussian Blur +float Gaussian(float x, float o) { + const float pivalue = 3.1415926535897932384626433832795; + return (1.0 / (o * sqrt(2.0 * pivalue))) * exp((-(x * x)) / (2 * (o * o))); +} + + +float EaseInOutCircTimer(float t,float b,float c,float d){ + t /= d/2; + if (t < 1) return -c/2 * (sqrt(1 - t*t) - 1) + b; + t -= 2; + return c/2 * (sqrt(1 - t*t) + 1) + b; +} + +float BlurStyler(float t,float b,float c,float d,bool ease) +{ + if (ease) return EaseInOutCircTimer(t,0,c,d); + return t; +} + +float4 InternalGaussianPrecalculated(float2 p_uv, float2 p_uvStep, int p_radius, + texture2d p_image, float2 p_imageTexel, + texture2d p_kernel, float2 p_kernelTexel) { + float4 l_value = image.Sample(pointClampSampler, p_uv) + * kernel.Sample(pointClampSampler, float2(0, 0)).r; + float2 l_uvoffset = float2(0, 0); + for (int k = 1; k <= p_radius; k++) { + l_uvoffset += p_uvStep; + float l_g = kernel.Sample(pointClampSampler, p_kernelTexel * k).r; + float4 l_p = image.Sample(pointClampSampler, p_uv + l_uvoffset) * l_g; + float4 l_n = image.Sample(pointClampSampler, p_uv - l_uvoffset) * l_g; + l_value += l_p + l_n; + } + return l_value; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 offsets[4]; + offsets[0] = float2(-0.05, 0.066); + offsets[1] = float2(-0.05, -0.066); + offsets[2] = float2(0.05, -0.066); + offsets[3] = float2(0.05, 0.066); + + // convert input for vector math + float blur_amount = float(blur) /100; + float glow_amount = float(glow_percent) * 0.1; + float speed = float(pulse_speed_percent) * 0.01; + float luminance_floor = float(min_brightness) * 0.01; + float luminance_ceiling = float(max_brightness) * 0.01; + + float4 color = image.Sample(textureSampler, v_in.uv); + float4 temp_color = color; + bool glitch_on = glitch; + + //circular easing variable + float t = 1 + sin(elapsed_time * speed); + float b = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + //if(color.a <= 0.0) color.rgb = float3(0.0,0.0,0.0); + float4 glitch_color = glow_color; + + for (int n = 0; n < 4; n++){ + //blur sample + b = BlurStyler(t,0,c,d,ease); + float4 ncolor = image.Sample(textureSampler, v_in.uv + (blur_amount * b) * offsets[n]) ; + + //test for rand_f color + if (glitch) { + glitch_color = float4(glow_color.rgb * rand_f,glow_color.a); + if ((color.r == rand_f) || (color.g == rand_f) || (color.b == rand_f)) + { + glitch_on = true; + } + } + + float intensity = ncolor.r * 0.299 + ncolor.g * 0.587 + ncolor.b * 0.114; + if (((intensity >= luminance_floor) && (intensity <= luminance_ceiling)) || // test luminance + ((color.r == glow_color.r) && (color.g == glow_color.g) && (color.b == glow_color.b)) || //test for chosen color + glitch_on) //test for rand color + { + //glow calc + if (ncolor.a > 0.0 || Apply_To_Alpha_Layer == false) + { + ncolor.a = clamp(ncolor.a * glow_amount, 0.0, 1.0); + //temp_color = max(temp_color,ncolor) * glow_color ;//* ((1-ncolor.a) + color * ncolor.a); + //temp_color += (ncolor * float4(glow_color.rbg, glow_amount)); + + // use temp_color as floor, add glow, use highest alpha of blur pixels, then multiply by glow color + // max is used to simulate addition of vector texture color + temp_color = float4(max(temp_color.rgb, ncolor.rgb * (glow_amount * (b / 2))), // color effected by glow over time + max(temp_color.a, (glow_amount * (b / 2)))) // alpha affected by glow over time + * (glitch_color * (b / 2)); // glow color affected by glow over time + } + } + } + // grab lighter color + return max(color,temp_color); +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSDynamicMaskShader { + +[Alias('Set-OBSDynamicMaskShader','Add-OBSDynamicMaskShader')] +param( +# Set the input_source of OBSDynamicMaskShader +[Alias('input_source')] +[ComponentModel.DefaultBindingProperty('input_source')] +[String] +$InputSource, +# Set the red_base_value of OBSDynamicMaskShader +[Alias('red_base_value')] +[ComponentModel.DefaultBindingProperty('red_base_value')] +[Single] +$RedBaseValue, +# Set the red_red_input_value of OBSDynamicMaskShader +[Alias('red_red_input_value')] +[ComponentModel.DefaultBindingProperty('red_red_input_value')] +[Single] +$RedRedInputValue, +# Set the red_green_input_value of OBSDynamicMaskShader +[Alias('red_green_input_value')] +[ComponentModel.DefaultBindingProperty('red_green_input_value')] +[Single] +$RedGreenInputValue, +# Set the red_blue_input_value of OBSDynamicMaskShader +[Alias('red_blue_input_value')] +[ComponentModel.DefaultBindingProperty('red_blue_input_value')] +[Single] +$RedBlueInputValue, +# Set the red_alpha_input_value of OBSDynamicMaskShader +[Alias('red_alpha_input_value')] +[ComponentModel.DefaultBindingProperty('red_alpha_input_value')] +[Single] +$RedAlphaInputValue, +# Set the red_multiplier of OBSDynamicMaskShader +[Alias('red_multiplier')] +[ComponentModel.DefaultBindingProperty('red_multiplier')] +[Single] +$RedMultiplier, +# Set the green_base_value of OBSDynamicMaskShader +[Alias('green_base_value')] +[ComponentModel.DefaultBindingProperty('green_base_value')] +[Single] +$GreenBaseValue, +# Set the green_red_input_value of OBSDynamicMaskShader +[Alias('green_red_input_value')] +[ComponentModel.DefaultBindingProperty('green_red_input_value')] +[Single] +$GreenRedInputValue, +# Set the green_green_input_value of OBSDynamicMaskShader +[Alias('green_green_input_value')] +[ComponentModel.DefaultBindingProperty('green_green_input_value')] +[Single] +$GreenGreenInputValue, +# Set the green_blue_input_value of OBSDynamicMaskShader +[Alias('green_blue_input_value')] +[ComponentModel.DefaultBindingProperty('green_blue_input_value')] +[Single] +$GreenBlueInputValue, +# Set the green_alpha_input_value of OBSDynamicMaskShader +[Alias('green_alpha_input_value')] +[ComponentModel.DefaultBindingProperty('green_alpha_input_value')] +[Single] +$GreenAlphaInputValue, +# Set the green_multiplier of OBSDynamicMaskShader +[Alias('green_multiplier')] +[ComponentModel.DefaultBindingProperty('green_multiplier')] +[Single] +$GreenMultiplier, +# Set the blue_base_value of OBSDynamicMaskShader +[Alias('blue_base_value')] +[ComponentModel.DefaultBindingProperty('blue_base_value')] +[Single] +$BlueBaseValue, +# Set the blue_red_input_value of OBSDynamicMaskShader +[Alias('blue_red_input_value')] +[ComponentModel.DefaultBindingProperty('blue_red_input_value')] +[Single] +$BlueRedInputValue, +# Set the blue_green_input_value of OBSDynamicMaskShader +[Alias('blue_green_input_value')] +[ComponentModel.DefaultBindingProperty('blue_green_input_value')] +[Single] +$BlueGreenInputValue, +# Set the blue_blue_input_value of OBSDynamicMaskShader +[Alias('blue_blue_input_value')] +[ComponentModel.DefaultBindingProperty('blue_blue_input_value')] +[Single] +$BlueBlueInputValue, +# Set the blue_alpha_input_value of OBSDynamicMaskShader +[Alias('blue_alpha_input_value')] +[ComponentModel.DefaultBindingProperty('blue_alpha_input_value')] +[Single] +$BlueAlphaInputValue, +# Set the blue_multiplier of OBSDynamicMaskShader +[Alias('blue_multiplier')] +[ComponentModel.DefaultBindingProperty('blue_multiplier')] +[Single] +$BlueMultiplier, +# Set the alpha_base_value of OBSDynamicMaskShader +[Alias('alpha_base_value')] +[ComponentModel.DefaultBindingProperty('alpha_base_value')] +[Single] +$AlphaBaseValue, +# Set the alpha_red_input_value of OBSDynamicMaskShader +[Alias('alpha_red_input_value')] +[ComponentModel.DefaultBindingProperty('alpha_red_input_value')] +[Single] +$AlphaRedInputValue, +# Set the alpha_green_input_value of OBSDynamicMaskShader +[Alias('alpha_green_input_value')] +[ComponentModel.DefaultBindingProperty('alpha_green_input_value')] +[Single] +$AlphaGreenInputValue, +# Set the alpha_blue_input_value of OBSDynamicMaskShader +[Alias('alpha_blue_input_value')] +[ComponentModel.DefaultBindingProperty('alpha_blue_input_value')] +[Single] +$AlphaBlueInputValue, +# Set the alpha_alpha_input_value of OBSDynamicMaskShader +[Alias('alpha_alpha_input_value')] +[ComponentModel.DefaultBindingProperty('alpha_alpha_input_value')] +[Single] +$AlphaAlphaInputValue, +# Set the alpha_multiplier of OBSDynamicMaskShader +[Alias('alpha_multiplier')] +[ComponentModel.DefaultBindingProperty('alpha_multiplier')] +[Single] +$AlphaMultiplier, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'dynamic-mask' +$ShaderNoun = 'OBSDynamicMaskShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d input_source< + string label = "Input Source"; +>; + +uniform float red_base_value< + string label = "Base Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; +uniform float red_red_input_value< + string label = "Red Input Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float red_green_input_value< + string label = "Green Input Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float red_blue_input_value< + string label = "Blue Input Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float red_alpha_input_value< + string label = "Alpha Input Value"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float red_multiplier< + string label = "Multiplier"; + string widget_type = "slider"; + string group = "Red Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; + +uniform float green_base_value< + string label = "Base Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; +uniform float green_red_input_value< + string label = "Red Input Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float green_green_input_value< + string label = "Green Input Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float green_blue_input_value< + string label = "Blue Input Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float green_alpha_input_value< + string label = "Alpha Input Value"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float green_multiplier< + string label = "Multiplier"; + string widget_type = "slider"; + string group = "Green Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; + +uniform float blue_base_value< + string label = "Base Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; +uniform float blue_red_input_value< + string label = "Red Input Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float blue_green_input_value< + string label = "Green Input Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float blue_blue_input_value< + string label = "Blue Input Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float blue_alpha_input_value< + string label = "Alpha Input Value"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float blue_multiplier< + string label = "Multiplier"; + string widget_type = "slider"; + string group = "Blue Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; + +uniform float alpha_base_value< + string label = "Base Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; +uniform float alpha_red_input_value< + string label = "Red Input Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float alpha_green_input_value< + string label = "Green Input Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float alpha_blue_input_value< + string label = "Blue Input Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float alpha_alpha_input_value< + string label = "Alpha Input Value"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float alpha_multiplier< + string label = "Multiplier"; + string widget_type = "slider"; + string group = "Alpha Channel"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 1.0; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 input_color = input_source.Sample(textureSampler, v_in.uv); + float4 mask; + mask.r = (red_base_value + red_red_input_value * input_color.r + red_green_input_value * input_color.g + red_blue_input_value * input_color.b + red_alpha_input_value * input_color.a) * red_multiplier; + mask.g = (green_base_value + green_red_input_value * input_color.r + green_green_input_value * input_color.g + green_blue_input_value * input_color.b + green_alpha_input_value * input_color.a) * green_multiplier; + mask.b = (blue_base_value + blue_red_input_value * input_color.r + blue_green_input_value * input_color.g + blue_blue_input_value * input_color.b + blue_alpha_input_value * input_color.a) * blue_multiplier; + mask.a = (alpha_base_value + alpha_red_input_value * input_color.r + alpha_green_input_value * input_color.g + alpha_blue_input_value * input_color.b + alpha_alpha_input_value * input_color.a) * alpha_multiplier; + float4 base = image.Sample(textureSampler, v_in.uv); + return base * mask; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSEdgeDetectionShader { + +[Alias('Set-OBSEdgeDetectionShader','Add-OBSEdgeDetectionShader')] +param( +# Set the sensitivity of OBSEdgeDetectionShader +[ComponentModel.DefaultBindingProperty('sensitivity')] +[Single] +$Sensitivity, +# Set the invert_edge of OBSEdgeDetectionShader +[Alias('invert_edge')] +[ComponentModel.DefaultBindingProperty('invert_edge')] +[Management.Automation.SwitchParameter] +$InvertEdge, +# Set the edge_color of OBSEdgeDetectionShader +[Alias('edge_color')] +[ComponentModel.DefaultBindingProperty('edge_color')] +[String] +$EdgeColor, +# Set the edge_multiply of OBSEdgeDetectionShader +[Alias('edge_multiply')] +[ComponentModel.DefaultBindingProperty('edge_multiply')] +[Management.Automation.SwitchParameter] +$EdgeMultiply, +# Set the non_edge_color of OBSEdgeDetectionShader +[Alias('non_edge_color')] +[ComponentModel.DefaultBindingProperty('non_edge_color')] +[String] +$NonEdgeColor, +# Set the non_edge_multiply of OBSEdgeDetectionShader +[Alias('non_edge_multiply')] +[ComponentModel.DefaultBindingProperty('non_edge_multiply')] +[Management.Automation.SwitchParameter] +$NonEdgeMultiply, +# Set the alpha_channel of OBSEdgeDetectionShader +[Alias('alpha_channel')] +[ComponentModel.DefaultBindingProperty('alpha_channel')] +[Management.Automation.SwitchParameter] +$AlphaChannel, +# Set the alpha_level of OBSEdgeDetectionShader +[Alias('alpha_level')] +[ComponentModel.DefaultBindingProperty('alpha_level')] +[Single] +$AlphaLevel, +# Set the alpha_invert of OBSEdgeDetectionShader +[Alias('alpha_invert')] +[ComponentModel.DefaultBindingProperty('alpha_invert')] +[Management.Automation.SwitchParameter] +$AlphaInvert, +# Set the rand_f of OBSEdgeDetectionShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the notes of OBSEdgeDetectionShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'edge_detection' +$ShaderNoun = 'OBSEdgeDetectionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Edge Detection for OBS Studio +// originally from Andersama (https://github.com/Andersama) +// Modified and improved my Charles Fettinger (https://github.com/Oncorporation) 1/2019 +//Converted to OpenGL by Q-mii & Exeldro March 8, 2022 +uniform float sensitivity< + string label = "Sensitivity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.05; +uniform bool invert_edge; +uniform float4 edge_color = {1.0,1.0,1.0,1.0}; +uniform bool edge_multiply; +uniform float4 non_edge_color = {0.0,0.0,0.0,0.0}; +uniform bool non_edge_multiply; +uniform bool alpha_channel; +uniform float alpha_level< + string label = "Alpha level"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 100.0; +uniform bool alpha_invert; +uniform float rand_f; + +uniform string notes< + string widget_type = "info"; +> = "''sensitivity'' - 0.01 is max and will create the most edges. Increasing this value decreases the number of edges detected. ''edge non edge color'' - the color to recolor vs the original image. ''edge or non edge multiply'' - multiplies the color against the original color giving it a tint instead of replacing the color. White represents no tint. ''invert edge'' - flips the sensativity and is great for testing and fine tuning. ''alpha channel'' - use an alpha channel to replace original color with transparency. ''alpha_level'' - transparency amount modifier where 1.0 = base luminance (recommend 0.00 - 2.00). ''alpha_invert'' - flip what is transparent from darks (default) to lights"; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + + float s = 3; + float hstep = uv_pixel_interval.x; + float vstep = uv_pixel_interval.y; + + float offsetx = (hstep * s) / 2.0; + float offsety = (vstep * s) / 2.0; + + float4 lum = float4(0.30, 0.59, 0.11, 1 ); + float samples[9]; + + int index = 0; + for(int i = 0; i < s; i++){ + for(int j = 0; j < s; j++){ + samples[index] = dot(image.Sample(textureSampler, float2(v_in.uv.x + (i * hstep) - offsetx, v_in.uv.y + (j * vstep) - offsety )), lum); + index++; + } + } + + float vert = samples[2] + samples[8] + (2 * samples[5]) - samples[0] - (2 * samples[3]) - samples[6]; + float hori = samples[6] + (2 * samples[7]) + samples[8] - samples[0] - (2 * samples[1]) - samples[2]; + float4 col; + + float o = ((vert * vert) + (hori * hori)); + bool isEdge = o > sensitivity; + if(invert_edge){ + isEdge = !isEdge; + } + if(isEdge) { + col = edge_color; + if(edge_multiply){ + col *= c; + } + } else { + col = non_edge_color; + if(non_edge_multiply){ + col *= c; + } + } + + if (alpha_invert) { + lum = 1.0 - lum; + } + + if(alpha_channel){ + if (edge_multiply && isEdge) { + return clamp(lerp(c, col, alpha_level), 0.0, 1.0); + } + else { + // use max instead of multiply + return clamp(lerp(c, float4(max(c.r, col.r), max(c.g, col.g), max(c.b, col.b), 1.0), alpha_level), 0.0, 1.0); + } + } else { + // col.a = col.a * alpha_level; + return col; + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSEmbersShader { + +[Alias('Set-OBSEmbersShader','Add-OBSEmbersShader')] +param( +# Set the ViewProj of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSEmbersShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSEmbersShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSEmbersShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_size of OBSEmbersShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the uv_pixel_interval of OBSEmbersShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSEmbersShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSEmbersShader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSEmbersShader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSEmbersShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the notes of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the Animation_Speed of OBSEmbersShader +[Alias('Animation_Speed')] +[ComponentModel.DefaultBindingProperty('Animation_Speed')] +[Single] +$AnimationSpeed, +# Set the Movement_Direction_Horizontal of OBSEmbersShader +[Alias('Movement_Direction_Horizontal')] +[ComponentModel.DefaultBindingProperty('Movement_Direction_Horizontal')] +[Single] +$MovementDirectionHorizontal, +# Set the Movement_Direction_Vertical of OBSEmbersShader +[Alias('Movement_Direction_Vertical')] +[ComponentModel.DefaultBindingProperty('Movement_Direction_Vertical')] +[Single] +$MovementDirectionVertical, +# Set the Movement_Speed_Percent of OBSEmbersShader +[Alias('Movement_Speed_Percent')] +[ComponentModel.DefaultBindingProperty('Movement_Speed_Percent')] +[Int32] +$MovementSpeedPercent, +# Set the Layers_Count of OBSEmbersShader +[Alias('Layers_Count')] +[ComponentModel.DefaultBindingProperty('Layers_Count')] +[Int32] +$LayersCount, +# Set the lumaMin of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMinSmooth of OBSEmbersShader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the Alpha_Percentage of OBSEmbersShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Apply_To_Alpha_Layer of OBSEmbersShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'embers' +$ShaderNoun = 'OBSEmbersShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Embers effect by Charles Fettinger for obs-shaderfilter plugin 8/2020 v.1 +// https://github.com/Oncorporation/obs-shaderfilter +// https://www.shadertoy.com/view/wl2Gzc - coverted from and updated + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_size; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; +uniform string notes< + string widget_type = "info"; +> = "luma is applied with Apply to Alpha Layer. Movement Speed and Direction can be negatives"; + +#ifndef OPENGL +#define mat2 float2x2 +#define fract frac +#define mix lerp +#endif + +sampler_state textureSampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +uniform float Animation_Speed < + string label = "Animation Speed"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; + float scale = 1.; +> = 1.5; + +uniform float Movement_Direction_Horizontal< + string label = "Movement Direction Horizontal"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 1.0; +> = 5.0; +uniform float Movement_Direction_Vertical< + string label = "Movement Direction Vertical"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 1.0; +> = 10.0; + +uniform int Movement_Speed_Percent< + string label = "Movement Speed Percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 5; + +uniform int Layers_Count < + string label = "Layers"; + string widget_type = "slider"; + int minimum = 1.0; + int maximum = 100.0; + int step = 1; +> = 15; +/* ps start +*/ + + +uniform float lumaMin< + string label = "Luma Min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.01; +uniform float lumaMinSmooth< + string label = "Luma Min Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.01; +uniform float Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; +uniform bool Apply_To_Alpha_Layer = true; + +#define PI 3.1415927 +#define TWO_PI 6.283185 + +#define PARTICLE_SIZE 0.009 + +#define PARTICLE_SCALE float2(0.5, 1.6) +#define PARTICLE_SCALE_VAR float2(0.25, 0.2) + +#define PARTICLE_BLOOM_SCALE float2(0.5, 0.8) +#define PARTICLE_BLOOM_SCALE_VAR float2(0.3, 0.1) + +#define SPARK_COLOR float3(1.0, 0.4, 0.05) * 1.5 +#define BLOOM_COLOR float3(1.0, 0.4, 0.05) * 0.8 +#define SMOKE_COLOR float3(1.0, 0.43, 0.1) * 0.8 + +#define SIZE_MOD 1.05 +#define ALPHA_MOD 0.9 +#define Movement_Direction float2(Movement_Direction_Horizontal, Movement_Direction_Vertical) +#define Movement_Speed Movement_Speed_Percent * 0.01 +#define UV float2(fragCoord.xy / uv_size) + +float hash1_2(float2 x) +{ + return fract(sin(dot(x, float2(52.127, 61.2871))) * 521.582); +} + +float2 hash2_2(float2 x) +{ + mat2 m = mat2(20.52, 24.1994, 70.291, 80.171); + float2 y = mul(x, m); + return fract(sin(y) * 492.194); +} + +//Simple interpolated noise +float2 noise2_2(float2 uv) +{ + //float2 f = fract(uv); + float2 f = smoothstep(0.0, 1.0, fract(uv)); + + float2 uv00 = floor(uv); + float2 uv01 = uv00 + float2(0, 1); + float2 uv10 = uv00 + float2(1, 0); + float2 uv11 = uv00 + 1.0; + float2 v00 = hash2_2(uv00); + float2 v01 = hash2_2(uv01); + float2 v10 = hash2_2(uv10); + float2 v11 = hash2_2(uv11); + + float2 v0 = mix(v00, v01, f.y); + float2 v1 = mix(v10, v11, f.y); + float2 v = mix(v0, v1, f.x); + + return v; +} + +//Simple interpolated noise +float noise1_2(float2 uv) +{ + float2 f = fract(uv); + + float2 uv00 = floor(uv); + float2 uv01 = uv00 + float2(0, 1); + float2 uv10 = uv00 + float2(1, 0); + float2 uv11 = uv00 + 1.0; + + float v00 = hash1_2(uv00); + float v01 = hash1_2(uv01); + float v10 = hash1_2(uv10); + float v11 = hash1_2(uv11); + + float v0 = mix(v00, v01, f.y); + float v1 = mix(v10, v11, f.y); + float v = mix(v0, v1, f.x); + + return v; +} + +float layeredNoise1_2(float2 uv, float sizeMod, float alphaMod, int layers, float animation) +{ + float noise = 0.0; + float alpha = 1.0; + float size = 1.0; + float2 offset; + for (int i = 0; i < layers; i++) + { + offset += hash2_2(float2(alpha, size)) * 10.0; + + //Adding noise with movement + noise += noise1_2(uv * size + elapsed_time * animation * 8.0 * Movement_Direction * Movement_Speed + offset) * alpha; + alpha *= alphaMod; + size *= sizeMod; + } + + noise *= (1.0 - alphaMod) / (1.0 - pow(alphaMod, float(layers))); + return noise; +} + +//Rotates point around 0,0 +float2 rotate(float2 vpoint, float deg) +{ + float s = sin(deg); + float c = cos(deg); + mat2 m = mat2(s, c, -c, s); + return mul(vpoint, m); +} + +//Cell center from point on the grid +float2 voronoiPointFromRoot(float2 root, float deg) +{ + float2 vpoint = hash2_2(root) - 0.5; + float s = sin(deg); + float c = cos(deg); + mat2 m = mat2(s, c, -c, s); + vpoint = mul(vpoint, m) * 0.66; + vpoint += root + 0.5; + return vpoint; +} + +//Voronoi cell point rotation degrees +float degFromRootUV(in float2 uv) +{ + return elapsed_time * Animation_Speed * (hash1_2(uv) - 0.5) * 2.0; +} + +float2 randomAround2_2(in float2 vpoint, in float2 range, in float2 uv) +{ + return vpoint + (hash2_2(uv) - 0.5) * range; +} + + +float3 fireParticles(in float2 uv, in float2 originalUV) +{ + float3 particles = float3(0.0, 0.0, 0.0); + float2 rootUV = floor(uv); + float deg = degFromRootUV(rootUV); + float2 pointUV = voronoiPointFromRoot(rootUV, deg); + float dist = 2.0; + float distBloom = 0.0; + + //UV manipulation for the faster particle movement + float2 tempUV = uv + (noise2_2(uv * 2.0) - 0.5) * 0.1; + tempUV += -(noise2_2(uv * 3.0 + elapsed_time) - 0.5) * 0.07; + + //Sparks sdf + dist = length(rotate(tempUV - pointUV, 0.7) * randomAround2_2(PARTICLE_SCALE, PARTICLE_SCALE_VAR, rootUV)); + + //Bloom sdf + distBloom = length(rotate(tempUV - pointUV, 0.7) * randomAround2_2(PARTICLE_BLOOM_SCALE, PARTICLE_BLOOM_SCALE_VAR, rootUV)); + + //Add sparks + particles += (1.0 - smoothstep(PARTICLE_SIZE * 0.6, PARTICLE_SIZE * 3.0, dist)) * SPARK_COLOR; + + //Add bloom + particles += pow((1.0 - smoothstep(0.0, PARTICLE_SIZE * 6.0, distBloom)) * 1.0, 3.0) * BLOOM_COLOR; + + //Upper disappear curve randomization + float border = (hash1_2(rootUV) - 0.5) * 2.0; + float disappear = 1.0 - smoothstep(border, border + 0.5, originalUV.y); + + //Lower appear curve randomization + border = (hash1_2(rootUV + 0.214) - 1.8) * 0.7; + float appear = smoothstep(border, border + 0.4, originalUV.y); + + return particles * disappear * appear; +} + + +//Layering particles to imitate 3D view +float3 layeredParticles(in float2 uv, in float sizeMod, in float alphaMod, in int layers, in float smoke) +{ + float3 particles = float3(0.0, 0.0, 0.0); + float size = 1.0; + float alpha = 1.0; + float2 offset = float2(0.0, 0.0); + float2 noiseOffset; + float2 bokehUV; + + for (int i = 0; i < layers; i++) + { + //Particle noise movement + noiseOffset = (noise2_2(uv * size * 2.0 + 0.5) - 0.5) * 0.15; + + //UV with applied movement + bokehUV = (uv * size + elapsed_time * Movement_Direction * Movement_Speed) + offset + noiseOffset; + + //Adding particles if there is more smoke, remove smaller particles + particles += fireParticles(bokehUV, uv) * alpha * (1.0 - smoothstep(0.0, 1.0, smoke) * (float(i) / float(layers))); + + //Moving uv origin to avoid generating the same particles + offset += hash2_2(float2(alpha, alpha)) * 10.0; + + alpha *= alphaMod; + size *= sizeMod; + } + + return particles; +} + + +void mainImage(out float4 fragColor, in float2 fragCoord) +{ + float2 uv = (2.0 * fragCoord - uv_size.xy) / uv_size.x; + float vignette = 1.0 - smoothstep(0.4, 1.4, length(uv + float2(0.0, 0.3))); + + uv *= 1.8; + float alpha = clamp(Alpha_Percentage * .01, 0, 1.0); + + float smokeIntensity = layeredNoise1_2(uv * 10.0 + elapsed_time * 4.0 * Movement_Direction * Movement_Speed, 1.7, 0.7, 6, 0.2); + smokeIntensity *= pow(1.0 - smoothstep(-1.0, 1.6, uv.y), 2.0); + float3 smoke = smokeIntensity * SMOKE_COLOR * 0.8 * vignette; + + //Cutting holes in smoke + smoke *= pow(layeredNoise1_2(uv * 4.0 + elapsed_time * 0.5 * Movement_Direction * Movement_Speed, 1.8, 0.5, 3, 0.2), + 2.0) * 1.5; + + float3 particles = layeredParticles(uv, SIZE_MOD, ALPHA_MOD, Layers_Count, smokeIntensity); + + float4 col = float4(particles + smoke + SMOKE_COLOR * 0.02, alpha); + col.rgb *= vignette; + col.rgb = smoothstep(-0.08, 1.0, col.rgb); + + if (Apply_To_Alpha_Layer) + { + float4 original_color = image.Sample(textureSampler, UV); + + float luma = dot(col.rgb, float3(0.299, 0.587, 0.114)); + float luma_min = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luma); + col.a = clamp(luma_min, 0.0, 1.0); + + col.rgb = lerp(original_color.rgb, col.rgb, alpha); //apply alpha slider + col = lerp(original_color, col, col.a); //remove black background color + } + + fragColor = col; +} + +/*ps end*/ + +struct VertFragData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertFragData VSDefault(VertFragData vtx) { + vtx.pos = mul(float4(vtx.pos.xyz, 1.0), ViewProj); + return vtx; +} + +float4 PSDefault(VertFragData vtx) : TARGET { + float4 col = float4(1., 1., 1., 1.); + mainImage(col, vtx.uv * uv_size); + return col; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vtx); + pixel_shader = PSDefault(vtx); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSEmbossColorShader { + +[Alias('Set-OBSEmbossColorShader','Add-OBSEmbossColorShader')] +param( +# Set the Angle_Steps of OBSEmbossColorShader +[Alias('Angle_Steps')] +[ComponentModel.DefaultBindingProperty('Angle_Steps')] +[Int32] +$AngleSteps, +# Set the Radius_Steps of OBSEmbossColorShader +[Alias('Radius_Steps')] +[ComponentModel.DefaultBindingProperty('Radius_Steps')] +[Int32] +$RadiusSteps, +# Set the ampFactor of OBSEmbossColorShader +[ComponentModel.DefaultBindingProperty('ampFactor')] +[Single] +$AmpFactor, +# Set the Up_Down_Percent of OBSEmbossColorShader +[Alias('Up_Down_Percent')] +[ComponentModel.DefaultBindingProperty('Up_Down_Percent')] +[Int32] +$UpDownPercent, +# Set the Apply_To_Alpha_Layer of OBSEmbossColorShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the notes of OBSEmbossColorShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'emboss_color' +$ShaderNoun = 'OBSEmbossColorShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Color Emboss shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int Angle_Steps< + string label = "Angle Steps"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 9; // +uniform int Radius_Steps< + string label = "Radius Steps"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 20; + int step = 1; +> = 4; // +uniform float ampFactor< + string label = "amp Factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 12.0; +uniform int Up_Down_Percent< + string label = "Up Down Percent"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +> = 0; +uniform bool Apply_To_Alpha_Layer = true; +uniform string notes< + string widget_type = "info"; +> = "Steps limited in range from 0 to 20. Edit shader to remove limits at your own risk."; + +float4 mainImage(VertData v_in) : TARGET +{ + float radiusSteps = clamp(Radius_Steps, 0, 20); + float angleSteps = clamp(Angle_Steps, 1, 20); + float PI = 3.1415926535897932384626433832795;//acos(-1); + int totalSteps = int(radiusSteps * angleSteps); + float minRadius = (1 * uv_pixel_interval.y); + float maxRadius = (6 * uv_pixel_interval.y); + + float angleDelta = ((2 * PI) / angleSteps); + float radiusDelta = ((maxRadius - minRadius) / radiusSteps); + float embossAngle = 0.25 * PI; + + float4 c0 = image.Sample(textureSampler, v_in.uv); + float4 origColor = c0; + float4 accumulatedColor = float4(0,0,0,0); + + if (c0.a > 0.0 || Apply_To_Alpha_Layer == false) + { + for (int radiusStep = 0; radiusStep < radiusSteps; radiusStep++) { + float radius = minRadius + radiusStep * radiusDelta; + + for (float angle = 0; angle < (2 * PI); angle += angleDelta) { + float2 currentCoord; + + float xDiff = radius * cos(angle); + float yDiff = radius * sin(angle); + + currentCoord = v_in.uv + float2(xDiff, yDiff); + float4 currentColor = image.Sample(textureSampler, currentCoord); + float4 colorDiff = abs(c0 - currentColor); + float currentFraction = ((radiusSteps + 1 - radiusStep)) / (radiusSteps + 1); + accumulatedColor += currentFraction * colorDiff / totalSteps * sign(angle - PI);; + + } + } + accumulatedColor *= ampFactor; + + c0 = lerp(c0 + accumulatedColor, c0 - accumulatedColor, (Up_Down_Percent * 0.01)); + } + //return c0 + accumulatedColor; // down; + //return c0 - accumulatedColor; // up + return c0; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSEmbossShader { + +[Alias('Set-OBSEmbossShader','Add-OBSEmbossShader')] +param( +# Set the Use_Color of OBSEmbossShader +[Alias('Use_Color')] +[ComponentModel.DefaultBindingProperty('Use_Color')] +[Management.Automation.SwitchParameter] +$UseColor, +# Set the Apply_To_Alpha_Layer of OBSEmbossShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'emboss' +$ShaderNoun = 'OBSEmbossShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Spotlight By Charles Fettinger (https://github.com/Oncorporation) 4/2019 +//Converted to OpenGL by Q-mii & Exeldro March 8, 2022 +uniform bool Use_Color; +uniform bool Apply_To_Alpha_Layer = true; + +float4 mainImage(VertData v_in) : TARGET +{ + + float dx = 1 / uv_size.x; + float dy = 1 / uv_size.y; + + float4 c0 = image.Sample(textureSampler, v_in.uv); + if (c0.a > 0.0 || Apply_To_Alpha_Layer == false) + { + float4 c1 = image.Sample(textureSampler, v_in.uv + float2(-dx, -dy)); + float4 c2 = image.Sample(textureSampler, v_in.uv + float2(0, -dy)); + float4 c4 = image.Sample(textureSampler, v_in.uv + float2(-dx, 0)); + float4 c6 = image.Sample(textureSampler, v_in.uv + float2(dx, 0)); + float4 c8 = image.Sample(textureSampler, v_in.uv + float2(0, dy)); + float4 c9 = image.Sample(textureSampler, v_in.uv + float2(dx, dy)); + + c0 = (-c1 - c2 - c4 + c6 + c8 + c9); + float c = (c0.r + c0.g + c0.b) / 3 + 0.5; + c0 = float4(c,c,c,c); + + if (Use_Color) + { + float4 rgba = image.Sample(textureSampler, v_in.uv); + return (0.5 * rgba) + c0; + } + } + return c0; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSExeldroBentCameraShader { + +[Alias('Set-OBSExeldroBentCameraShader','Add-OBSExeldroBentCameraShader')] +param( +# Set the left_side_width of OBSExeldroBentCameraShader +[Alias('left_side_width')] +[ComponentModel.DefaultBindingProperty('left_side_width')] +[Single] +$LeftSideWidth, +# Set the left_side_size of OBSExeldroBentCameraShader +[Alias('left_side_size')] +[ComponentModel.DefaultBindingProperty('left_side_size')] +[Single] +$LeftSideSize, +# Set the left_side_shadow of OBSExeldroBentCameraShader +[Alias('left_side_shadow')] +[ComponentModel.DefaultBindingProperty('left_side_shadow')] +[Single] +$LeftSideShadow, +# Set the left_flip_width of OBSExeldroBentCameraShader +[Alias('left_flip_width')] +[ComponentModel.DefaultBindingProperty('left_flip_width')] +[Single] +$LeftFlipWidth, +# Set the left_flip_shadow of OBSExeldroBentCameraShader +[Alias('left_flip_shadow')] +[ComponentModel.DefaultBindingProperty('left_flip_shadow')] +[Single] +$LeftFlipShadow, +# Set the right_side_width of OBSExeldroBentCameraShader +[Alias('right_side_width')] +[ComponentModel.DefaultBindingProperty('right_side_width')] +[Single] +$RightSideWidth, +# Set the right_side_size of OBSExeldroBentCameraShader +[Alias('right_side_size')] +[ComponentModel.DefaultBindingProperty('right_side_size')] +[Single] +$RightSideSize, +# Set the right_side_shadow of OBSExeldroBentCameraShader +[Alias('right_side_shadow')] +[ComponentModel.DefaultBindingProperty('right_side_shadow')] +[Single] +$RightSideShadow, +# Set the right_flip_width of OBSExeldroBentCameraShader +[Alias('right_flip_width')] +[ComponentModel.DefaultBindingProperty('right_flip_width')] +[Single] +$RightFlipWidth, +# Set the right_flip_shadow of OBSExeldroBentCameraShader +[Alias('right_flip_shadow')] +[ComponentModel.DefaultBindingProperty('right_flip_shadow')] +[Single] +$RightFlipShadow, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'exeldro-bent-camera' +$ShaderNoun = 'OBSExeldroBentCameraShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float left_side_width< + string label = "Left side width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; +uniform float left_side_size< + string label = "Left side size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform float left_side_shadow< + string label = "Left side shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.8; +uniform float left_flip_width< + string label = "Left flip width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.05; +uniform float left_flip_shadow< + string label = "Left flip shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; + +uniform float right_side_width< + string label = "Right side width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; +uniform float right_side_size< + string label = "Right side size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform float right_side_shadow< + string label = "Right side shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.8; +uniform float right_flip_width< + string label = "Right flip width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.05; +uniform float right_flip_shadow< + string label = "Right flip shadow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos=v_in.uv; + float shadow = 1.0; + if(pos.x < left_side_width){ + pos.y -= 0.5; + pos.y /= left_side_size; + pos.y += 0.5; + pos.x -= left_side_width + left_flip_width / 2.0; + pos.x /= left_side_size; + pos.x += left_side_width + left_flip_width / 2.0; + shadow = left_side_shadow; + }else if(pos.x < left_side_width + left_flip_width){ + float factor = 1.0 - ((left_side_width + left_flip_width)-pos.x)/left_flip_width*(1.0 - left_side_size); + pos.y -= 0.5; + pos.y /= factor; + pos.y += 0.5; + pos.x -= left_side_width + left_flip_width; + pos.x /= factor; + pos.x += left_side_width + left_flip_width; + shadow = left_flip_shadow; + } + + if(1.0 - pos.x < right_side_width){ + pos.y -= 0.5; + pos.y /= right_side_size; + pos.y += 0.5; + pos.x -= 1.0 - (right_side_width + right_flip_width / 2.0); + pos.x /= right_side_size; + pos.x += 1.0 - (right_side_width + right_flip_width / 2.0); + shadow = right_side_shadow; + }else if(1.0 - pos.x < right_side_width + right_flip_width){ + float factor = 1.0 - ((right_side_width + right_flip_width) - (1.0 - pos.x))/right_flip_width*(1.0 - right_side_size); + pos.y -= 0.5; + pos.y /= factor; + pos.y += 0.5; + pos.x -= 1.0 - (right_side_width + right_flip_width); + pos.x /= factor; + pos.x += 1.0 -(right_side_width + right_flip_width); + shadow = right_flip_shadow; + } + float4 p_color = image.Sample(textureSampler, pos); + p_color.rgb *= shadow; + return p_color; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFadeTransitionShader { + +[Alias('Set-OBSFadeTransitionShader','Add-OBSFadeTransitionShader')] +param( +# Set the image_a of OBSFadeTransitionShader +[Alias('image_a')] +[ComponentModel.DefaultBindingProperty('image_a')] +[String] +$ImageA, +# Set the image_b of OBSFadeTransitionShader +[Alias('image_b')] +[ComponentModel.DefaultBindingProperty('image_b')] +[String] +$ImageB, +# Set the transition_time of OBSFadeTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBSFadeTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fade-transition' +$ShaderNoun = 'OBSFadeTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d image_a; +uniform texture2d image_b; +uniform float transition_time< + string label = "Transittion Time"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform bool convert_linear = true; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 a_val = image_a.Sample(textureSampler, v_in.uv); + float4 b_val = image_b.Sample(textureSampler, v_in.uv); + float4 rgba = lerp(a_val, b_val, transition_time); + if(convert_linear) + rgba.rgb = srgb_nonlinear_to_linear(rgba.rgb); + return rgba; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFillColorGradientShader { + +[Alias('Set-OBSFillColorGradientShader','Add-OBSFillColorGradientShader')] +param( +# Set the Fill of OBSFillColorGradientShader +[ComponentModel.DefaultBindingProperty('Fill')] +[Single] +$Fill, +# Set the Gradient_Width of OBSFillColorGradientShader +[Alias('Gradient_Width')] +[ComponentModel.DefaultBindingProperty('Gradient_Width')] +[Single] +$GradientWidth, +# Set the Gradient_Offset of OBSFillColorGradientShader +[Alias('Gradient_Offset')] +[ComponentModel.DefaultBindingProperty('Gradient_Offset')] +[Single] +$GradientOffset, +# Set the Fill_Direction of OBSFillColorGradientShader +[Alias('Fill_Direction')] +[ComponentModel.DefaultBindingProperty('Fill_Direction')] +[Int32] +$FillDirection, +# Set the Fill_Color of OBSFillColorGradientShader +[Alias('Fill_Color')] +[ComponentModel.DefaultBindingProperty('Fill_Color')] +[String] +$FillColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fill_color_gradient' +$ShaderNoun = 'OBSFillColorGradientShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float Fill< + string label = "Fill"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 1; + float step = 0.005; +> = 0.500; + +uniform float Gradient_Width< + string label = "Gradient Width"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 0.15; // Adjust the maximum value as needed + float step = 0.01; +> = 0.05; + +uniform float Gradient_Offset< + string label = "Gradient Offset"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 0.100; // Adjust the maximum value as needed + float step = 0.005; +> = 0.00; + +uniform int Fill_Direction< + string label = "Fill from:"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Left"; + int option_1_value = 1; + string option_1_label = "Right"; + int option_2_value = 2; + string option_2_label = "Bottom"; + int option_3_value = 3; + string option_3_label = "Top"; +> = 0; + +uniform float4 Fill_Color; + +float4 mainImage(VertData v_in) : TARGET +{ + float distanceToEdge = 0.0; + + // Calculate distance to the fill edge based on the selected direction + if (Fill_Direction == 0) + distanceToEdge = Fill - v_in.uv.x; + else if (Fill_Direction == 1) + distanceToEdge = v_in.uv.x - (1.0 - Fill); + else if (Fill_Direction == 2) + distanceToEdge = v_in.uv.y - (1.0 - Fill); + else if (Fill_Direction == 3) + distanceToEdge = Fill - v_in.uv.y; + + // Calculate the gradient factor based on the distance to the edge and the gradient width + float gradientOffset = (Fill == 0.0) ? 0.0 : (Fill == 1.0 ? 0.0 : Gradient_Offset); + float gradientWidth = (Fill == 0.0 || Fill == 1.0) ? 0.0 : Gradient_Width; + + // Adjust distanceToEdge by the Gradient_Offset + distanceToEdge += gradientOffset; + + // Normalize the distance to be between 0 and 1 + distanceToEdge = saturate(distanceToEdge); + + // float gradientWidth = Fill < 1.0 ? Gradient_Width : Gradient_Width * (1.0 - Fill); + // float gradientFactor = smoothstep(0.0, gradientWidth, distanceToEdge); + float gradientFactor = clamp(distanceToEdge / gradientWidth, 0.0, 1.0); + + // Blend between the fill color and the original image color using the gradient factor + float4 finalColor = lerp(image.Sample(textureSampler, v_in.uv), Fill_Color, gradientFactor); + + return finalColor; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFillColorLinearShader { + +[Alias('Set-OBSFillColorLinearShader','Add-OBSFillColorLinearShader')] +param( +# Set the Fill of OBSFillColorLinearShader +[ComponentModel.DefaultBindingProperty('Fill')] +[Single] +$Fill, +# Set the Fill_Direction of OBSFillColorLinearShader +[Alias('Fill_Direction')] +[ComponentModel.DefaultBindingProperty('Fill_Direction')] +[Int32] +$FillDirection, +# Set the Fill_Color of OBSFillColorLinearShader +[Alias('Fill_Color')] +[ComponentModel.DefaultBindingProperty('Fill_Color')] +[String] +$FillColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fill_color_linear' +$ShaderNoun = 'OBSFillColorLinearShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float Fill< + string label = "Fill"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 1; + float step = 0.005; +>; +uniform int Fill_Direction< + string label = "Fill from:"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Left"; + int option_1_value = 1; + string option_1_label = "Right"; + int option_2_value = 2; + string option_2_label = "Top"; + int option_3_value = 3; + string option_3_label = "Bottom"; +> = 0; +uniform float4 Fill_Color; + +float4 mainImage(VertData v_in) : TARGET +{ + bool is_inside_fill = true; + + // Check if the pixel is within the specified "fill width" on the left side + if(Fill_Direction == 0){ + is_inside_fill = v_in.uv.x > Fill; + } + if(Fill_Direction == 1) + { + is_inside_fill = v_in.uv.x < (1.0 - Fill); + } + if(Fill_Direction == 2) + { + is_inside_fill = v_in.uv.y > Fill; + } + if(Fill_Direction == 3) + { + is_inside_fill = v_in.uv.y < (1.0 - Fill); + } + + // Invert is_inside_fill + is_inside_fill = !is_inside_fill; + + // If inside the "fill," make the pixel selected colour; otherwise, use the original image color + return is_inside_fill ? Fill_Color : image.Sample(textureSampler, v_in.uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFillColorRadialDegreesShader { + +[Alias('Set-OBSFillColorRadialDegreesShader','Add-OBSFillColorRadialDegreesShader')] +param( +# Set the Fill_Direction of OBSFillColorRadialDegreesShader +[Alias('Fill_Direction')] +[ComponentModel.DefaultBindingProperty('Fill_Direction')] +[Int32] +$FillDirection, +# Set the Fill of OBSFillColorRadialDegreesShader +[ComponentModel.DefaultBindingProperty('Fill')] +[Single] +$Fill, +# Set the Start_Angle of OBSFillColorRadialDegreesShader +[Alias('Start_Angle')] +[ComponentModel.DefaultBindingProperty('Start_Angle')] +[Single] +$StartAngle, +# Set the Offset_X of OBSFillColorRadialDegreesShader +[Alias('Offset_X')] +[ComponentModel.DefaultBindingProperty('Offset_X')] +[Single] +$OffsetX, +# Set the Offset_Y of OBSFillColorRadialDegreesShader +[Alias('Offset_Y')] +[ComponentModel.DefaultBindingProperty('Offset_Y')] +[Single] +$OffsetY, +# Set the Fill_Color of OBSFillColorRadialDegreesShader +[Alias('Fill_Color')] +[ComponentModel.DefaultBindingProperty('Fill_Color')] +[String] +$FillColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fill_color_radial_degrees' +$ShaderNoun = 'OBSFillColorRadialDegreesShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.141592653589793238 + +uniform int Fill_Direction< + string label = "Fill Direction"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Clockwise"; + int option_1_value = 1; + string option_1_label = "Counter-Clockwise"; +> = 0; + +uniform float Fill< + string label = "Fill"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 360; + float step = 1.00000; +>; + +uniform float Start_Angle< + string label = "Start Angle"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 720; + float step = 1.00000; +> = 360.0; + +uniform float Offset_X< + string label = "Offset X"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float Offset_Y< + string label = "Offset Y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float4 Fill_Color; + +float4 mainImage(VertData v_in) : TARGET +{ + // Calculate the center of the screen based on aspect ratio + float aspectRatioX = uv_size.x / uv_size.y; + float2 center = float2(0.5 * aspectRatioX + Offset_X, 0.5 + Offset_Y); + + // Normalize the UV coordinates based on aspect ratio + float2 normalizedUV = v_in.uv * float2(aspectRatioX, 1.0); + + // Calculate the direction vector from the center to the current pixel + float2 dir = normalizedUV - center; + + // Calculate the angle in radians + float angle = atan2(dir.y, dir.x); + + // Convert angle from radians to degrees + angle = degrees(angle); + + // Offset the angle to start from the specified starting angle + angle += Start_Angle + 90.0; // Subtract 90 degrees to start at 12 o''clock + if (angle >= 360.0) + angle -= 360.0; + + // Adjust the angle based on the selected fill direction + if (Fill_Direction == 1) { + // Counter-clockwise fill + angle = 360.0 - angle; + } + + // Ensure angle is within [0, 360] range + if (angle < 0.0) + angle += 360.0; + else if (angle >= 360.0) + angle -= 360.0; + + // Check if the angle is within the specified "fill width" + bool is_inside_fill = angle < Fill; + + // If inside the "fill," make the pixel selected color; otherwise, use the original image color + return is_inside_fill ? Fill_Color : image.Sample(textureSampler, v_in.uv); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFillColorRadialPercentageShader { + +[Alias('Set-OBSFillColorRadialPercentageShader','Add-OBSFillColorRadialPercentageShader')] +param( +# Set the Fill_Direction of OBSFillColorRadialPercentageShader +[Alias('Fill_Direction')] +[ComponentModel.DefaultBindingProperty('Fill_Direction')] +[Int32] +$FillDirection, +# Set the Fill of OBSFillColorRadialPercentageShader +[ComponentModel.DefaultBindingProperty('Fill')] +[Single] +$Fill, +# Set the Start_Angle of OBSFillColorRadialPercentageShader +[Alias('Start_Angle')] +[ComponentModel.DefaultBindingProperty('Start_Angle')] +[Single] +$StartAngle, +# Set the Offset_X of OBSFillColorRadialPercentageShader +[Alias('Offset_X')] +[ComponentModel.DefaultBindingProperty('Offset_X')] +[Single] +$OffsetX, +# Set the Offset_Y of OBSFillColorRadialPercentageShader +[Alias('Offset_Y')] +[ComponentModel.DefaultBindingProperty('Offset_Y')] +[Single] +$OffsetY, +# Set the Fill_Color of OBSFillColorRadialPercentageShader +[Alias('Fill_Color')] +[ComponentModel.DefaultBindingProperty('Fill_Color')] +[String] +$FillColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fill_color_radial_percentage' +$ShaderNoun = 'OBSFillColorRadialPercentageShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.141592653589793238 + +uniform int Fill_Direction< + string label = "Fill Direction"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Clockwise"; + int option_1_value = 1; + string option_1_label = "Counter-Clockwise"; +> = 0; + +uniform float Fill< + string label = "Fill"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.00005; +> = 0.0; + +uniform float Start_Angle< + string label = "Start Angle"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 720; + float step = 1.00000; +> = 360.0; + +uniform float Offset_X< + string label = "Offset X"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float Offset_Y< + string label = "Offset Y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float4 Fill_Color; + +float4 mainImage(VertData v_in) : TARGET +{ + // Calculate the center of the screen based on aspect ratio + float aspectRatioX = uv_size.x / uv_size.y; + float2 center = float2(0.5 * aspectRatioX + Offset_X, 0.5 + Offset_Y); + + // Normalize the UV coordinates based on aspect ratio + float2 normalizedUV = v_in.uv * float2(aspectRatioX, 1.0); + + // Calculate the direction vector from the center to the current pixel + float2 dir = normalizedUV - center; + + // Calculate the angle in radians + float angle = atan2(dir.y, dir.x); + + // Convert angle from radians to degrees + angle = degrees(angle); + + // Offset the angle to start from the specified starting angle + angle += Start_Angle + 90.0; // Subtract 90 degrees to start at 12 o''clock + if (angle >= 360.0) + angle -= 360.0; + + // Adjust the angle based on the selected fill direction + if (Fill_Direction == 1) { + // Counter-clockwise fill + angle = 360.0 - angle; + } + + // Ensure angle is within [0, 360] range + if (angle < 0.0) + angle += 360.0; + else if (angle >= 360.0) + angle -= 360.0; + + // Calculate the percentage of the angle + float anglePercentage = angle / 360.0; + + // Check if the angle percentage is within the specified "fill percentage" + bool is_inside_fill = anglePercentage < Fill; + + // If inside the "fill," make the pixel selected color; otherwise, use the original image color + return is_inside_fill ? Fill_Color : image.Sample(textureSampler, v_in.uv); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFilterTemplateShader { + +[Alias('Set-OBSFilterTemplateShader','Add-OBSFilterTemplateShader')] +param( +# Set the ViewProj of OBSFilterTemplateShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSFilterTemplateShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSFilterTemplateShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSFilterTemplateShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSFilterTemplateShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSFilterTemplateShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSFilterTemplateShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSFilterTemplateShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSFilterTemplateShader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSFilterTemplateShader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSFilterTemplateShader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSFilterTemplateShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the notes of OBSFilterTemplateShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'filter_template' +$ShaderNoun = 'OBSFilterTemplateShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//My shader modified by Me for use with obs-shaderfilter month/year v.02 + +//Section to converting GLSL to HLSL - can delete if unneeded +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp +#define iTime float +#define iTime elapsed_time +#define iResolution float4(uv_size,uv_pixel_interval) + +/* +**Shaders have these variables pre loaded by the plugin** +**this section can be deleted** + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; +*/ +uniform string notes< + string widget_type = "info"; +> = "add notes here"; + + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +/* +**Shaders use the built in Draw technique** +**this section can be deleted** + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} +*/ + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFire3Shader { + +[Alias('Set-OBSFire3Shader','Add-OBSFire3Shader')] +param( +# Set the ViewProj of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSFire3Shader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSFire3Shader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSFire3Shader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSFire3Shader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSFire3Shader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSFire3Shader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSFire3Shader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSFire3Shader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSFire3Shader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the Movement_Direction_Horizontal of OBSFire3Shader +[Alias('Movement_Direction_Horizontal')] +[ComponentModel.DefaultBindingProperty('Movement_Direction_Horizontal')] +[Single] +$MovementDirectionHorizontal, +# Set the Movement_Direction_Vertical of OBSFire3Shader +[Alias('Movement_Direction_Vertical')] +[ComponentModel.DefaultBindingProperty('Movement_Direction_Vertical')] +[Single] +$MovementDirectionVertical, +# Set the Alpha_Percentage of OBSFire3Shader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Int32] +$AlphaPercentage, +# Set the Speed of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('Speed')] +[Int32] +$Speed, +# Set the Invert of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('Invert')] +[Management.Automation.SwitchParameter] +$Invert, +# Set the lumaMin of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMinSmooth of OBSFire3Shader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the Apply_To_Image of OBSFire3Shader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSFire3Shader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Color_To_Replace of OBSFire3Shader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Apply_To_Specific_Color of OBSFire3Shader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Full_Width of OBSFire3Shader +[Alias('Full_Width')] +[ComponentModel.DefaultBindingProperty('Full_Width')] +[Management.Automation.SwitchParameter] +$FullWidth, +# Set the Flame_Size of OBSFire3Shader +[Alias('Flame_Size')] +[ComponentModel.DefaultBindingProperty('Flame_Size')] +[Single] +$FlameSize, +# Set the Spark_Grid_Height of OBSFire3Shader +[Alias('Spark_Grid_Height')] +[ComponentModel.DefaultBindingProperty('Spark_Grid_Height')] +[Single] +$SparkGridHeight, +# Set the Flame_Modifier of OBSFire3Shader +[Alias('Flame_Modifier')] +[ComponentModel.DefaultBindingProperty('Flame_Modifier')] +[Single] +$FlameModifier, +# Set the Flame_Tongue_Size of OBSFire3Shader +[Alias('Flame_Tongue_Size')] +[ComponentModel.DefaultBindingProperty('Flame_Tongue_Size')] +[Single] +$FlameTongueSize, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fire-3' +$ShaderNoun = 'OBSFire3Shader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//My effect modified by Me for use with obs-shaderfilter month/year v.02 +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +//Section to converting GLSL to HLSL - can delete +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp + + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; + +uniform float Movement_Direction_Horizontal< + string label = "Movement Direction Horizontal"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; +uniform float Movement_Direction_Vertical< + string label = "Movement Direction Vertical"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.01; +> = 0.0; + +#define iTime elapsed_time +#define iResolution float4(uv_size,uv_pixel_interval) +#define Movement_Direction float2(Movement_Direction_Horizontal, Movement_Direction_Vertical) + +uniform int Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 90; +uniform int Speed< + string label = "Speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 80; +uniform bool Invert = false; +uniform float lumaMin< + string label = "Luma Min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.01; +uniform float lumaMinSmooth< + string label = "Luma Min Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.04; +uniform bool Apply_To_Image = true; +uniform bool Replace_Image_Color = true; +uniform float4 Color_To_Replace; +uniform bool Apply_To_Specific_Color = false; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + float2 uv = v_in.uv; + if(Invert) + uv = 1.0 - v_in.uv; + vert_out.uv = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +int2 iMouse() +{ + return int2(Movement_Direction.x * uv_size.x, Movement_Direction.y * uv_size.y); +} + + +float mod(float x, float y) +{ + return x - y * floor(x / y); +} + +float2 mod2(float2 x, float2 y) +{ + return x - y * floor(x / y); +} + +/*ps start*/ +#define PI 3.1415926535897932384626433832795 +uniform bool Full_Width = false; + +uniform float Flame_Size< + string label = "Flame Size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; + +uniform float Spark_Grid_Height< + string label = "Spark Grid Size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; + +uniform float Flame_Modifier< + string label = "Flame Modifier"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float Flame_Tongue_Size< + string label = "Flame Tongue Size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 8.5; + +// +// Description : Array and textureless GLSL 2D/3D/4D simplex +// noise functions. +// Author : Ian McEwan, Ashima Arts. +// Maintainer : ijm +// Lastmod : 20110822 (ijm) +// License : Copyright (C) 2011 Ashima Arts. All rights reserved. +// Distributed under the MIT License. See LICENSE file. +// https://github.com/ashima/webgl-noise +// + +vec3 mod2893(vec3 x) +{ + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 mod289(vec4 x) +{ + return x - floor(x * (1.0 / 289.0)) * 289.0; +} + +vec4 permute(vec4 x) +{ + return mod289(((x * 34.0) + 1.0) * x); +} + +vec4 taylorInvSqrt(vec4 r) +{ + return 1.79284291400159 - 0.85373472095314 * r; +} + +float snoise(vec3 v) +{ + const vec2 C = vec2(1.0 / 6.0, 1.0 / 3.0); + const vec4 D = vec4(0.0, 0.5, 1.0, 2.0); + +// First corner + vec3 i = floor(v + dot(v, C.yyy)); + vec3 x0 = v - i + dot(i, C.xxx); + +// Other corners + vec3 g = step(x0.yzx, x0.xyz); + vec3 l = 1.0 - g; + vec3 i1 = min(g.xyz, l.zxy); + vec3 i2 = max(g.xyz, l.zxy); + + // x0 = x0 - 0.0 + 0.0 * C.xxx; + // x1 = x0 - i1 + 1.0 * C.xxx; + // x2 = x0 - i2 + 2.0 * C.xxx; + // x3 = x0 - 1.0 + 3.0 * C.xxx; + vec3 x1 = x0 - i1 + C.xxx; + vec3 x2 = x0 - i2 + C.yyy; // 2.0*C.x = 1/3 = C.y + vec3 x3 = x0 - D.yyy; // -1.0+3.0*C.x = -0.5 = -D.y + +// Permutations + i = mod2893(i); + vec4 p = permute(permute(permute( + i.z + vec4(0.0, i1.z, i2.z, 1.0)) + + i.y + vec4(0.0, i1.y, i2.y, 1.0)) + + i.x + vec4(0.0, i1.x, i2.x, 1.0)); + +// Gradients: 7x7 points over a square, mapped onto an octahedron. +// The ring size 17*17 = 289 is close to a multiple of 49 (49*6 = 294) + float n_ = 0.142857142857; // 1.0/7.0 + vec3 ns = n_ * D.wyz - D.xzx; + + vec4 j = p - 49.0 * floor(p * ns.z * ns.z); // mod(p,7*7) + + vec4 x_ = floor(j * ns.z); + vec4 y_ = floor(j - 7.0 * x_); // mod(j,N) + + vec4 x = x_ * ns.x + ns.yyyy; + vec4 y = y_ * ns.x + ns.yyyy; + vec4 h = 1.0 - abs(x) - abs(y); + + vec4 b0 = vec4(x.xy, y.xy); + vec4 b1 = vec4(x.zw, y.zw); + + //vec4 s0 = vec4(lessThan(b0,0.0))*2.0 - 1.0; + //vec4 s1 = vec4(lessThan(b1,0.0))*2.0 - 1.0; + vec4 s0 = floor(b0) * 2.0 + 1.0; + vec4 s1 = floor(b1) * 2.0 + 1.0; + vec4 sh = -step(h, vec4(0.0, 0.0, 0.0, 0.0)); + + vec4 a0 = b0.xzyw + s0.xzyw * sh.xxyy; + vec4 a1 = b1.xzyw + s1.xzyw * sh.zzww; + + vec3 p0 = vec3(a0.xy, h.x); + vec3 p1 = vec3(a0.zw, h.y); + vec3 p2 = vec3(a1.xy, h.z); + vec3 p3 = vec3(a1.zw, h.w); + +//Normalise gradients + //vec4 norm = taylorInvSqrt(vec4(dot(p0,p0), dot(p1,p1), dot(p2, p2), dot(p3,p3))); + vec4 norm = rsqrt(vec4(dot(p0, p0), dot(p1, p1), dot(p2, p2), dot(p3, p3))); + p0 *= norm.x; + p1 *= norm.y; + p2 *= norm.z; + p3 *= norm.w; + +// Mix final noise value + vec4 m = max(0.6 - vec4(dot(x0, x0), dot(x1, x1), dot(x2, x2), dot(x3, x3)), 0.0); + m = m * m; + return 42.0 * dot(m * m, vec4(dot(p0, x0), dot(p1, x1), dot(p2, x2), dot(p3, x3))); +} + +////////////////////////////////////////////////////////////// + +// PRNG +// From https://www.shadertoy.com/view/4djSRW +float prng(in vec2 seed) +{ + seed = fract(seed * vec2(5.3983, 5.4427)); + seed += dot(seed.yx, seed.xy + vec2(21.5351, 14.3137)); + return fract(seed.x * seed.y * 95.4337); +} + +////////////////////////////////////////////////////////////// + +float noiseStack(vec3 pos, int octaves, float falloff) +{ + float noise = snoise(vec3(pos)); + float off = 1.0; + if (octaves > 1) + { + pos *= 2.0; + off *= falloff; + noise = (1.0 - off) * noise + off * snoise(vec3(pos)); + } + if (octaves > 2) + { + pos *= 2.0; + off *= falloff; + noise = (1.0 - off) * noise + off * snoise(vec3(pos)); + } + if (octaves > 3) + { + pos *= 2.0; + off *= falloff; + noise = (1.0 - off) * noise + off * snoise(vec3(pos)); + } + return (1.0 + noise) / 2.0; +} + +vec2 noiseStackUV(vec3 pos, int octaves, float falloff, float diff) +{ + float displaceA = noiseStack(pos, octaves, falloff); + float displaceB = noiseStack(pos + vec3(3984.293, 423.21, 5235.19), octaves, falloff); + return vec2(displaceA, displaceB); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 UV = (1.0 - v_in.uv) * uv_scale; + if (Invert) + UV = v_in.uv * uv_scale; + float alpha = saturate(Alpha_Percentage * .01); + float flame_size = clamp(Flame_Size * .01, 0.0, 4.0); + + vec2 resolution = (.25 * uv_scale * UV.xy) + (0.75 * uv_scale); + if (Full_Width) + { + resolution = (2.0 * (UV.xy)) / 1.0; //iResolution.xy; + + } + resolution.x = mul(resolution.x, 1 / 1); + float time = iTime * (Speed * 0.01); + //vec2 drag = iMouse().xy; + vec2 offset = iMouse().xy; + // + float xpart = UV.x / resolution.x; + float ypart = UV.y / resolution.y; + // + + float ypartClip = UV.y / ( flame_size * 75.0); + float ypartClippedFalloff = clamp(2.0 - ypartClip, 0.0, 1.0); + float ypartClipped = min(ypartClip, 1.0); + float ypartClippedn = (1 - ypartClipped); + // + float xfuel = pow(1.0 - abs(2.0 * xpart - 1.0), 0.5); //pow(1.0-abs(2.0*xpart-1.0),0.5); + // + float timeSpeed = 0.5 * (Speed * 0.01); + float realTime = -1.0 * timeSpeed * time; + // + vec2 coordScaled = -1 * Flame_Tongue_Size * UV - 0.1 * offset; + vec3 position = vec3(coordScaled, 0.0); // +vec3(1223.0, 6434.0, 8425.0); + vec3 flow = vec3(4.1 * (0.5 - xpart) * pow(ypartClippedn, 4.0), -2.0 * xfuel * pow(ypartClippedn, 64.0), 0.0); + vec3 timing = realTime * vec3(0.0, -1.7, 1.1) + flow; + // + vec3 displacePos = vec3(1.0, 0.5, 1.0) * 2.4 * position + realTime * vec3(0.01, -0.7, 1.3); + vec3 displace3 = vec3(noiseStackUV(displacePos, 2, 0.4, 0.1), 0.0); + // + vec3 noiseCoord = (vec3(2.0, 1.0, 1.0) * position + timing + 0.4 * displace3) / 1.0; + float noise = noiseStack(noiseCoord, 3, 0.4); + // + float flames = pow(ypartClipped, 0.3 * xfuel) * pow(noise, 0.3 * xfuel); + // + float f = ypartClippedFalloff * pow(Flame_Modifier - flames * flames * flames, 8.0); + float fff = f * f * f; + vec3 fire = 1.5 * vec3(f, fff, fff * fff); + // + // smoke + float smokeNoise = 0.5 + snoise(0.4 * position + timing * vec3(1.0, 1.0, 0.2)) / 2.0; + float smokePart = 0.3 * pow(xfuel, 3.0) * pow(ypart, 2.0) * (smokeNoise + 0.4 * (1.0 - noise)); + vec3 smoke = vec3(smokePart, smokePart, smokePart); + // + // sparks + float sparkGridSize = Spark_Grid_Height; + vec2 sparkCoord = UV *uv_size - vec2(2.0 * offset.x, 190.0 * sin(realTime)); + sparkCoord -= 30.0 * noiseStackUV(0.01 * vec3(sparkCoord, 15.0 * time), 1, 0.4, 0.1); + sparkCoord += 100.0 * flow.xy; + if (mod(sparkCoord.y / sparkGridSize, 2.0) < 1.0) + sparkCoord.x += 0.5 * sparkGridSize; + vec2 sparkGridIndex = vec2(floor(sparkCoord / sparkGridSize)); + float sparkRandom = prng( sparkGridIndex); + float sparkLife = min(10.0 * (1.0 - min((sparkGridIndex.y + (190.0 * realTime / sparkGridSize)) / (24.0 - 20.0 * sparkRandom), 1.0)), 1.0); + vec3 sparks = vec3(0.0, 0.0, 0.0); + if (sparkLife > 0.0) + { + float sparkSize = xfuel * xfuel * sparkRandom * 0.08; + float sparkRadians = 999.0 * sparkRandom * 2.0 * PI + 2.0 * time; + vec2 sparkCircular = vec2(sin(sparkRadians), cos(sparkRadians)); + vec2 sparkOffset = (0.5 - sparkSize) * sparkGridSize * sparkCircular; + vec2 sparkModulus = mod2(sparkCoord + sparkOffset, float2(sparkGridSize, sparkGridSize)) - 0.5 * float2(sparkGridSize, sparkGridSize); + float sparkLength = length(sparkModulus); + float sparksGray = max(0.0, 1.0 - sparkLength / (sparkSize * sparkGridSize)); + sparks = sparkLife * sparksGray * vec3(1.0, 0.3, 0.0); + } + // + float4 rgba = vec4(max(fire, sparks) + smoke, 1.0); + + // remove dark areas per user + float luma_fire = dot(rgba.rgb, float3(0.299, 0.587, 0.114)); + float luma_min_fire = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luma_fire); + rgba.a = clamp(luma_min_fire, 0.0, alpha); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + float4 color = image.Sample(textureSampler, v_in.uv); + float4 original_color = color; + if (color.a > 0.0) + { + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, lerp(original_color,rgba * color,rgba.a), alpha); + } + else + { + rgba = color; + } + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, alpha); + } + + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFireShader { + +[Alias('Set-OBSFireShader','Add-OBSFireShader')] +param( +# Set the Alpha_Percentage of OBSFireShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Int32] +$AlphaPercentage, +# Set the Speed of OBSFireShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Int32] +$Speed, +# Set the Flame_Size of OBSFireShader +[Alias('Flame_Size')] +[ComponentModel.DefaultBindingProperty('Flame_Size')] +[Int32] +$FlameSize, +# Set the Fire_Type of OBSFireShader +[Alias('Fire_Type')] +[ComponentModel.DefaultBindingProperty('Fire_Type')] +[Int32] +$FireType, +# Set the Invert of OBSFireShader +[ComponentModel.DefaultBindingProperty('Invert')] +[Management.Automation.SwitchParameter] +$Invert, +# Set the lumaMin of OBSFireShader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMinSmooth of OBSFireShader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the Apply_To_Image of OBSFireShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSFireShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Apply_To_Specific_Color of OBSFireShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSFireShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Notes of OBSFireShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fire' +$ShaderNoun = 'OBSFireShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//fire shader modified by Charles Fettinger for use with obs-shaderfilter 07/20 v.6 +// https://github.com/Oncorporation/obs-shaderfilter plugin +// https://www.shadertoy.com/view/MtcGD7 original version +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +//v.5 +// flicker +// flame type +// apply to image +// replace image color +// speed +// flame size +// alpha +// invert direction/position + + +//Section to converting GLSL to HLSL - can delete +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp + +uniform int Alpha_Percentage< + string label = "Aplha Percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 90; +uniform int Speed< + string label = "Speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +> = 100; +uniform int Flame_Size< + string label = "Flame Size"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +> = 70; +uniform int Fire_Type< + string label = "Fire Type"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Smaller and more whisps"; + int option_1_value = 1; + string option_1_label = "Larger and more volume"; +> = 1; + +uniform bool Invert < + string name = "Invert"; +> = false; +uniform float lumaMin< + string label = "Luma min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.01; +uniform float lumaMinSmooth< + string label = "Luma min smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.04; +uniform bool Apply_To_Image; +uniform bool Replace_Image_Color; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform string Notes< + string widget_type = "info"; +> = "Luma cuts reveals background, flame size is percentage screen size, Alpha Percentage adjusts color"; + +vec3 rgb2hsv(vec3 c) +{ + vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g)); + vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +vec3 hsv2rgb(vec3 c) +{ + vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +float rand(vec2 n) +{ + return fract(sin(cos(dot(n, vec2(12.9898, 12.1414)))) * 83758.5453); + //return sin(rand_f, n); +} + +float noise(vec2 n) +{ + const vec2 d = vec2(0.0, 1.0); + vec2 b = floor(n), f = smoothstep(vec2(0.0, 0.0), vec2(1.0, 1.0), fract(n)); + return mix(mix(rand(b), rand(b + d.yx), f.x), mix(rand(b + d.xy), rand(b + d.yy), f.x), f.y); +} + +float fbm(vec2 n) +{ + float total = 0.0, amplitude = 1.0; + for (int i = 0; i < 5; i++) + { + total += noise(n) * amplitude; + n += n * 1.7; + amplitude *= 0.47; + } + return total; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 iResolution = uv_scale; + float flame_size = clamp(Flame_Size * .01,-5,5); + + // inverting direction is logically inverted to allow the bottom up to be normal + float fire_base = (v_in.uv.y / iResolution.y); + float2 fire_pix = v_in.uv.xy + float2(flame_size -1,0); + float direction = -1.0 * clamp(Speed*.01,-5,5); + if (!Invert) + { + direction *= -1.0; + fire_base = 1 - fire_base; + fire_pix = 1 - fire_pix; + } + float iTime = direction * elapsed_time; + + const vec3 c1 = vec3(0.5, 0.0, 0.1); + const vec3 c2 = vec3(0.9, 0.1, 0.0); + const vec3 c3 = vec3(0.2, 0.1, 0.7); + const vec3 c4 = vec3(1.0, 0.9, 0.1); + const vec3 c5 = vec3(0.1, 0.1, 0.1); + const vec3 c6 = vec3(0.9, 0.9, 0.9); + + vec2 speed = vec2(1.2, 0.1) * clamp(Speed*.01,-5,5); + float shift = 1.327 * (1/flame_size) - sin(iTime * 2.0) / 2.4; + float alpha = saturate(Alpha_Percentage * .01); + + //change the constant term for all kinds of cool distance versions, + //make plus/minus to switch between + //ground fire and fire rain! + float dist = 3.5 - sin(iTime * 0.4) / 1.89; + + vec2 p = fire_pix * dist / iResolution.xx; + p.x -= iTime / 1.1; + float3 black = float3(0,0,0); + vec3 fire; + + if (Fire_Type == 1) + { + //fire version 1 larger and more volume + float q = fbm(p - iTime * 0.01 + 1.0 * sin(iTime) / 10.0); + float qb = fbm(p - iTime * 0.002 + 0.1 * cos(iTime) / 5.0); + float q2 = fbm(p - iTime * 0.44 - 5.0 * cos(iTime) / 7.0) -6.0; + float q3 = fbm(p - iTime * 0.9 - 10.0 * cos(iTime) / 30.0) -4.0; + float q4 = fbm(p - iTime * 2.0 - 20.0 * sin(iTime) / 20.0) +2.0; + q = (q + qb - .4 * q2 - 2.0 * q3 + .6 * q4) / 3.8; + + vec2 r = vec2(fbm(p + q / 2.0 - iTime* speed.x - p.x - p.y), + fbm(p - q - iTime* speed.y)) ; + vec3 c = mix(c1, c2, fbm(p + r)) + mix(c3, c4, r.x) - mix(c5, c6, r.y); + fire = vec3(c * max(cos(shift * fire_base) - (rand_f *.05),0.05)); + + fire += .05; + fire.r *= .8; + vec3 hsv = rgb2hsv(fire); + hsv.y *= hsv.z * 1.1; + hsv.z *= hsv.y * 1.13; + hsv.y = (2.2 - hsv.z * .9) * 1.20; + fire = hsv2rgb(hsv); + } + else + { + // fire version 0 - smaller and more whisps + p += (rand_f *.01); + float q = fbm(p - iTime * 0.3+1.0*sin(iTime+0.5)/2.0); + float qb = fbm(p - iTime * 0.4+0.1*cos(iTime)/2.0); + float q2 = fbm(p - iTime * 0.44 - 5.0*cos(iTime)/2.0) - 6.0; + float q3 = fbm(p - iTime * 0.9 - 10.0*cos(iTime)/15.0)-4.0; + float q4 = fbm(p - iTime * 1.4 - 20.0*sin(iTime)/14.0)+2.0; + q = (q + qb - .4 * q2 -2.0*q3 + .6*q4)/3.8; + + vec2 r = vec2(fbm(p + q /2.0 + iTime * speed.x - p.x - p.y), + fbm(p + q - iTime * speed.y)) * shift; + vec3 c = mix(c1, c2, fbm(p + r)) + mix(c3, c4, r.x) - mix(c5, c6, r.y); + //fire = vec3(1.0/(pow(c+1.61,vec3(4.0,4.0,4.0))) * max(cos(shift * fire_base),0)); + + fire = vec3(1.0,.2,.05)/(pow((r.y+r.y)* max(.0,p.y)+0.1, 4.0)) ;//* max(.1,(cos(shift * fire_base))); + fire += (black*0.01*pow((r.y+r.y)*.65,5.0)+0.055)*mix( vec3(.9,.4,.3),vec3(.7,.5,.2), v_in.uv.y); + fire = fire/(1.0+max(black,fire)); + } + float4 rgba = vec4(fire.x, fire.y, fire.z, alpha); + + // remove dark areas per user + float luma_fire = dot(rgba.rgb,float3(0.299,0.587,0.114)); + float luma_min_fire = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luma_fire); + rgba.a = clamp(luma_min_fire,0.0,alpha); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + if (color.a > 0.0) + { + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, lerp(original_color,rgba * color,rgba.a), alpha); + } + else + { + rgba = color; + } + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, alpha); + } + return rgba; +} + + + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFireworks2Shader { + +[Alias('Set-OBSFireworks2Shader','Add-OBSFireworks2Shader')] +param( +# Set the Speed of OBSFireworks2Shader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fireworks2' +$ShaderNoun = 'OBSFireworks2Shader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// based on https://www.shadertoy.com/view/4dBGRw + +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200.0; + float step = 1.0; +> = 100.0; + +#ifndef OPENGL +#define mat2 float2x2 +#define mix lerp +float mod(float x, float y) +{ + return x - y * floor(x / y); +} +#endif +//Creates a diagonal red-and-white striped pattern. +float3 barberpole(float2 pos, float2 rocketpos){ + float d = (pos.x-rocketpos.x)+(pos.y-rocketpos.y); + float3 col=float3(1.0,1.0,1.0); + + d = mod(d*20.,2.0); + if(d>1.0){ + col=float3(1.0,0.0,0.0); + } + return col; +} + +float4 rocket(float2 pos, float2 rocketpos){ + float4 col = float4(0.0,0.0,0.0,0.0); + float f = 0.; + float absx= abs(rocketpos.x - pos.x); + float absy = abs(rocketpos.y-pos.y); + //wooden stick + if(absx<0.01&&absy<0.22){ + col=float4(1.0,0.5,0.5,1.0); + } + + //Barberpole + + if(absx<0.05&&absy<0.15){ + col=float4(barberpole(pos, rocketpos),1.0); + } + //Rocket Point + float pointw=(rocketpos.y-pos.y-0.25)*-0.7; + if((rocketpos.y-pos.y)>0.1){ + f=smoothstep(pointw-0.001,pointw+0.001,absx); + + col=mix(float4(1.0,0.0,0.0,1.0),col, f); + } + //Shadow + + f =-.5 + smoothstep(-0.05, 0.05, (rocketpos.x-pos.x)); + col.rgb *= 0.7+f; + + return col; +} + + + +float rand(float val, float seed){ + return cos(val*sin(val*seed)*seed); +} + +float distance2( in float2 a, in float2 b ) { return dot(a-b,a-b); } + + + +float4 drawParticles(float2 pos, float3 particolor, float time, float2 cpos, float gravity, float seed, float timelength){ + float4 col= float4(0.0,0.0,0.0,0.0); + float2 pp = float2(1.0,0.0); + mat2 rr = mat2( cos(1.0), -sin(1.0), sin(1.0), cos(1.0) ); + for(float i=1.0;i<=128.0;i++){ + float d=rand(i, seed); + float fade=(i/128.0)*time; + float2 particpos = cpos + time*pp*d; + pp = mul(rr,pp); + col.rgb = mix(particolor/fade, col, smoothstep(0.0, 0.0001, distance2(particpos, pos))); + } + col.rgb*=smoothstep(0.0,1.0,(timelength-time)/timelength); + col.a = col.r+col.g+col.b; + return col; +} +float4 drawFireworks(float time, float2 uv, float3 particolor, float seed){ + + float timeoffset = 2.0; + float4 col=float4(0.0,0.0,0.0,0.0); + if(time<=0.){ + return col; + } + time *= Speed /100.0; + if(mod(time, 6.0)>timeoffset){ + col= drawParticles(uv, particolor, mod(time, 6.0)-timeoffset, float2(rand(ceil(time/6.0),seed),-0.5), 0.5, ceil(time/6.0), seed); + }else{ + + col= rocket(uv*3., float2(3.*rand(ceil(time/6.0),seed),3.*(-0.5+(timeoffset-mod(time, 6.0))))); + } + return col; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv =float2(1.0,1.0) - 2.0* v_in.uv; + uv.y = -uv.y; + uv.x *= uv_size.x/uv_size.y; + float4 col = image.Sample(textureSampler, v_in.uv); + //col.rgb += 0.1*uv.y; + float4 c; + c = drawFireworks(elapsed_time , uv,float3(1.0,0.1,0.1), 1.); + col = mix(col, c, c.a); + c = drawFireworks(elapsed_time-2.0, uv,float3(0.0,1.0,0.5), 2.); + col = mix(col, c, c.a); + c = drawFireworks(elapsed_time-4.0, uv,float3(1.0,1.0,0.1), 3.); + col = mix(col, c, c.a); + + return col; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFireworksShader { + +[Alias('Set-OBSFireworksShader','Add-OBSFireworksShader')] +param( +# Set the show_flash of OBSFireworksShader +[Alias('show_flash')] +[ComponentModel.DefaultBindingProperty('show_flash')] +[Management.Automation.SwitchParameter] +$ShowFlash, +# Set the show_stars of OBSFireworksShader +[Alias('show_stars')] +[ComponentModel.DefaultBindingProperty('show_stars')] +[Management.Automation.SwitchParameter] +$ShowStars, +# Set the use_transparancy of OBSFireworksShader +[Alias('use_transparancy')] +[ComponentModel.DefaultBindingProperty('use_transparancy')] +[Management.Automation.SwitchParameter] +$UseTransparancy, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fireworks' +$ShaderNoun = 'OBSFireworksShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#ifndef OPENGL +#define mat2 float2x2 +#define fract frac +#define mix lerp +#endif + +uniform bool show_flash = true; +uniform bool show_stars = true; +uniform bool use_transparancy = true; + +float distLine(float2 p, float2 a, float2 b) { + float2 pa = p - a; + float2 ba = b - a; + float t = clamp(dot(pa, ba) / dot(ba, ba), 0.0, 1.0); + return length(pa - ba * t); +} + +float linef(float2 uv, float2 a, float2 b, float w) { + //return smoothstep(w, w - 0.01, distLine(uv, a, b)); + return w / distLine(uv, a, b); +} + +float N21(float2 p) { + p = fract(p * float2(233.34, 851.73)); + p += dot(p, p + 23.45); + return fract(p.x * p.y); +} + +float2 N22(float2 p) { + float n = N21(p); + return float2(n, N21(p + n)); +} + +float N11(float n) { + return fract(sin(dot(float2(cos(n), sin(n)) ,float2(27.9898, 38.233))) * 88.5453); +} + +float particle(float2 uv, float2 p, float2 v, float r, float t) { + float g = -9.81; + float x = p.x + v.x * t; + float y = p.y + v.y * t + g / 2.0 * t * t; + float2 j = (float2(x, y) - uv) * 20.0; + float sparkle = 1.0 / dot(j, j); + return sparkle; +} + +float2 p1(float2 p, float h, float t) { + return float2(p.x, p.y + clamp(pow(t, 5.0), 0.0, h)); +} + +float2 p2(float2 p, float h, float t) { + return float2(p.x, p.y + clamp(pow(0.95 * t, 5.0), 0.0, h)); +} + +float endTime(float h) { + return pow(h, 1.0 / 5.0) * 1.1; +} + +float explosion(float2 uv, float2 p, float s, float n, float f, float t) { + + float m = 0.0; + float dt = 0.5; + float seed2 = 0.32; + for(float i = 0.0; i < n; i++) { + seed2 += i; + float2 rand = float2(1.0, 2.0) * (float2(-1.0, 1.0) + 2.0 * N22(float2(seed2, i))); + float2 v = float2(cos(seed2), sin(seed2)) + rand; + m += particle(uv, p, v, s, t) * smoothstep(2.0, 2.0 - dt, t) * smoothstep(0.0, dt, t); + } + return m; +} + +float fireworks(float2 uv, float2 p, float h, float n, float s, float f, float t) { + float2 p1v = p1(p, h, t); + float e = endTime(h); + return explosion(uv, p1v, s, n, f, t - e * 0.9); +} + +float shaft(float2 uv, float2 p, float w, float h, float t) { + float2 p1v = p1(p, h, t) + float2(0.0, 0.3); + float2 p2v = p2(p, h, t); + float e = 1.0 / 0.95 * endTime(h); + float2 j = (p1v - uv) * 15.0; + float sparkle = 1.0 / dot(j, j); + return (linef(uv, p1v, p2v, w) + sparkle) * smoothstep(e, e - 0.5, t) * 0.5; +} + +float3 base(float2 uv) { + return 0.5 + 0.5 * cos(elapsed_time + uv.xyx + float3(0, 2, 4)); +} + +float back(float2 uv, float2 p, float t) { + float dt = 0.3; + float j = length(p - uv); + float m = exp(-0.005 * j * j); + return 0.2 * m * smoothstep(-dt / 4.0, 0.0, t) * smoothstep(dt, 0.0, t); +} + +float stars(float2 uv) { + float r = N21(uv); + return smoothstep(0.001, 0.0, r); +} + +float mod(float x, float y) +{ + return x - y * floor(x / y); +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv - float2(0.5,0.5); + uv.y = uv.y * -1; + float t = elapsed_time / 10.0; + float scale = 10.0; + uv *= scale; + // + float4 col = image.Sample(textureSampler, v_in.uv); + if(show_stars){ + float c = stars(uv); + if(use_transparancy){ + col += float4(c,c,c,c)*(1.0-col.a); + }else{ + col += float4(c,c,c,c);//*(1.0-orig_col.a); + } + + } + + float a = -0.035 * sin(t * 15.0); + float co = cos(a); + float si = sin(a); + mat2 trans1 = mat2(float2(co, si), float2(-si, co)); + float2 trans2 = float2(-15.0 * a, 0.0); +#ifndef OPENGL + uv = mul(uv, trans1); +#else + uv *= trans1; +#endif + uv += trans2; + + for(float i = 0.0; i < 1.0; i += 1.0 / 8.0) { + float ti = mod(t * 9.0 - i * 5.0, 4.0); + float scale = mix(2.0, 0.3, ti / 4.0); + float2 uvs = uv * scale; + float rand = N11(i); + float h = 10.0 + rand * 4.0; + float w = 0.02; + float n = 80.0; + float s = 0.9; + float f = 1.5; + float2 p = float2(mix(-8.0, 8.0, rand), -10.0); + float fw = fireworks(uvs, p, h, n, s, f, ti); + float3 bc = base(uv); + col += float4(bc*fw, fw); + col += shaft(uvs, p, w, h, ti); + if(show_flash){ + if(use_transparancy){ + col += back(uvs, float2(p.x, p.y + h), ti - 1.8)*col.a; + }else{ + col += back(uvs, float2(p.x, p.y + h), ti - 1.8); + } + } + } + + return col; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFisheyeShader { + +[Alias('Set-OBSFisheyeShader','Add-OBSFisheyeShader')] +param( +# Set the center_x_percent of OBSFisheyeShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Single] +$CenterXPercent, +# Set the center_y_percent of OBSFisheyeShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Single] +$CenterYPercent, +# Set the power of OBSFisheyeShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fisheye' +$ShaderNoun = 'OBSFisheyeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float center_x_percent< + string label = "Center x percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform float center_y_percent< + string label = "Center y percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform float power< + string label = "Power"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 1.75; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float2 uv = v_in.uv; + if (power >= 0.0001){ + float b = sqrt(dot(center_pos, center_pos)); + uv = center_pos + normalize(v_in.uv - center_pos) * tan(distance(center_pos, v_in.uv) * power) * b / tan( b * power); + } else if(power <= -0.0001){ + float b; + if (uv_pixel_interval.x < uv_pixel_interval.y){ + b = center_pos.x; + } else { + b = center_pos.y; + } + uv = center_pos + normalize(v_in.uv - center_pos) * atan(distance(center_pos, v_in.uv) * -power * 10.0) * b / atan(-power * b * 10.0); + } + return image.Sample(textureSampler, uv); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFisheyeXyShader { + +[Alias('Set-OBSFisheyeXyShader','Add-OBSFisheyeXyShader')] +param( +# Set the center_x_percent of OBSFisheyeXyShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Single] +$CenterXPercent, +# Set the center_y_percent of OBSFisheyeXyShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Single] +$CenterYPercent, +# Set the power_x of OBSFisheyeXyShader +[Alias('power_x')] +[ComponentModel.DefaultBindingProperty('power_x')] +[Single] +$PowerX, +# Set the power_y of OBSFisheyeXyShader +[Alias('power_y')] +[ComponentModel.DefaultBindingProperty('power_y')] +[Single] +$PowerY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'fisheye-xy' +$ShaderNoun = 'OBSFisheyeXyShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float center_x_percent< + string label = "Center x percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform float center_y_percent< + string label = "Center y percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 50.0; +uniform float power_x< + string label = "Power x"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 1.75; +uniform float power_y< + string label = "Power y"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 1.75; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float2 uv = v_in.uv; + if (power_x >= 0.0001){ + float b = sqrt(dot(center_pos, center_pos)); + uv.x = (center_pos + normalize(v_in.uv - center_pos) * tan(distance(center_pos, v_in.uv) * power_x) * b / tan( b * power_x)).x; + } else if(power_x <= -0.0001){ + float b; + if (uv_pixel_interval.x < uv_pixel_interval.y){ + b = center_pos.x; + } else { + b = center_pos.y; + } + uv.x = (center_pos + normalize(v_in.uv - center_pos) * atan(distance(center_pos, v_in.uv) * -power_x * 10.0) * b / atan(-power_x * b * 10.0)).x; + } + if (power_y >= 0.0001){ + float b = sqrt(dot(center_pos, center_pos)); + uv.y = (center_pos + normalize(v_in.uv - center_pos) * tan(distance(center_pos, v_in.uv) * power_y) * b / tan( b * power_y)).y; + } else if(power_y <= -0.0001){ + float b; + if (uv_pixel_interval.x < uv_pixel_interval.y){ + b = center_pos.x; + } else { + b = center_pos.y; + } + uv.y = (center_pos + normalize(v_in.uv - center_pos) * atan(distance(center_pos, v_in.uv) * -power_y * 10.0) * b / atan(-power_y * b * 10.0)).y; + } + return image.Sample(textureSampler, uv); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFlipShader { + +[Alias('Set-OBSFlipShader','Add-OBSFlipShader')] +param( +# Set the Horizontal of OBSFlipShader +[ComponentModel.DefaultBindingProperty('Horizontal')] +[Management.Automation.SwitchParameter] +$Horizontal, +# Set the Vertical of OBSFlipShader +[ComponentModel.DefaultBindingProperty('Vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Flip' +$ShaderNoun = 'OBSFlipShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// A Simple Flip Shader + +uniform bool Horizontal< + string label = "Flip horizontally"; +> = true; +uniform bool Vertical< + string label = "Flip vertically"; +> = true; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + if (Horizontal == true) { + pos.x = 1 - pos.x; + } + if (Vertical == true) { + pos.y = 1 - pos.y; + } + + return image.Sample(textureSampler, pos); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSFrostedGlassShader { + +[Alias('Set-OBSFrostedGlassShader','Add-OBSFrostedGlassShader')] +param( +# Set the Alpha_Percent of OBSFrostedGlassShader +[Alias('Alpha_Percent')] +[ComponentModel.DefaultBindingProperty('Alpha_Percent')] +[Single] +$AlphaPercent, +# Set the Amount of OBSFrostedGlassShader +[ComponentModel.DefaultBindingProperty('Amount')] +[Single] +$Amount, +# Set the Scale of OBSFrostedGlassShader +[ComponentModel.DefaultBindingProperty('Scale')] +[Single] +$Scale, +# Set the Animate of OBSFrostedGlassShader +[ComponentModel.DefaultBindingProperty('Animate')] +[Management.Automation.SwitchParameter] +$Animate, +# Set the Horizontal_Border of OBSFrostedGlassShader +[Alias('Horizontal_Border')] +[ComponentModel.DefaultBindingProperty('Horizontal_Border')] +[Management.Automation.SwitchParameter] +$HorizontalBorder, +# Set the Border_Offset of OBSFrostedGlassShader +[Alias('Border_Offset')] +[ComponentModel.DefaultBindingProperty('Border_Offset')] +[Single] +$BorderOffset, +# Set the Border_Color of OBSFrostedGlassShader +[Alias('Border_Color')] +[ComponentModel.DefaultBindingProperty('Border_Color')] +[String] +$BorderColor, +# Set the notes of OBSFrostedGlassShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'frosted_glass' +$ShaderNoun = 'OBSFrostedGlassShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Frosted Glass shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter + +uniform float Alpha_Percent< + string label = "Alpha Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; +uniform float Amount< + string label = "Amount"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.03; +uniform float Scale< + string label = "Scale"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 5.1; +uniform bool Animate; +uniform bool Horizontal_Border; +uniform float Border_Offset< + string label = "Border Offset"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.1; +uniform float4 Border_Color = {.8,.5,1.0,1.0}; +uniform string notes< + string widget_type = "info"; +> = "Change shader with Scale and Amount, move Border with Border Offset. Alpha is Opacity of overlay."; + +float rand(float2 co) +{ + float scale = Scale; + if (Animate) + scale *= rand_f; + float2 v1 = float2(92.0,80.0); + float2 v2 = float2(41.0,62.0); + return frac(sin(dot(co.xy ,v1)) + cos(dot(co.xy ,v2)) * scale); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv); + float3 tc = rgba.rgb * Border_Color.rgb; + + float uv_compare = v_in.uv.x; + if (Horizontal_Border) + uv_compare = v_in.uv.y; + + if (uv_compare < (Border_Offset - 0.005)) + { + float2 randv = float2(rand(v_in.uv.yx),rand(v_in.uv.yx)); + tc = image.Sample(textureSampler, v_in.uv + (randv*Amount)).rgb; + } + else if (uv_compare >= (Border_Offset + 0.005)) + { + tc = image.Sample(textureSampler, v_in.uv).rgb; + } + return lerp(rgba,float4(tc,1.0),(Alpha_Percent * 0.01)); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGammaCorrectionShader { + +[Alias('Set-OBSGammaCorrectionShader','Add-OBSGammaCorrectionShader')] +param( +# Set the Red of OBSGammaCorrectionShader +[ComponentModel.DefaultBindingProperty('Red')] +[Single] +$Red, +# Set the Green of OBSGammaCorrectionShader +[ComponentModel.DefaultBindingProperty('Green')] +[Single] +$Green, +# Set the Blue of OBSGammaCorrectionShader +[ComponentModel.DefaultBindingProperty('Blue')] +[Single] +$Blue, +# Set the notes of OBSGammaCorrectionShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gamma_correction' +$ShaderNoun = 'OBSGammaCorrectionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Gamma Correction shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter + +uniform float Red< + string label = "Red"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; +uniform float Green< + string label = "Green"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; +uniform float Blue< + string label = "Blue"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; +uniform string notes< + string widget_type = "info"; +> = "Modify Colors to correct for gamma, use equal values for general correction." + +float4 mainImage(VertData v_in) : TARGET +{ + float3 gammaRGB = float3(clamp(Red,0.1,10.0),clamp(Green,0.1,10.0),clamp(Blue,0.1,10.0)); + float4 c = image.Sample(textureSampler, v_in.uv); + c.rgb = pow(c.rgb, 1.0 / gammaRGB); + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGaussianBlurAdvancedShader { + +[Alias('Set-OBSGaussianBlurAdvancedShader','Add-OBSGaussianBlurAdvancedShader')] +param( +# Set the Directions of OBSGaussianBlurAdvancedShader +[ComponentModel.DefaultBindingProperty('Directions')] +[Single] +$Directions, +# Set the Quality of OBSGaussianBlurAdvancedShader +[ComponentModel.DefaultBindingProperty('Quality')] +[Single] +$Quality, +# Set the Size of OBSGaussianBlurAdvancedShader +[ComponentModel.DefaultBindingProperty('Size')] +[Single] +$Size, +# Set the Mask_Left of OBSGaussianBlurAdvancedShader +[Alias('Mask_Left')] +[ComponentModel.DefaultBindingProperty('Mask_Left')] +[Single] +$MaskLeft, +# Set the Mask_Right of OBSGaussianBlurAdvancedShader +[Alias('Mask_Right')] +[ComponentModel.DefaultBindingProperty('Mask_Right')] +[Single] +$MaskRight, +# Set the Mask_Top of OBSGaussianBlurAdvancedShader +[Alias('Mask_Top')] +[ComponentModel.DefaultBindingProperty('Mask_Top')] +[Single] +$MaskTop, +# Set the Mask_Bottom of OBSGaussianBlurAdvancedShader +[Alias('Mask_Bottom')] +[ComponentModel.DefaultBindingProperty('Mask_Bottom')] +[Single] +$MaskBottom, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-blur-advanced' +$ShaderNoun = 'OBSGaussianBlurAdvancedShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float Directions< + string label = "Directions (16.0)"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 100.0; + float step = 1.0; +> = 16.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower) +uniform float Quality< + string label = "Quality (4.0)"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 100.0; + float step = 1.0; +> = 4.0; // BLUR QUALITY (Default 4.0 - More is better but slower) +uniform float Size< + string label = "Size (8.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 8.0; // BLUR SIZE (Radius) +uniform float Mask_Left< + string label = "Mask left (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Right< + string label = "Mask right (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Top< + string label = "Mask top (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Bottom< + string label = "Mask bottom (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +float4 mainImage(VertData v_in) : TARGET +{ + if(Mask_Left + Mask_Right > 1.0){ + if(v_in.uv.x > Mask_Left || 1.0 - v_in.uv.x > Mask_Right ){ + return image.Sample(textureSampler, v_in.uv); + } + }else{ + if((v_in.uv.x > Mask_Left) && (1.0-v_in.uv.x > Mask_Right)){ + return image.Sample(textureSampler, v_in.uv); + } + } + if(Mask_Top + Mask_Bottom > 1.0){ + if(v_in.uv.y > Mask_Top || 1.0 - v_in.uv.y > Mask_Bottom){ + return image.Sample(textureSampler, v_in.uv); + } + }else { + if((v_in.uv.y > Mask_Top) && (1.0-v_in.uv.y > Mask_Bottom)){ + return image.Sample(textureSampler, v_in.uv); + } + } + + float Pi = 6.28318530718; // Pi*2 + + float4 c = image.Sample(textureSampler, v_in.uv); + float4 oc = c; + float transparent = oc.a; + int count = 1; + float samples = oc.a; + + // Blur calculations + [loop] for( float d=0.0; d 0.0) + c /= samples; + + c.a = transparent / count; + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGaussianBlurShader { + +[Alias('Set-OBSGaussianBlurShader','Add-OBSGaussianBlurShader')] +param( +# Set the ViewProj of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the imageSize of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('imageSize')] +[Single[]] +$ImageSize, +# Set the imageTexel of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('imageTexel')] +[Single[]] +$ImageTexel, +# Set the u_radius of OBSGaussianBlurShader +[Alias('u_radius')] +[ComponentModel.DefaultBindingProperty('u_radius')] +[Int32] +$URadius, +# Set the u_diameter of OBSGaussianBlurShader +[Alias('u_diameter')] +[ComponentModel.DefaultBindingProperty('u_diameter')] +[Int32] +$UDiameter, +# Set the u_texelDelta of OBSGaussianBlurShader +[Alias('u_texelDelta')] +[ComponentModel.DefaultBindingProperty('u_texelDelta')] +[Single[]] +$UTexelDelta, +# Set the elapsed_time of OBSGaussianBlurShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSGaussianBlurShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSGaussianBlurShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSGaussianBlurShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the kernel of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('kernel')] +[String] +$Kernel, +# Set the kernelTexel of OBSGaussianBlurShader +[ComponentModel.DefaultBindingProperty('kernelTexel')] +[Single[]] +$KernelTexel, +# Set the pixel_size of OBSGaussianBlurShader +[Alias('pixel_size')] +[ComponentModel.DefaultBindingProperty('pixel_size')] +[Single] +$PixelSize, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-blur' +$ShaderNoun = 'OBSGaussianBlurShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro March 11, 2022 +// OBS Default +uniform float4x4 ViewProj; + +// Settings (Shared) +uniform texture2d image; +uniform float2 imageSize; +uniform float2 imageTexel; +uniform int u_radius; +uniform int u_diameter; +uniform float2 u_texelDelta; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; + +// Settings (Private) +//uniform float registerkernel[25]; +uniform texture2d kernel; +uniform float2 kernelTexel; +uniform float pixel_size = 1.0; + +sampler_state pointClampSampler { + Filter = Point; + AddressU = Clamp; + AddressV = Clamp; +}; + +sampler_state bilinearClampSampler { + Filter = Bilinear; + AddressU = Clamp; + AddressV = Clamp; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float Gaussian(float x, float o) +{ + float pivalue = 3.1415926535897932384626433832795; + return (1.0 / (o * sqrt(2.0 * pivalue))) * exp((-(x * x)) / (2.0 * (o * o))); +} + +VertData VSDefault(VertData vert_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(vert_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = vert_in.uv; + return vert_out; +} + +float4 InternalGaussian(float2 p_uv, float2 p_uvStep, int p_radius, + texture2d p_image, float2 p_imageTexel) + { + float l_gauss = Gaussian(0.0, 1.0); + float4 l_value = image.Sample(pointClampSampler, p_uv) * l_gauss; + float2 l_uvoffset = float2(0, 0); + for (int k = 1; k <= p_radius; k++) { + l_uvoffset += p_uvStep; + float l_g = Gaussian(float(k), uv_pixel_interval.x + uv_pixel_interval.y); + float4 l_p = image.Sample(pointClampSampler, p_uv + l_uvoffset) * l_g; + float4 l_n = image.Sample(pointClampSampler, p_uv - l_uvoffset) * l_g; + l_value += l_p + l_n; + l_gauss += l_g; + } + l_value = l_value * (1.0 / l_gauss); + return l_value; +} + +float4 InternalGaussianPrecalculated(float2 p_uv, float2 p_uvStep, int p_radius, + texture2d p_image, float2 p_imageTexel, + texture2d p_kernel, float2 p_kernelTexel) + { + float4 l_value = image.Sample(pointClampSampler, p_uv) + * kernel.Sample(pointClampSampler, float2(0, 0)).r; + float2 l_uvoffset = float2(0, 0); + for (int k = 1; k <= p_radius; k++) { + l_uvoffset += p_uvStep; + float l_g = kernel.Sample(pointClampSampler, p_kernelTexel * k).r; + float4 l_p = image.Sample(pointClampSampler, p_uv + l_uvoffset) * l_g; + float4 l_n = image.Sample(pointClampSampler, p_uv - l_uvoffset) * l_g; + l_value += l_p + l_n; + } + return l_value; +} + +/*float4 InternalGaussianPrecalculatedNVOptimized(float2 p_uv, int pixel_size, + texture2d p_image, float2 p_imageTexel, + texture2d p_kernel, float2 p_kernelTexel) + { + if (pixel_size % 2 == 0) { + float4 l_value = image.Sample(pointClampSampler, p_uv) + * kernel.Sample(pointClampSampler, float2(0, 0)).r; + float2 l_uvoffset = p_texel; + float2 l_koffset = p_kernelTexel; + for (int k = 1; k <= pixel_size; k++) { + float l_g = kernel.Sample(pointClampSampler, l_koffset).r; + float4 l_p = image.Sample(pointClampSampler, p_uv + l_uvoffset) * l_g; + float4 l_n = image.Sample(pointClampSampler, p_uv - l_uvoffset) * l_g; + l_value += l_p + l_n; + l_uvoffset += p_texel; + l_koffset += p_kernelTexel; + } + return l_value; + } else { + return InternalGaussianPrecalculated(p_uv, p_image, p_texel, pixel_size, p_kernel, p_kerneltexel);) + } +}*/ + +float4 PSGaussian(VertData vert_in) : TARGET +{ + + float4 color = image.Sample(pointClampSampler, vert_in.uv); + + float intensity = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + + return InternalGaussian(vert_in.uv, uv_offset, int(sqrt((uv_pixel_interval.x * uv_pixel_interval.x) + (uv_pixel_interval.y * uv_pixel_interval.y))), image, uv_scale); + + /* + return InternalGaussianPrecalculated( + vert_in.uv, u_texelDelta, u_radius, + image, imageTexel, + kernel, kernelTexel); + */ + + /* + return InternalGaussianPrecalculatedNVOptimize( + vert_in.uv, u_texelDelta, u_radius, + image, imageTexel, + kernel, kernelTexel); + */ +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vert_in); + pixel_shader = PSGaussian(vert_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGaussianBlurSimpleShader { + +[Alias('Set-OBSGaussianBlurSimpleShader','Add-OBSGaussianBlurSimpleShader')] +param( +# Set the Strength of OBSGaussianBlurSimpleShader +[ComponentModel.DefaultBindingProperty('Strength')] +[Int32] +$Strength, +# Set the Mask_Left of OBSGaussianBlurSimpleShader +[Alias('Mask_Left')] +[ComponentModel.DefaultBindingProperty('Mask_Left')] +[Single] +$MaskLeft, +# Set the Mask_Right of OBSGaussianBlurSimpleShader +[Alias('Mask_Right')] +[ComponentModel.DefaultBindingProperty('Mask_Right')] +[Single] +$MaskRight, +# Set the Mask_Top of OBSGaussianBlurSimpleShader +[Alias('Mask_Top')] +[ComponentModel.DefaultBindingProperty('Mask_Top')] +[Single] +$MaskTop, +# Set the Mask_Bottom of OBSGaussianBlurSimpleShader +[Alias('Mask_Bottom')] +[ComponentModel.DefaultBindingProperty('Mask_Bottom')] +[Single] +$MaskBottom, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-blur-simple' +$ShaderNoun = 'OBSGaussianBlurSimpleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int Strength< + string label = "Strength (1)"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 25; + int step = 1; +> = 1.0; +uniform float Mask_Left< + string label = "Mask left (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Right< + string label = "Mask right (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Top< + string label = "Mask top (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float Mask_Bottom< + string label = "Mask bottom (1.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +float4 mainImage(VertData v_in) : TARGET +{ + if(Strength <= 0) + return image.Sample(textureSampler, v_in.uv); + + if(Mask_Left + Mask_Right > 1.0){ + if(v_in.uv.x > Mask_Left || 1.0 - v_in.uv.x > Mask_Right ){ + return image.Sample(textureSampler, v_in.uv); + } + }else{ + if((v_in.uv.x > Mask_Left) && (1.0-v_in.uv.x > Mask_Right)){ + return image.Sample(textureSampler, v_in.uv); + } + } + if(Mask_Top + Mask_Bottom > 1.0){ + if(v_in.uv.y > Mask_Top || 1.0 - v_in.uv.y > Mask_Bottom){ + return image.Sample(textureSampler, v_in.uv); + } + }else { + if((v_in.uv.y > Mask_Top) && (1.0-v_in.uv.y > Mask_Bottom)){ + return image.Sample(textureSampler, v_in.uv); + } + } + + float Pi = 6.28318530718; // Pi*2 + + float Directions = float(Strength) * 4.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower) + float Quality = float(Strength); // BLUR QUALITY (Default 4.0 - More is better but slower) + float Size = float(Strength) * float(Strength); // BLUR SIZE (Radius) + + float4 c = image.Sample(textureSampler, v_in.uv); + float4 oc = c; + float transparent = oc.a; + int count = 1; + float samples = oc.a; + + // Blur calculations + [loop] for( float d=0.0; d 0.0) + c /= samples; + + c.a = transparent / count; + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGaussianExampleShader { + +[Alias('Set-OBSGaussianExampleShader','Add-OBSGaussianExampleShader')] +param( +# Set the ViewProj of OBSGaussianExampleShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSGaussianExampleShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSGaussianExampleShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSGaussianExampleShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSGaussianExampleShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_size of OBSGaussianExampleShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the uv_pixel_interval of OBSGaussianExampleShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the initial_image of OBSGaussianExampleShader +[Alias('initial_image')] +[ComponentModel.DefaultBindingProperty('initial_image')] +[String] +$InitialImage, +# Set the before_image of OBSGaussianExampleShader +[Alias('before_image')] +[ComponentModel.DefaultBindingProperty('before_image')] +[String] +$BeforeImage, +# Set the after_image of OBSGaussianExampleShader +[Alias('after_image')] +[ComponentModel.DefaultBindingProperty('after_image')] +[String] +$AfterImage, +# Set the text_color of OBSGaussianExampleShader +[Alias('text_color')] +[ComponentModel.DefaultBindingProperty('text_color')] +[String] +$TextColor, +# Set the max_distance of OBSGaussianExampleShader +[Alias('max_distance')] +[ComponentModel.DefaultBindingProperty('max_distance')] +[Single] +$MaxDistance, +# Set the exp of OBSGaussianExampleShader +[ComponentModel.DefaultBindingProperty('exp')] +[Single] +$Exp, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-example' +$ShaderNoun = 'OBSGaussianExampleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_size; +uniform float2 uv_pixel_interval; + +/*-------------------------. +| :: Texture and sampler:: | +''-------------------------*/ + + +uniform texture2d initial_image; +sampler_state initial_sampler +{ + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; + texture2d = initial_image; +}; + +uniform texture2d before_image; +sampler_state before_sampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; + texture2d = before_image; +}; + +uniform texture2d after_image; +sampler_state after_sampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; + texture2d = after_image; +}; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +struct ColorData { + float4 initial_color : SV_TARGET0; + float4 before_color: SV_TARGET1; + float4 after_color : SV_TARGET2; +}; + +uniform float4 text_color; +uniform float max_distance; +uniform float exp; + +#define PI 3.141592653589793238462643383279502884197169399375105820974 + +VertData mainTransform(VertData v_in) +{ + VertData vert_out = v_in; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +float4 grayscale(float4 color) +{ + float grayscale = color.r * 0.3 + color.g * 0.59 + color.b * 0.11; + return float4(grayscale, grayscale, grayscale, color.a); +} + +float4 gaussian(VertData v_in, float angle) +{ + float rad = radians(angle); + float2 dir = float2(sin(rad), cos(rad)) * (uv_pixel_interval * max_distance); + float2 dir_2 = dir * 2.0; + float4 ret = image.Sample(textureSampler, v_in.uv) * 0.375; + + float4 px_away = image.Sample(textureSampler, v_in.uv + dir); + px_away += image.Sample(textureSampler, v_in.uv - dir); + px_away *= 0.25; + + float4 px_2_away = image.Sample(textureSampler, v_in.uv + dir_2); + px_2_away += image.Sample(textureSampler, v_in.uv + dir_2); + px_2_away *= 0.0625; + + return ret + px_away + px_2_away; +} + +ColorData setColorData(VertData v_in): SV_TARGET0 +{ + //string RenderTarget0 = "initial_image"; + ColorData cd;// = (ColorData)0; + cd.initial_color = image.Sample(textureSampler, v_in.uv); + cd.before_color = float4(0.0,0.0,1.0,1.0); + cd.after_color = float4(1.0,0.0,0.0,1.0); + return cd; +} + +float4 blurImageH(VertData v_in) : SV_TARGET1 +{ + //string RenderTarget1 = "before_image"; + //ColorData cd = (ColorData)0; + //cd.initial_color = image.Sample(textureSampler, v_in.uv); + //cd.before_color = float4(0.0,0.0,1.0,1.0);//gaussian(v_in, 0); + return float4(0.0,0.0,1.0,1.0); +} + +float4 blurImageV(VertData v_in) : SV_TARGET2 +{ + //string RenderTarget2 = "after_image"; + //ColorData cd = (ColorData)0; + //cd.after_color = float4(1.0,0.0,0.0,1.0); //gaussian(v_in, 90); + return float4(1.0,0.0,0.0,1.0); +} + +float4 mainImage(VertData v_in) : SV_TARGET0 +{ + float4 color; + ColorData cd;// = (ColorData)0; + + //cd.initial_color = initial_image.Sample(initial_sampler, v_in.uv); + //cd.before_color = before_image.Sample(before_sampler, v_in.uv); + cd.after_color = after_image.Sample(before_sampler, v_in.uv); + + if (max_distance <= 5) { + color = cd.before_color; + } + else { + color = cd.after_color;//image.Sample(textureSampler, v_in.uv); + } + + float4 gray = grayscale(color); + float4 gray_text = grayscale(text_color); + float d = distance(gray.rgb, gray_text.rgb); + if (d <= dot(max_distance, uv_pixel_interval.x * max_distance)){ + float d_c = pow(d*2, exp) / pow(2, exp); + d_c = sin(d_c * PI / 2); + d = pow(1.0 - sin(d * PI/4), exp); + + color.rgb = float3(d,d,d); + } + + return color; +} + +technique Draw +{ + pass pre + { + vertex_shader = mainTransform(v_in); + pixel_shader = setColorData(v_in); + } + + pass b0 + { + vertex_shader = mainTransform(v_in); + pixel_shader = blurImageH(v_in); + } + + pass b1 + { + vertex_shader = mainTransform(v_in); + pixel_shader = blurImageV(v_in); + } + + pass p0 + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } + +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGaussianSimpleShader { + +[Alias('Set-OBSGaussianSimpleShader','Add-OBSGaussianSimpleShader')] +param( +# Set the ViewProj of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSGaussianSimpleShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSGaussianSimpleShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSGaussianSimpleShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSGaussianSimpleShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSGaussianSimpleShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSGaussianSimpleShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSGaussianSimpleShader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSGaussianSimpleShader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSGaussianSimpleShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the samples of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('samples')] +[Int32] +$Samples, +# Set the LOD of OBSGaussianSimpleShader +[ComponentModel.DefaultBindingProperty('LOD')] +[Int32] +$LOD, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gaussian-simple' +$ShaderNoun = 'OBSGaussianSimpleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Single-pass gaussian blur - fast shader modified by Charles Fettinger for use with obs-shaderfilter 7/2020 v.01 +// https://github.com/Oncorporation/obs-shaderfilter +// https://www.shadertoy.com/view/ltScRG Converted inspiration + +//Section to converting GLSL to HLSL - can delete +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp +#define iTime float + +/* +**Shaders have these variables pre loaded by the plugin** +**this section can be deleted** + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; +*/ + +// 16x acceleration of https://www.shadertoy.com/view/4tSyzy +// by applying gaussian at intermediate MIPmap level. + +uniform int samples< + string label = "Samples"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 25; + int step = 1; +> = 16; +uniform int LOD< + string label = "LOD"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 25; + int step = 1; +> = 2; // gaussian done on MIPmap at scale LOD + +float gaussian(vec2 i) +{ + float sigma = (float(samples) * .25); + return exp(-.5 * dot(i /= sigma, i)) / (6.28 * sigma * sigma); +} + +vec4 blur(vec2 U, vec2 scale) +{ + vec4 O = vec4(0,0,0,0); + int sLOD = (1 << LOD); // tile size = 2^LOD + int s = samples / sLOD; + + for (int i = 0; i < s * s; i++) + { + vec2 d = vec2(i % s, i / s) * float(sLOD) - float(samples) * 0.5; + O += gaussian(d) * image.SampleLevel(textureSampler, U + (scale * gaussian(d)), float(LOD)); + //O += gaussian(d) * image.Sample(textureSampler, U + i * d * float(LOD)); + //O += image.Sample(textureSampler, U + gaussian(d) * float(LOD)); + } + + return O / O.a; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 iResolution = uv_scale;//uv_size * uv_scale + uv_offset; + //float2 iResolution = 1 - v_in.uv + 1.0; + //float4 rgba = image.SampleLevel(textureSampler, v_in.uv * uv_scale + uv_offset,4.0); + return blur(v_in.uv / iResolution, 1.0 / iResolution); + //return rgba; +} + + + + + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGbCameraShader { + +[Alias('Set-OBSGbCameraShader','Add-OBSGbCameraShader')] +param( +# Set the pixelSize of OBSGbCameraShader +[ComponentModel.DefaultBindingProperty('pixelSize')] +[Single] +$PixelSize, +# Set the dither_factor of OBSGbCameraShader +[Alias('dither_factor')] +[ComponentModel.DefaultBindingProperty('dither_factor')] +[Single] +$DitherFactor, +# Set the alternative_bayer of OBSGbCameraShader +[Alias('alternative_bayer')] +[ComponentModel.DefaultBindingProperty('alternative_bayer')] +[Management.Automation.SwitchParameter] +$AlternativeBayer, +# Set the brightness of OBSGbCameraShader +[ComponentModel.DefaultBindingProperty('brightness')] +[Single] +$Brightness, +# Set the contrast of OBSGbCameraShader +[ComponentModel.DefaultBindingProperty('contrast')] +[Single] +$Contrast, +# Set the gamma of OBSGbCameraShader +[ComponentModel.DefaultBindingProperty('gamma')] +[Single] +$Gamma, +# Set the color_1 of OBSGbCameraShader +[Alias('color_1')] +[ComponentModel.DefaultBindingProperty('color_1')] +[String] +$Color1, +# Set the color_2 of OBSGbCameraShader +[Alias('color_2')] +[ComponentModel.DefaultBindingProperty('color_2')] +[String] +$Color2, +# Set the color_3 of OBSGbCameraShader +[Alias('color_3')] +[ComponentModel.DefaultBindingProperty('color_3')] +[String] +$Color3, +# Set the color_4 of OBSGbCameraShader +[Alias('color_4')] +[ComponentModel.DefaultBindingProperty('color_4')] +[String] +$Color4, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gb-camera' +$ShaderNoun = 'OBSGbCameraShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +/* + * ------------------------------------------------------------ + * "THE BEERWARE LICENSE" (Revision 42): + * maple wrote this code. As long as you retain this + * notice, you can do whatever you want with this stuff. If we + * meet someday, and you think this stuff is worth it, you can + * buy me a beer in return. + * ------------------------------------------------------------ + * from https://www.shadertoy.com/view/3tSXRh + * adopted for OBS by Exeldro + * ------------------------------------------------------------ + */ + +uniform float pixelSize< + string label = "Pixel Size"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 50.0; + float step = 0.1; +> = 3.0; + +uniform float dither_factor< + string label = "Dither Factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 0.8; + +uniform bool alternative_bayer; + +uniform float brightness< + string label = "Brightness"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; +uniform float contrast< + string label = "Contrast"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform float gamma< + string label = "Gamma"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 0.6; + +uniform float4 color_1 = {0.18, 0, 0.18, 1.0}; +uniform float4 color_2 = {0.37, 0.15, 0.47, 1.0}; +uniform float4 color_3 = {0.97, 0.56, 0.12, 1.0}; +uniform float4 color_4 = {0.97, 0.94, 0.53, 1.0}; + +// quantize coords to low resolution +float2 pixelize(float2 uv, float2 pixelSize) { + float2 factor = pixelSize / uv_size; + return floor(uv / factor) * factor; +} + +float3 colorLUT(float3 color) { + float gray = color.r*0.3 + color.g*0.59 + color.b*0.11; + if(gray < 0.25) + return color_1.rgb; + if(gray < 0.50) + return color_2.rgb; + if(gray < 0.75) + return color_3.rgb; + return color_4.rgb; +} + +// adjust brightness, contrast and gamma levels of a color +float3 levels(float3 color, float brightness, float contrast, float3 gamma) { + float3 value = (color - 0.5) * contrast + 0.5; + value = clamp(value + brightness, 0.0, 1.0); + return clamp(float3(pow(abs(value.r), gamma.x),pow(abs(value.g), gamma.y),pow(abs(value.b), gamma.z)), 0.0, 1.0); +} +float3 levels(float3 color, float brightness, float contrast, float gamma) { + return levels(color, brightness, contrast, float3(gamma, gamma, gamma)); +} + +// applies the dithering filter to a color map +float3 dither8x8(float2 coord, float3 color, float2 pixelSize) { + // reduces pixel space to the selected pixel size + float2 pixelCoord = floor((coord * uv_size) / pixelSize + float2(0.5, 0.5)); + + // applies the bayer matrix filter to the color map + pixelCoord = pixelCoord - 8.0 * floor(pixelCoord/8.0); + int index = int(pixelCoord.x + (pixelCoord.y * 8.0)); + float bayer; + if (alternative_bayer){ +#ifdef OPENGL + const int[64] bayer8 = int[64]( +#else + const int bayer8[64] = { +#endif + 0, 32, 8, 40, 2, 34, 10, 42, /* 8x8 Bayer ordered dithering */ + 48, 16, 56, 24, 50, 18, 58, 26, /* pattern. Each input pixel */ + 12, 44, 4, 36, 14, 46, 6, 38, /* is scaled to the 0..63 range */ + 60, 28, 52, 20, 62, 30, 54, 22, /* before looking in this table */ + 3, 35, 11, 43, 1, 33, 9, 41, /* to determine the action. */ + 51, 19, 59, 27, 49, 17, 57, 25, + 15, 47, 7, 39, 13, 45, 5, 37, + 63, 31, 55, 23, 61, 29, 53, 21 +#ifdef OPENGL + ); +#else + }; +#endif + bayer = (bayer8[index]-31.0)/32.0; + } else { +#ifdef OPENGL + const int[64] bayer8 = int[64]( +#else + const int bayer8[64] = { +#endif + 0, 48, 12, 60, 3, 51, 15, 63, + 32, 16, 44, 28, 35, 19, 47, 31, + 8, 56, 4, 52, 11, 59, 7, 55, + 40, 24, 36, 20, 43, 27, 39, 23, + 2, 50, 14, 62, 1, 49, 13, 61, + 34, 18, 46, 30, 33, 17, 45, 29, + 10, 58, 6, 54, 9, 57, 5, 53, + 42, 26, 38, 22, 41, 25, 37, 21 +#ifdef OPENGL + ); +#else + }; +#endif + bayer = (bayer8[index]-31.0)/32.0; + } + float3 bayerColor = (color + float3(bayer,bayer,bayer) * (dither_factor / 8.0)); + // limits it to the selected palette + color = colorLUT(bayerColor); + + return color; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 texcoord = pixelize(v_in.uv, float2(pixelSize,pixelSize)); + texcoord = clamp(texcoord, 0.001, 1.0); + float4 c = image.Sample(textureSampler, texcoord); + float3 color = c.rgb; + + color = levels(color, brightness, contrast, float3(gamma, gamma, gamma)); + + color = dither8x8(texcoord, color, float2(pixelSize,pixelSize)); + + return float4(color.r, color.g, color.b, c.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGlassShader { + +[Alias('Set-OBSGlassShader','Add-OBSGlassShader')] +param( +# Set the Alpha_Percent of OBSGlassShader +[Alias('Alpha_Percent')] +[ComponentModel.DefaultBindingProperty('Alpha_Percent')] +[Single] +$AlphaPercent, +# Set the Offset_Amount of OBSGlassShader +[Alias('Offset_Amount')] +[ComponentModel.DefaultBindingProperty('Offset_Amount')] +[Single] +$OffsetAmount, +# Set the xSize of OBSGlassShader +[ComponentModel.DefaultBindingProperty('xSize')] +[Int32] +$XSize, +# Set the ySize of OBSGlassShader +[ComponentModel.DefaultBindingProperty('ySize')] +[Int32] +$YSize, +# Set the Reflection_Offset of OBSGlassShader +[Alias('Reflection_Offset')] +[ComponentModel.DefaultBindingProperty('Reflection_Offset')] +[Int32] +$ReflectionOffset, +# Set the Horizontal_Border of OBSGlassShader +[Alias('Horizontal_Border')] +[ComponentModel.DefaultBindingProperty('Horizontal_Border')] +[Management.Automation.SwitchParameter] +$HorizontalBorder, +# Set the Border_Offset of OBSGlassShader +[Alias('Border_Offset')] +[ComponentModel.DefaultBindingProperty('Border_Offset')] +[Single] +$BorderOffset, +# Set the Border_Color of OBSGlassShader +[Alias('Border_Color')] +[ComponentModel.DefaultBindingProperty('Border_Color')] +[String] +$BorderColor, +# Set the Glass_Color of OBSGlassShader +[Alias('Glass_Color')] +[ComponentModel.DefaultBindingProperty('Glass_Color')] +[String] +$GlassColor, +# Set the notes of OBSGlassShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'glass' +$ShaderNoun = 'OBSGlassShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Glass shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGl by Q-mii & Exeldro February 25, 2022 +uniform float Alpha_Percent< + string label = "Alpha Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; +uniform float Offset_Amount< + string label = "Offset Amount"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 0.8; +uniform int xSize< + string label = "x Size"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 100; + int step = 1; +> = 8; +uniform int ySize< + string label = "y Size"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 100; + int step = 1; +> = 8; +uniform int Reflection_Offset< + string label = "Reflection Offset"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 2; +uniform bool Horizontal_Border; +uniform float Border_Offset< + string label = "Border Offset"; + string widget_type = "slider"; + float minimum = -0.01; + float maximum = 1.01; + float step = 0.01; +> = 0.5; +uniform float4 Border_Color = {.8,.5,1.0,1.0}; +uniform float4 Glass_Color; +uniform string notes< + string widget_type = "info"; +> = "xSize, ySize are for distortion. Offset Amount and Reflection Offset change glass properties. Alpha is Opacity of overlay."; + +float mod(float a, float b){ + float d = a / b; + return (d-floor(d))*b; +} + +float4 mainImage(VertData v_in) : TARGET +{ + + + int xSubPixel = int(mod((v_in.uv.x * uv_size.x) , float(clamp(xSize,1,100)))); + int ySubPixel = int(mod((v_in.uv.y * uv_size.y) , float(clamp(ySize,1,100)))); + float2 offsets = float2(Offset_Amount * xSubPixel / uv_size.x, Offset_Amount * ySubPixel / uv_size.y); + float2 uv = v_in.uv + offsets; + float2 uv2 = float2(uv.x + (Reflection_Offset / uv_size.x),uv.y + (Reflection_Offset / uv_size.y)); + + float4 rgba = image.Sample(textureSampler, v_in.uv); + float4 rgba_output = float4(rgba.rgb * Border_Color.rgb, rgba.a); + rgba = image.Sample(textureSampler, uv); + float4 rgba_glass = image.Sample(textureSampler, uv2); + + float uv_compare = v_in.uv.x; + if (Horizontal_Border) + uv_compare = v_in.uv.y; + + if (uv_compare < (Border_Offset - 0.005)) + { + rgba_output = (rgba + rgba_glass) *.5 * Glass_Color; + } + else if (uv_compare >= (Border_Offset + 0.005)) + { + rgba_output = image.Sample(textureSampler, v_in.uv); + } + return lerp(rgba,rgba_output,(Alpha_Percent * 0.01)); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGlitchAnalogShader { + +[Alias('Set-OBSGlitchAnalogShader','Add-OBSGlitchAnalogShader')] +param( +# Set the scan_line_jitter_displacement of OBSGlitchAnalogShader +[Alias('scan_line_jitter_displacement')] +[ComponentModel.DefaultBindingProperty('scan_line_jitter_displacement')] +[Single] +$ScanLineJitterDisplacement, +# Set the scan_line_jitter_threshold_percent of OBSGlitchAnalogShader +[Alias('scan_line_jitter_threshold_percent')] +[ComponentModel.DefaultBindingProperty('scan_line_jitter_threshold_percent')] +[Int32] +$ScanLineJitterThresholdPercent, +# Set the vertical_jump_amount of OBSGlitchAnalogShader +[Alias('vertical_jump_amount')] +[ComponentModel.DefaultBindingProperty('vertical_jump_amount')] +[Single] +$VerticalJumpAmount, +# Set the vertical_speed of OBSGlitchAnalogShader +[Alias('vertical_speed')] +[ComponentModel.DefaultBindingProperty('vertical_speed')] +[Single] +$VerticalSpeed, +# Set the horizontal_shake of OBSGlitchAnalogShader +[Alias('horizontal_shake')] +[ComponentModel.DefaultBindingProperty('horizontal_shake')] +[Single] +$HorizontalShake, +# Set the color_drift_amount of OBSGlitchAnalogShader +[Alias('color_drift_amount')] +[ComponentModel.DefaultBindingProperty('color_drift_amount')] +[Single] +$ColorDriftAmount, +# Set the color_drift_speed of OBSGlitchAnalogShader +[Alias('color_drift_speed')] +[ComponentModel.DefaultBindingProperty('color_drift_speed')] +[Single] +$ColorDriftSpeed, +# Set the pulse_speed_percent of OBSGlitchAnalogShader +[Alias('pulse_speed_percent')] +[ComponentModel.DefaultBindingProperty('pulse_speed_percent')] +[Int32] +$PulseSpeedPercent, +# Set the alpha_percent of OBSGlitchAnalogShader +[Alias('alpha_percent')] +[ComponentModel.DefaultBindingProperty('alpha_percent')] +[Int32] +$AlphaPercent, +# Set the rotate_colors of OBSGlitchAnalogShader +[Alias('rotate_colors')] +[ComponentModel.DefaultBindingProperty('rotate_colors')] +[Management.Automation.SwitchParameter] +$RotateColors, +# Set the Apply_To_Alpha_Layer of OBSGlitchAnalogShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the Replace_Image_Color of OBSGlitchAnalogShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Apply_To_Specific_Color of OBSGlitchAnalogShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSGlitchAnalogShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the notes of OBSGlitchAnalogShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'glitch_analog' +$ShaderNoun = 'OBSGlitchAnalogShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// analog glitch shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float scan_line_jitter_displacement< + string label = "Scan line jitter"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 33.0; // (displacement, threshold) +uniform int scan_line_jitter_threshold_percent< + string label = "scan line jitter threshold percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 95; +uniform float vertical_jump_amount< + string label = "Vertical jump amount"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>; +uniform float vertical_speed< + string label = "Vertical speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>;// (amount, speed) +uniform float horizontal_shake< + string label = "Horizontal shake"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>; +uniform float color_drift_amount< + string label = "Color drift amount"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>; +uniform float color_drift_speed< + string label = "Color drift speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +>;// (amount, speed) +uniform int pulse_speed_percent< + string label = "Pulse speed percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform int alpha_percent< + string label = "Aplha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform bool rotate_colors; +uniform bool Apply_To_Alpha_Layer = false; +uniform bool Replace_Image_Color; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform string notes< + string widget_type = "info"; +> ="play with settings!"; + + +float nrand(float x, float y) +{ + float value = dot(float2(x, y), float2(12.9898 , 78.233 )); + return frac(sin(value) * 43758.5453); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float speed = pulse_speed_percent * 0.01; + float alpha = alpha_percent * 0.01; + float scan_line_jitter_threshold = scan_line_jitter_threshold_percent * 0.01; + float u = v_in.uv.x; + float v = v_in.uv.y; + float t = sin(elapsed_time * speed) * 2 - 1; + float4 rgba = image.Sample(textureSampler, v_in.uv); + + // Scan line jitter + float jitter = nrand(v, t) * 2 - 1; + jitter *= step(scan_line_jitter_threshold, abs(jitter)) * scan_line_jitter_displacement; + + // Vertical jump + float jump = lerp(v, frac(v + (t * vertical_speed)), vertical_jump_amount); + + // Horizontal shake + float shake = ((t * (u + rand_f)/2) - 0.5) * horizontal_shake; + + //// Color drift + float drift = sin(jump + color_drift_speed) * color_drift_amount; + + float2 src1 = float2(rgba.x, rgba.z) * clamp(frac(float2(u + jitter + shake, jump)), -10.0, 10.0); + float2 src2 = float2(rgba.y, rgba.w) * frac(float2(u + jitter + shake + drift, jump)); + + if(rotate_colors) + { + // get general time number between 0 and 4 + float tx = (t + 1) * 2; + // 3 steps c1->c2, c2->c3, c3->c1 + //when between 0 - 1 only c1 rises then falls + //(min(tx, 2.0) * 0.5) range between 0-2 converted to 0-1-0 + src1.x = lerp(src1.x, rgba.x, clamp((min(tx, 2.0) * 0.5),0.0,0.5)); + //((min(max(1.0, tx),3.0) - 1) * 0.5) range between 1-3 converted to 0-1-0 + src2.x = lerp(src2.x, rgba.y, clamp(((min(max(1.0, tx),3.0) - 1) * 0.5),0.0,0.5)); + //((min(2.0, tx) -2) * 0.5) range between 2 and 4 converted to 0-1-0 + src1.y = lerp(src1.y, rgba.z, clamp(((min(2.0, tx) -2) * 0.5),0.0,0.5)); + + } + + float4 color = rgba; + float4 original_color = color; + rgba = float4(src1.x, src2.x, src1.y, alpha); + + if (Apply_To_Alpha_Layer) + { + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, rgba * color, alpha); + } + + if (Apply_To_Specific_Color) + { + color = original_color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, alpha); + } + + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGlitchShader { + +[Alias('Set-OBSGlitchShader','Add-OBSGlitchShader')] +param( +# Set the AMT of OBSGlitchShader +[ComponentModel.DefaultBindingProperty('AMT')] +[Single] +$AMT, +# Set the SPEED of OBSGlitchShader +[ComponentModel.DefaultBindingProperty('SPEED')] +[Single] +$SPEED, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'glitch' +$ShaderNoun = 'OBSGlitchShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/MtXBDs +//inputs +uniform float AMT< + string label = "AMT"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.2; //0 - 1 glitch amount +uniform float SPEED< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.6; //0 - 1 speed + +//2D (returns 0 - 1) +float random2d(float2 n) { + return frac(sin(dot(n, float2(12.9898, 4.1414))) * 43758.5453); +} + +float randomRange (in float2 seed, in float min, in float max) { + return min + random2d(seed) * (max - min); +} + +// return 1 if v inside 1d range +float insideRange(float v, float bottom, float top) { + return step(bottom, v) - step(top, v); +} + + + +float4 mainImage(VertData v_in) : TARGET +{ + + float time = floor(elapsed_time * SPEED * 60.0); + float2 uv = v_in.uv; + + //copy orig + float4 outCol = image.Sample(textureSampler, uv); + + //randomly offset slices horizontally + float maxOffset = AMT/2.0; + for (float i = 0.0; i < 10.0 * AMT; i += 1.0) { + float sliceY = random2d(float2(time , 2345.0 + float(i))); + float sliceH = random2d(float2(time , 9035.0 + float(i))) * 0.25; + float hOffset = randomRange(float2(time , 9625.0 + float(i)), -maxOffset, maxOffset); + float2 uvOff = uv; + uvOff.x += hOffset; + if (insideRange(uv.y, sliceY, frac(sliceY+sliceH)) == 1.0 ){ + outCol = image.Sample(textureSampler, uvOff); + } + } + + //do slight offset on one entire channel + float maxColOffset = AMT/6.0; + float rnd = random2d(float2(time , 9545.0)); + float2 colOffset = float2(randomRange(float2(time , 9545.0),-maxColOffset,maxColOffset), + randomRange(float2(time , 7205.0),-maxColOffset,maxColOffset)); + if (rnd < 0.33){ + outCol.r = image.Sample(textureSampler, uv + colOffset).r; + + }else if (rnd < 0.66){ + outCol.g = image.Sample(textureSampler, uv + colOffset).g; + + } else{ + outCol.b = image.Sample(textureSampler, uv + colOffset).b; + } + + return outCol; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGlowShader { + +[Alias('Set-OBSGlowShader','Add-OBSGlowShader')] +param( +# Set the glow_percent of OBSGlowShader +[Alias('glow_percent')] +[ComponentModel.DefaultBindingProperty('glow_percent')] +[Int32] +$GlowPercent, +# Set the blur of OBSGlowShader +[ComponentModel.DefaultBindingProperty('blur')] +[Int32] +$Blur, +# Set the min_brightness of OBSGlowShader +[Alias('min_brightness')] +[ComponentModel.DefaultBindingProperty('min_brightness')] +[Int32] +$MinBrightness, +# Set the max_brightness of OBSGlowShader +[Alias('max_brightness')] +[ComponentModel.DefaultBindingProperty('max_brightness')] +[Int32] +$MaxBrightness, +# Set the pulse_speed of OBSGlowShader +[Alias('pulse_speed')] +[ComponentModel.DefaultBindingProperty('pulse_speed')] +[Int32] +$PulseSpeed, +# Set the ease of OBSGlowShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the notes of OBSGlowShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'glow' +$ShaderNoun = 'OBSGlowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Exeldro February 21, 2022 +uniform int glow_percent< + string label = "Glow percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 10; +uniform int blur< + string label = "Blur"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 1; +uniform int min_brightness< + string label = "Min brightness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 27; +uniform int max_brightness< + string label = "Max brightness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform int pulse_speed< + string label = "Pulse speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform bool ease; +uniform string notes< + string widget_type = "info"; +> = "''ease'' - makes the animation pause at the begin and end for a moment,''glow_percent'' - how much brightness to add (recommend 0-100). ''blur'' - how far should the glow extend (recommend 1-4).''pulse_speed'' - (0-100). ''min/max brightness'' - floor and ceiling brightness level to target for glows."; + + +float EaseInOutCircTimer(float t,float b,float c,float d){ + t /= d/2.0; + if (t < 1.0) return -c/2.0 * (sqrt(1.0 - t*t) - 1.0) + b; + t -= 2.0; + return c/2.0 * (sqrt(1.0 - t*t) + 1.0) + b; +} + +float BlurStyler(float t,float b,float c,float d,bool ease) +{ + if (ease) return EaseInOutCircTimer(t,0.0,c,d); + return t; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 offsets[4]; + offsets[0] = float2(-0.1, 0.125); + offsets[1] = float2(-0.1, -0.125); + offsets[2] = float2(0.1, -0.125); + offsets[3] = float2(0.1, 0.125); + + // convert input for vector math + float4 col = image.Sample(textureSampler, v_in.uv); + float blur_amount = float(blur) /100.0; + float glow_amount = float(glow_percent) * 0.01; + float speed = float(pulse_speed) * 0.01; + float luminance_floor = float(min_brightness) /100.0; + float luminance_ceiling = float(max_brightness) /100.0; + + if (col.a > 0.0) + { + //circular easing variable + float t = 1.0 + sin(elapsed_time * speed); + float b = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + // simple glow calc + for (int n = 0; n < 4; n++) { + b = BlurStyler(t, 0, c, d, ease); + float4 ncolor = image.Sample(textureSampler, v_in.uv + (blur_amount * b) * offsets[n]); + float intensity = ncolor.r * 0.299 + ncolor.g * 0.587 + ncolor.b * 0.114; + if ((intensity >= luminance_floor) && (intensity <= luminance_ceiling)) + { + ncolor.a = clamp(ncolor.a * glow_amount, 0.0, 1.0); + col += (ncolor * (glow_amount * b)); + } + } + } + return col; + +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGradientShader { + +[Alias('Set-OBSGradientShader','Add-OBSGradientShader')] +param( +# Set the start_color of OBSGradientShader +[Alias('start_color')] +[ComponentModel.DefaultBindingProperty('start_color')] +[String] +$StartColor, +# Set the start_step of OBSGradientShader +[Alias('start_step')] +[ComponentModel.DefaultBindingProperty('start_step')] +[Single] +$StartStep, +# Set the middle_color of OBSGradientShader +[Alias('middle_color')] +[ComponentModel.DefaultBindingProperty('middle_color')] +[String] +$MiddleColor, +# Set the middle_step of OBSGradientShader +[Alias('middle_step')] +[ComponentModel.DefaultBindingProperty('middle_step')] +[Single] +$MiddleStep, +# Set the end_color of OBSGradientShader +[Alias('end_color')] +[ComponentModel.DefaultBindingProperty('end_color')] +[String] +$EndColor, +# Set the end_step of OBSGradientShader +[Alias('end_step')] +[ComponentModel.DefaultBindingProperty('end_step')] +[Single] +$EndStep, +# Set the alpha_percent of OBSGradientShader +[Alias('alpha_percent')] +[ComponentModel.DefaultBindingProperty('alpha_percent')] +[Int32] +$AlphaPercent, +# Set the pulse_speed of OBSGradientShader +[Alias('pulse_speed')] +[ComponentModel.DefaultBindingProperty('pulse_speed')] +[Int32] +$PulseSpeed, +# Set the ease of OBSGradientShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the rotate_colors of OBSGradientShader +[Alias('rotate_colors')] +[ComponentModel.DefaultBindingProperty('rotate_colors')] +[Management.Automation.SwitchParameter] +$RotateColors, +# Set the Apply_To_Alpha_Layer of OBSGradientShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the Apply_To_Specific_Color of OBSGradientShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSGradientShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the horizontal of OBSGradientShader +[ComponentModel.DefaultBindingProperty('horizontal')] +[Management.Automation.SwitchParameter] +$Horizontal, +# Set the vertical of OBSGradientShader +[ComponentModel.DefaultBindingProperty('vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# Set the gradient_center_width_percentage of OBSGradientShader +[Alias('gradient_center_width_percentage')] +[ComponentModel.DefaultBindingProperty('gradient_center_width_percentage')] +[Int32] +$GradientCenterWidthPercentage, +# Set the gradient_center_height_percentage of OBSGradientShader +[Alias('gradient_center_height_percentage')] +[ComponentModel.DefaultBindingProperty('gradient_center_height_percentage')] +[Int32] +$GradientCenterHeightPercentage, +# Set the notes of OBSGradientShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'gradient' +$ShaderNoun = 'OBSGradientShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// gradient shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform float4 start_color = { 0.1, 0.3, 0.1, 1.0 }; +uniform float start_step< + string label = "Start step"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.15; +uniform float4 middle_color = { 1.0, 1.0, 1.0, 1.0 }; +uniform float middle_step< + string label = "Middle step"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.4; +uniform float4 end_color = { 0.75, 0.75, 0.75, 1.0}; +uniform float end_step< + string label = "End step"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.9; +uniform int alpha_percent< + string label = "Alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 90; +uniform int pulse_speed< + string label = "Pulse speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform bool ease; +uniform bool rotate_colors; +uniform bool Apply_To_Alpha_Layer = true; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform bool horizontal; +uniform bool vertical; +uniform int gradient_center_width_percentage< + string label = "gradient center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int gradient_center_height_percentage< + string label = "gradient center height percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform string notes< + string widget_type = "info"; +> = "gradient center items will change the center location. Pulse Speed greater than 0 will animate. Easing seem to be too fast."; + +float EaseInOutCircTimer(float t, float b, float c, float d) { + t /= d / 2; + if (t < 1) return -c / 2 * (sqrt(1 - t * t) - 1) + b; + t -= 2; + return c / 2 * (sqrt(1 - t * t) + 1) + b; +} + +float BlurStyler(float t, float b, float c, float d, bool ease) +{ + if (ease) return EaseInOutCircTimer(t, 0, c, d); + return t; +} + +struct gradient +{ + float4 color; + float step; +}; + + +float4 mainImage(VertData v_in) : TARGET +{ + const float PI = 3.14159265f;//acos(-1); + float speed = float(pulse_speed) * 0.01; + float alpha = float(alpha_percent) * 0.01; + + //circular easing variable + float t = sin(elapsed_time * speed) * 2 - 1; + float b = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + float2 gradient_center = float2(float(gradient_center_width_percentage) * 0.01,float(gradient_center_height_percentage) * 0.01); + float4 color = image.Sample(textureSampler, v_in.uv); + float luminance = color.a * 0.299 + color.g * 0.587 + color.b * 0.114; + float4 gray = float4(luminance,luminance,luminance, 1); + + // skip if (alpha is zero and only apply to alpha layer is true) + if (!(color.a <= 0.0 && Apply_To_Alpha_Layer == true)) + { + b = BlurStyler(t, 0, c, d, ease); + + const int no_colors = 3; + float4 s_color = start_color; + float4 m_color = middle_color; + float4 e_color = end_color; + + if (rotate_colors) + { + // get general time number between 0 and 4 + float tx = (b + 1) * 2; + // 3 steps c1->c2, c2->c3, c3->c1 + //when between 0 - 1 only c1 rises then falls + + if (tx <= 2.0) + { + s_color = lerp(start_color, middle_color, clamp((min(tx, 2.0) * 0.5) * 2, 0.0, 1.0)); + m_color = lerp(middle_color, end_color, clamp((min(tx, 2.0) * 0.5) * 2, 0.0, 1.0)); + e_color = lerp(end_color, start_color, clamp((min(tx, 2.0) * 0.5) * 2, 0.0, 1.0)); + } + + if ((tx >= 1.0) && (tx <= 3.0)) + { + s_color = lerp(middle_color, end_color, clamp(((min(max(1.0, tx), 3.0) - 1) * 0.5) * 2, 0.0, 1.0)); + m_color = lerp(end_color, start_color, clamp(((min(max(1.0, tx), 3.0) - 1) * 0.5) * 2, 0.0, 1.0)); + e_color = lerp(start_color, middle_color, clamp(((min(max(1.0, tx), 3.0) - 1) * 0.5) * 2, 0.0, 1.0)); + } + + if (tx >= 2.0) + { + s_color = lerp(end_color, start_color, clamp(((min(2.0, tx) - 2) * 0.5) * 2, 0.0, 1.0)); + m_color = lerp(start_color, middle_color, clamp(((min(2.0, tx) - 2) * 0.5) * 2, 0.0, 1.0)); + e_color = lerp(middle_color, end_color, clamp(((min(2.0, tx) - 2) * 0.5) * 2, 0.0, 1.0)); + } + + if (tx < 0) + { + s_color = lerp(end_color, start_color, clamp(abs(max(1.0, tx)) * 2, 0.0, 1.0)); + m_color = lerp(start_color, middle_color, clamp(abs(max(1.0, tx)) * 2, 0.0, 1.0)); + e_color = lerp(middle_color, end_color, clamp(abs(max(1.0, tx)) * 2, 0.0, 1.0)); + } + } + + float4 colors[no_colors]; + colors[0] =s_color; + colors[1] = m_color; + colors[2] = e_color; + float step[no_colors]; + step[0] = start_step; + step[1] = middle_step; + step[2] = end_step; + + float redness = max(min(color.r - color.g, color.r - color.b) / color.r, 0); + float greenness = max(min(color.g - color.r, color.g - color.b) / color.g, 0); + float blueness = max(min(color.b - color.r, color.b - color.g) / color.b, 0); + + float dist = distance(v_in.uv, gradient_center); + if (horizontal && (vertical == false)) + { + dist = distance(v_in.uv.y, gradient_center.y); + } + if (vertical && (horizontal == false)) + { + dist = distance(v_in.uv.x, gradient_center.x); + } + + float4 col = colors[0]; + for (int i = 1; i < no_colors; ++i) { + col = lerp(col, colors[i], smoothstep(step[i - 1], step[i], dist)); + } + col.a = clamp(alpha, 0.0, 1.0); + if (Apply_To_Alpha_Layer == false) + color.a = alpha; + if (Apply_To_Specific_Color) + { + col.a = alpha; + float4 original_color = image.Sample(textureSampler, v_in.uv); + col.rgb = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? col.rgb : original_color.rgb; + } + // result = float4(redness, greenness,blueness,1); + //color *= float4(col.r, col.g, col.b, clamp(dot(color, luminance)* alpha, 0.0, 1.0)); + //color.rgb += col * alpha; + //color.a += clamp(1.0 - alpha, 0.0,1.0); + ///color.rgb *= (color.rgb * clamp(1.0- alpha, 0.0, 1.0)) + (col.rgb * clamp(alpha, 0.0, 1.0)); + //color = float4(max(color.r, col.r), max(color.g, col.g), max(color.b, col.b), clamp(dot(color, luminance) * alpha, 0.0, 1.0)); + color.rgb = lerp(color.rgb, col.rgb, clamp(alpha, 0.0, 1.0)); + + } + return color; + + +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSHalftoneShader { + +[Alias('Set-OBSHalftoneShader','Add-OBSHalftoneShader')] +param( +# Set the threshold of OBSHalftoneShader +[ComponentModel.DefaultBindingProperty('threshold')] +[Single] +$Threshold, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'halftone' +$ShaderNoun = 'OBSHalftoneShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.1415926535897932384626433832795 +#define PI180 float(PI / 180.0) + +uniform float threshold< + string label = "Threshold"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.6; + +float sind(float a) +{ + return sin(a * PI180); +} + +float cosd(float a) +{ + return cos(a * PI180); +} + +float added(float2 sh, float sa, float ca, float2 c, float d) +{ + return 0.5 + 0.25 * cos((sh.x * sa + sh.y * ca + c.x) * d) + 0.25 * cos((sh.x * ca - sh.y * sa + c.y) * d); +} + +float4 mainImage(VertData v_in) : TARGET +{ + // Halftone dot matrix shader + // @author Tomek Augustyn 2010 + + // Ported from my old PixelBender experiment + // https://github.com/og2t/HiSlope/blob/master/src/hislope/pbk/fx/halftone/Halftone.pbk + + float coordX = v_in.uv.x; + float coordY = v_in.uv.y; + float2 dstCoord = float2(coordX, coordY); + float2 rotationCenter = float2(0.5, 0.5); + float2 shift = dstCoord - rotationCenter; + + float dotSize = 3.0; + float angle = 45.0; + + float rasterPattern = added(shift, sind(angle), cosd(angle), rotationCenter, PI / dotSize * 680.0); + float4 srcPixel = image.Sample(textureSampler, dstCoord); + + float avg = 0.2125 * srcPixel.r + 0.7154 * srcPixel.g + 0.0721 * srcPixel.b; + float gray = (rasterPattern * threshold + avg - threshold) / (1.0 - threshold); + + // uncomment to see how the raster pattern looks + // gray = rasterPattern; + + return float4(gray, gray, gray, 1.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSHeatWaveSimpleShader { + +[Alias('Set-OBSHeatWaveSimpleShader','Add-OBSHeatWaveSimpleShader')] +param( +# Set the Rate of OBSHeatWaveSimpleShader +[ComponentModel.DefaultBindingProperty('Rate')] +[Single] +$Rate, +# Set the Strength of OBSHeatWaveSimpleShader +[ComponentModel.DefaultBindingProperty('Strength')] +[Single] +$Strength, +# Set the Distortion of OBSHeatWaveSimpleShader +[ComponentModel.DefaultBindingProperty('Distortion')] +[Single] +$Distortion, +# Set the Opacity of OBSHeatWaveSimpleShader +[ComponentModel.DefaultBindingProperty('Opacity')] +[Single] +$Opacity, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'heat-wave-simple' +$ShaderNoun = 'OBSHeatWaveSimpleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Heat Wave Simple, Version 0.03, for OBS Shaderfilter +// Copyright ©️ 2022 by SkeletonBow +// License: GNU General Public License, version 2 +// +// Contact info: +// Twitter: +// Twitch: +// +// Description: +// Generate a crude pseudo heat wave displacement on an image source. +// +// Based on: https://www.shadertoy.com/view/td3GRn by Dombass +// +// Changelog: +// 0.03 - Added Opacity control +// 0.02 - Added crude Rate, Strength, and Distortion controls +// 0.01 - Initial release + +uniform float Rate< + string label = "Rate"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 5.0; +uniform float Strength< + string label = "Strength"; + string widget_type = "slider"; + float minimum = -25.0; + float maximum = 25.0; + float step = 0.01; +> = 1.0; +uniform float Distortion< + string label = "Distortion"; + string widget_type = "slider"; + float minimum = 3.0; + float maximum = 20.0; + float step = 0.01; +> = 10.0; +uniform float Opacity< + string label = "Opacity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100.00; + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float distort = clamp(Distortion, 3.0, 20.0); + + // Time varying pixel color + float jacked_time = Rate*elapsed_time; + float2 scale = float2(0.5, 0.5); + float str = clamp(Strength, -25.0, 25.0) * 0.01; + + uv += str * sin(scale*jacked_time + length( uv ) * distort); + float4 c = image.Sample( textureSampler, uv); + c.a *= saturate(Opacity*0.01); + return c; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSHexagonShader { + +[Alias('Set-OBSHexagonShader','Add-OBSHexagonShader')] +param( +# Set the Hex_Color of OBSHexagonShader +[Alias('Hex_Color')] +[ComponentModel.DefaultBindingProperty('Hex_Color')] +[String] +$HexColor, +# Set the Alpha_Percent of OBSHexagonShader +[Alias('Alpha_Percent')] +[ComponentModel.DefaultBindingProperty('Alpha_Percent')] +[Int32] +$AlphaPercent, +# Set the Quantity of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('Quantity')] +[Single] +$Quantity, +# Set the Border_Width of OBSHexagonShader +[Alias('Border_Width')] +[ComponentModel.DefaultBindingProperty('Border_Width')] +[Int32] +$BorderWidth, +# Set the Blend of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('Blend')] +[Management.Automation.SwitchParameter] +$Blend, +# Set the Equilateral of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('Equilateral')] +[Management.Automation.SwitchParameter] +$Equilateral, +# Set the Zoom_Animate of OBSHexagonShader +[Alias('Zoom_Animate')] +[ComponentModel.DefaultBindingProperty('Zoom_Animate')] +[Management.Automation.SwitchParameter] +$ZoomAnimate, +# Set the Speed_Percent of OBSHexagonShader +[Alias('Speed_Percent')] +[ComponentModel.DefaultBindingProperty('Speed_Percent')] +[Int32] +$SpeedPercent, +# Set the Glitch of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('Glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the Distort_X of OBSHexagonShader +[Alias('Distort_X')] +[ComponentModel.DefaultBindingProperty('Distort_X')] +[Single] +$DistortX, +# Set the Distort_Y of OBSHexagonShader +[Alias('Distort_Y')] +[ComponentModel.DefaultBindingProperty('Distort_Y')] +[Single] +$DistortY, +# Set the Offset_X of OBSHexagonShader +[Alias('Offset_X')] +[ComponentModel.DefaultBindingProperty('Offset_X')] +[Single] +$OffsetX, +# Set the Offset_Y of OBSHexagonShader +[Alias('Offset_Y')] +[ComponentModel.DefaultBindingProperty('Offset_Y')] +[Single] +$OffsetY, +# Set the notes of OBSHexagonShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'hexagon' +$ShaderNoun = 'OBSHexagonShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Hexagon shader by Charles Fettinger for obs-shaderfilter plugin 4/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform float4 Hex_Color; +uniform int Alpha_Percent< + string label = "Alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform float Quantity< + string label = "Quantity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 25; +uniform int Border_Width< + string label = "Border Width"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 115; + int step = 1; +> = 15; // <- -15 to 85, -15 off top +uniform bool Blend; +uniform bool Equilateral; +uniform bool Zoom_Animate; +uniform int Speed_Percent< + string label = "Speed Percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 100; +uniform bool Glitch; +uniform float Distort_X< + string label = "Distort X"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform float Distort_Y< + string label = "Distort Y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform float Offset_X< + string label = "Offset X"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float Offset_Y< + string label = "Offset X"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform string notes< + string widget_type = "info"; +>= "Tiles:equilateral: around 12.33,nonequilateral: square rootable number. Distort of 1 is normal."; + +float mod(float x, float y) +{ + return x - y * floor(x/y); +} + +float2 mod2(float2 x, float2 y) +{ + return x - y * floor(x/y); +} + +// 0 on edges, 1 in non_edge +float hex(float2 p) { + float xyratio = 1; + if (Equilateral) + xyratio = uv_size.x /uv_size.y; + + // calc p + p.x = mul(p.x,xyratio); + p.y += mod(floor(p.x) , 2.0)*0.5; + p = abs((mod2(p , float2(1.0, 1.0)) - 0.5)); + return abs(max(p.x*1.5 + p.y, p.y*2.0) -1); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv * uv_scale + uv_offset); + float alpha = float(Alpha_Percent) * 0.01; + float quantity = sqrt(clamp(Quantity, 0.0, 100.0)); + float border_width = clamp(float(Border_Width - 15), -15, 100) * 0.01; + float speed = float(Speed_Percent) * 0.01; + float time = (1 + sin(elapsed_time * speed))*0.5; + if (Zoom_Animate) + quantity *= time; + + // create a (pos)ition reference, hex radius and smoothstep out the non_edge + float2 pos = float2(v_in.uv.x * max(0,Distort_X), (1 - v_in.uv.y) * max(0,Distort_Y)) * uv_scale + uv_offset + float2(Offset_X, Offset_Y); + if (Glitch) + quantity *= lerp(pos.x, pos.y, rand_f); + float2 p = (pos * quantity); // number of hexes to be created + float r = (1.0 -0.7)*0.5; // cell default radius + float non_edge = smoothstep(0.0, r + border_width, hex(p)); // approach border become edge + + // make the border colorable - non_edge is scaled + float4 c = float4(non_edge, non_edge,non_edge,1.0) ; + if (non_edge < 1) + { + c = Hex_Color; + c.a = alpha; + if (Blend) + c = lerp(rgba, c, 1 - non_edge); + return lerp(rgba,c,alpha); + } + return lerp(rgba, c * rgba, alpha); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSHslHsvSaturationShader { + +[Alias('Set-OBSHslHsvSaturationShader','Add-OBSHslHsvSaturationShader')] +param( +# Set the hslSaturationFactor of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('hslSaturationFactor')] +[Single] +$HslSaturationFactor, +# Set the hslGamma of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('hslGamma')] +[Single] +$HslGamma, +# Set the hsvSaturationFactor of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('hsvSaturationFactor')] +[Single] +$HsvSaturationFactor, +# Set the hsvGamma of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('hsvGamma')] +[Single] +$HsvGamma, +# Set the adjustmentOrder of OBSHslHsvSaturationShader +[ComponentModel.DefaultBindingProperty('adjustmentOrder')] +[Int32] +$AdjustmentOrder, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'hsl_hsv_saturation' +$ShaderNoun = 'OBSHslHsvSaturationShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' + +// Adjusted Saturation Shader for obs-shaderfilter using HLSL conventions + +uniform float hslSaturationFactor< + string label = "HSL Sat Gain"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.01; +> = 1.0; + +uniform float hslGamma< + string label = "HSL Sat Gamma"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 1.0; + +uniform float hsvSaturationFactor< + string label = "HSV Sat Gain"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.01; +> = 1.0; + +uniform float hsvGamma< + string label = "HSV Sat Gamma"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 1.0; + +uniform int adjustmentOrder< + string label = "Order"; + string widget_type = "select"; + int option_0_value = 1; + string option_0_label = "Parallel adjustment (both HSL and HSV operate on the original image and then blend)"; + int option_1_value = 2; + string option_1_label = "HSL first, then HSV"; + int option_2_value = 3; + string option_2_label = "HSV first, then HSL"; +> = 1; + +// HSV conversion + +float3 rgb2hsv(float3 c) { + float4 K = float4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + float4 p = lerp(float4(c.bg, K.wz), float4(c.gb, K.xy), step(c.b, c.g)); + float4 q = lerp(float4(p.xyw, c.r), float4(c.r, p.yzx), step(p.x, c.r)); + + float d = q.x - min(q.w, q.y); + float e = 1.0e-10; + return float3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x); +} + +float3 hsv2rgb(float3 c) { + float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * lerp(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y); +} + +// HSL conversion + +float3 rgb2hsl(float3 c) { + float maxVal = max(c.r, max(c.g, c.b)); + float minVal = min(c.r, min(c.g, c.b)); + float delta = maxVal - minVal; + float h = 0.0; + float s = 0.0; + float l = (maxVal + minVal) / 2.0; + + if(delta != 0) { + if(l < 0.5) s = delta / (maxVal + minVal); + else s = delta / (2.0 - maxVal - minVal); + + if(c.r == maxVal) h = (c.g - c.b) / delta + (c.g < c.b ? 6.0 : 0.0); + else if(c.g == maxVal) h = (c.b - c.r) / delta + 2.0; + else h = (c.r - c.g) / delta + 4.0; + + h /= 6.0; + } + + return float3(h, s, l); +} + +float hue2rgb(float p, float q, float t) { + if(t < 0.0) t += 1.0; + if(t > 1.0) t -= 1.0; + if(t < 1.0/6.0) return p + (q - p) * 6.0 * t; + if(t < 1.0/2.0) return q; + if(t < 2.0/3.0) return p + (q - p) * (2.0/3.0 - t) * 6.0; + return p; +} + +float3 hsl2rgb(float3 c) { + float r, g, b; + + if(c.y == 0.0) { + r = g = b = c.z; + } else { + float q = c.z < 0.5 ? c.z * (1.0 + c.y) : c.z + c.y - c.z * c.y; + float p = 2.0 * c.z - q; + r = hue2rgb(p, q, c.x + 1.0/3.0); + g = hue2rgb(p, q, c.x); + b = hue2rgb(p, q, c.x - 1.0/3.0); + } + + return float3(r, g, b); +} + +float3 adjustColorWithOrder(float3 originalColor) { + if (adjustmentOrder == 1) { + // Parallel adjustment (both HSL and HSV operate on the original image and then blend) + float3 hslAdjusted = rgb2hsl(originalColor); + hslAdjusted.y = pow(hslAdjusted.y, (1/hslGamma)); + hslAdjusted.y *= hslSaturationFactor; + float3 hslAdjustedColor = hsl2rgb(hslAdjusted); + + float3 hsvAdjusted = rgb2hsv(originalColor); + hsvAdjusted.y = pow(hsvAdjusted.y, (1/hsvGamma)); + hsvAdjusted.y *= hsvSaturationFactor; + float3 hsvAdjustedColor = hsv2rgb(hsvAdjusted); + + float3 finalColor = (hslAdjustedColor + hsvAdjustedColor) * 0.5; + return finalColor; + } + else if (adjustmentOrder == 2) { + // HSL first, then HSV + float3 hslAdjusted = rgb2hsl(originalColor); + hslAdjusted.y = pow(hslAdjusted.y, (1/hslGamma)); + hslAdjusted.y *= hslSaturationFactor; + float3 afterHSL = hsl2rgb(hslAdjusted); + float3 hsvAdjusted = rgb2hsv(afterHSL); + hsvAdjusted.y = pow(hsvAdjusted.y, (1/hsvGamma)); + hsvAdjusted.y *= hsvSaturationFactor; + return hsv2rgb(hsvAdjusted); + } + else if (adjustmentOrder == 3) { + // HSV first, then HSL + float3 hsvAdjusted = rgb2hsv(originalColor); + hsvAdjusted.y = pow(hsvAdjusted.y, (1/hsvGamma)); + hsvAdjusted.y *= hsvSaturationFactor; + float3 afterHSV = hsv2rgb(hsvAdjusted); + float3 hslAdjusted = rgb2hsl(afterHSV); + hslAdjusted.y = pow(hslAdjusted.y, (1/hslGamma)); + hslAdjusted.y *= hslSaturationFactor; + return hsl2rgb(hslAdjusted); + } + return originalColor; // Default to original color in case of unexpected values +} + +// Final composite + +float4 mainImage(VertData v_in) : TARGET +{ + float3 originalColor = image.Sample(textureSampler, v_in.uv).rgb; + float3 adjustedColor = adjustColorWithOrder(originalColor); + return float4(adjustedColor, 1.0); // preserving the original alpha +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSHueRotatonShader { + +[Alias('Set-OBSHueRotatonShader','Add-OBSHueRotatonShader')] +param( +# Set the Speed of OBSHueRotatonShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Hue_Override of OBSHueRotatonShader +[Alias('Hue_Override')] +[ComponentModel.DefaultBindingProperty('Hue_Override')] +[Management.Automation.SwitchParameter] +$HueOverride, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'hue-rotaton' +$ShaderNoun = 'OBSHueRotatonShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Hue Rotation shader, version 1.0 for OBS Shaderfilter +// Copyright ©️ 2023 by SkeletonBow +// License: GNU General Public License, version 2 +// +// Contact info: +// Twitter: +// Twitch: +// YouTube: +// Soundcloud: +// +// Description: +// Rotates hue of input at a user configurable speed. Negative speed values reverse rotation. A hue +// override option is provided to force a specific rotating hue instead of the original image''s hue. +// +// Changelog: +// 1.0 - Initial release + +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + version 2 as published by the Free Software Foundation. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.001; +> = 10.00; +uniform bool Hue_Override = false; + +float3 HUEtoRGB(in float H) +{ + float R = abs(H * 6 - 3) - 1; + float G = 2 - abs(H * 6 - 2); + float B = 2 - abs(H * 6 - 4); + return saturate(float3(R,G,B)); +} + +#define Epsilon 1e-10 + +float3 RGBtoHCV(in float3 RGB) +{ + // Based on work by Sam Hocevar and Emil Persson + float4 P = (RGB.g < RGB.b) ? float4(RGB.bg, -1.0, 2.0/3.0) : float4(RGB.gb, 0.0, -1.0/3.0); + float4 Q = (RGB.r < P.x) ? float4(P.xyw, RGB.r) : float4(RGB.r, P.yzx); + float C = Q.x - min(Q.w, Q.y); + float H = abs((Q.w - Q.y) / (6 * C + Epsilon) + Q.z); + return float3(H, C, Q.x); +} + +float3 HSVtoRGB(in float3 HSV) +{ + float3 RGB = HUEtoRGB(HSV.x); + return ((RGB - 1) * HSV.y + 1) * HSV.z; +} + +float3 RGBtoHSV(in float3 RGB) +{ + float3 HCV = RGBtoHCV(RGB); + float S = HCV.y / (HCV.z + Epsilon); + return float3(HCV.x, S, HCV.z); +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float4 col_in = image.Sample(textureSampler, uv); + float3 col_out; + float3 HSV = RGBtoHSV(col_in.rgb); + + if(Hue_Override) + HSV.x = elapsed_time * Speed * 0.01; + else + HSV.x += elapsed_time * Speed * 0.01; + + // Normalize Hue + HSV.x = frac(HSV.x); + + col_out = HSVtoRGB(HSV); + return float4(col_out, col_in.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSIntensityScopeShader { + +[Alias('Set-OBSIntensityScopeShader','Add-OBSIntensityScopeShader')] +param( +# Set the gain of OBSIntensityScopeShader +[ComponentModel.DefaultBindingProperty('gain')] +[Single] +$Gain, +# Set the blend of OBSIntensityScopeShader +[ComponentModel.DefaultBindingProperty('blend')] +[Single] +$Blend, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'intensity-scope' +$ShaderNoun = 'OBSIntensityScopeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Robin Green, Dec 2016 +// Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. +// https://www.shadertoy.com/view/XtcSRs adopted for OBS by Exeldro +uniform float gain< + string label = "Gain"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 1.00; + float step = 0.01; +> = 0.3; +uniform float blend< + string label = "Blend"; + string widget_type = "slider"; + float minimum = 0.00; + float maximum = 1.00; + float step = 0.01; +> = 0.6; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + uv.y = 1.0 - uv.y; + + // calculate the intensity bucket for this pixel based on column height (padded at the top) + const float max_value = 270.0; + const float buckets = 512.0; + float bucket_min = log( max_value * floor(uv.y * buckets) / buckets ); + float bucket_max = log( max_value * floor((uv.y * buckets) + 1.0) / buckets ); + + // count the count the r,g,b and luma in this column that match the bucket + float4 count = float4(0.0, 0.0, 0.0, 0.0); + for( int i=0; i < 512; ++i ) { + float j = float(i) / buckets; + float4 pixel = image.Sample(textureSampler, float2(uv.x, j )) * 256.0; + + // calculate the Rec.709 luma for this pixel + pixel.a = pixel.r * 0.2126 + pixel.g * 0.7152 + pixel.b * 0.0722; + + float4 logpixel = log(pixel); + if( logpixel.r >= bucket_min && logpixel.r < bucket_max) count.r += 1.0; + if( logpixel.g >= bucket_min && logpixel.g < bucket_max) count.g += 1.0; + if( logpixel.b >= bucket_min && logpixel.b < bucket_max) count.b += 1.0; + if( logpixel.a >= bucket_min && logpixel.a < bucket_max) count.a += 1.0; + } + + // sum luma into RGB, tweak log intensity for readability + count.rgb = log(count.rgb * (1.0-blend) + count.aaa * blend) * gain; + + // output + return count; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInvertLumaShader { + +[Alias('Set-OBSInvertLumaShader','Add-OBSInvertLumaShader')] +param( +# Set the Invert_Color of OBSInvertLumaShader +[Alias('Invert_Color')] +[ComponentModel.DefaultBindingProperty('Invert_Color')] +[Management.Automation.SwitchParameter] +$InvertColor, +# Set the Invert_Luma of OBSInvertLumaShader +[Alias('Invert_Luma')] +[ComponentModel.DefaultBindingProperty('Invert_Luma')] +[Management.Automation.SwitchParameter] +$InvertLuma, +# Set the Gamma_Correction of OBSInvertLumaShader +[Alias('Gamma_Correction')] +[ComponentModel.DefaultBindingProperty('Gamma_Correction')] +[Management.Automation.SwitchParameter] +$GammaCorrection, +# Set the Test_Ramp of OBSInvertLumaShader +[Alias('Test_Ramp')] +[ComponentModel.DefaultBindingProperty('Test_Ramp')] +[Management.Automation.SwitchParameter] +$TestRamp, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'invert-luma' +$ShaderNoun = 'OBSInvertLumaShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Invert shader 1.0 - for OBS Shaderfilter +// Copyright 2021 by SkeletonBow +// https://twitter.com/skeletonbowtv +// https://twitch.tv/skeletonbowtv + +// Performs RGB color inversion or YUV luma inversion with optional sRGB gamma handling + +uniform bool Invert_Color = false; +uniform bool Invert_Luma = true; +uniform bool Gamma_Correction = true; +uniform bool Test_Ramp = false; + +float3 encodeSRGB(float3 linearRGB) +{ + float3 a = float3(12.92,12.92,12.92) * linearRGB; + float3 b = float3(1.055,1.055,1.055) * pow(linearRGB, float3(1.0 / 2.4,1.0 / 2.4,1.0 / 2.4)) - float3(0.055,0.055,0.055); + float3 c = step(float3(0.0031308,0.0031308,0.0031308), linearRGB); + return float3(lerp(a, b, c)); +} + +float3 decodeSRGB(float3 screenRGB) +{ + float3 a = screenRGB / float3(12.92,12.92,12.92); + float3 b = pow((screenRGB + float3(0.055,0.055,0.055)) / float3(1.055,1.055,1.055), float3(2.4,2.4,2.4)); + float3 c = step(float3(0.04045,0.04045,0.04045), screenRGB); + return float3(lerp(a, b, c)); +} + +float3 HUEtoRGB(in float H) +{ + float R = abs(H * 6 - 3) - 1; + float G = 2 - abs(H * 6 - 2); + float B = 2 - abs(H * 6 - 4); + return float3(clamp(float3(R,G,B), float3(0.0, 0.0, 0.0), float3(1.0, 1.0, 1.0))); +} + +float3 RGBtoYUV(float3 color) +{ + // YUV matriz (BT709 luma coefficients) +#ifdef OPENGL + float3x3 toYUV = float3x3( + float3(0.2126, -0.09991, 0.615), + float3(0.7152, -0.33609, -0.55861), + float3(0.0722, 0.436, -0.05639)); +#else + float3x3 toYUV = { + { 0.2126, -0.09991, 0.615 }, + { 0.7152, -0.33609, -0.55861 }, + { 0.0722, 0.436, -0.05639 }, + }; +#endif + return mul(color, toYUV); +} + +float3 YUVtoRGB(float3 color) +{ + // YUV matriz (BT709) +#ifdef OPENGL + float3x3 fromYUV = float3x3( + float3(1.000, 1.000, 1.000), + float3(0.0, -0.21482, 2.12798), + float3(1.28033, -0.38059, 0.0)); +#else + float3x3 fromYUV = { + { 1.000, 1.000, 1.000 }, + { 0.0, -0.21482, 2.12798 }, + { 1.28033, -0.38059, 0.0 }, + }; +#endif + return mul(color, fromYUV); +} + +float3 generate_ramps(float3 color, float2 uv) +{ + float3 ramp = float3(0.0, 0.0, 0.0); + if(uv.y < 0.2) + ramp.r = uv.x; // Red ramp + else if(uv.y < 0.4) + ramp.g = uv.x; // Green ramp + else if(uv.y < 0.6) + ramp.b = uv.x; // Blue ramp + else if(uv.y < 0.8) + ramp = float3(uv.x, uv.x, uv.x); // Grey ramp + else + ramp = HUEtoRGB(uv.x); // Hue rainbow + + return ramp; +} + +float4 mainImage( VertData v_in ) : TARGET +{ + float2 uv = v_in.uv; + float4 obstex = image.Sample( textureSampler, uv ); + float3 color = obstex.rgb; + // Apply sRGB gamma transfer encode + if(Gamma_Correction) color = encodeSRGB( color ); + // Override display with test patterns to visually see what is happening + if( Test_Ramp ) color = generate_ramps( obstex.rgb, uv ); + // RGB color invert + if( Invert_Color ) { + color = float3(1.0, 1.0, 1.0) - color; + } + // YUV luma invert + if( Invert_Luma ) { + float3 yuv = RGBtoYUV( color ); + yuv.x = 1.0 - yuv.x; + color = YUVtoRGB(yuv); + } + // Apply sRGB gamma transfer decode + if(Gamma_Correction) color = decodeSRGB( color ); + return float4(color, obstex.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSLuminance2Shader { + +[Alias('Set-OBSLuminance2Shader','Add-OBSLuminance2Shader')] +param( +# Set the color of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('color')] +[String] +$Color, +# Set the lumaMax of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('lumaMax')] +[Single] +$LumaMax, +# Set the lumaMin of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMaxSmooth of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('lumaMaxSmooth')] +[Single] +$LumaMaxSmooth, +# Set the lumaMinSmooth of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the invertImageColor of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('invertImageColor')] +[Management.Automation.SwitchParameter] +$InvertImageColor, +# Set the invertAlphaChannel of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('invertAlphaChannel')] +[Management.Automation.SwitchParameter] +$InvertAlphaChannel, +# Set the notes of OBSLuminance2Shader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'luminance2' +$ShaderNoun = 'OBSLuminance2Shader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform float4 color; +uniform float lumaMax< + string label = "Luma Max"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 1.05; +uniform float lumaMin< + string label = "Luma Min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.01; +uniform float lumaMaxSmooth< + string label = "Luma Max Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.10; +uniform float lumaMinSmooth< + string label = "Luma Min Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.01; +uniform bool invertImageColor; +uniform bool invertAlphaChannel; +uniform string notes< + string widget_type = "info"; +> = "''luma max'' - anything above will be transparent. ''luma min'' - anything below will be transparent. ''luma(min or max)Smooth - make the transparency fade in or out by a distance. ''invert color'' - inverts the color of the screen. ''invert alpha channel'' - flips all settings on thier head, which is excellent for testing."; + +float4 InvertColor(float4 rgba_in) +{ + rgba_in.r = 1.0 - rgba_in.r; + rgba_in.g = 1.0 - rgba_in.g; + rgba_in.b = 1.0 - rgba_in.b; + rgba_in.a = 1.0 - rgba_in.a; + return rgba_in; +} + +float4 mainImage(VertData v_in) : TARGET +{ + + float4 rgba = image.Sample(textureSampler, v_in.uv); + if (rgba.a > 0.0) + { + + if (invertImageColor) + { + rgba = InvertColor(rgba); + } + float luminance = rgba.r * color.r * 0.299 + rgba.g * color.g * 0.587 + rgba.b * color.b * 0.114; + + //intensity = min(max(intensity,minIntensity),maxIntensity); + float clo = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luminance); + float chi = 1. - smoothstep(lumaMax - lumaMaxSmooth, lumaMax, luminance); + + float amask = clo * chi; + + if (invertAlphaChannel) + { + amask = 1.0 - amask; + } + rgba *= color; + rgba.a = clamp(amask, 0.0, 1.0); + + } + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSLuminanceAlphaShader { + +[Alias('Set-OBSLuminanceAlphaShader','Add-OBSLuminanceAlphaShader')] +param( +# Set the ViewProj of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSLuminanceAlphaShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSLuminanceAlphaShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSLuminanceAlphaShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSLuminanceAlphaShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSLuminanceAlphaShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSLuminanceAlphaShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the color_matrix of OBSLuminanceAlphaShader +[Alias('color_matrix')] +[ComponentModel.DefaultBindingProperty('color_matrix')] +[Single[][]] +$ColorMatrix, +# Set the color of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('color')] +[String] +$Color, +# Set the mul_val of OBSLuminanceAlphaShader +[Alias('mul_val')] +[ComponentModel.DefaultBindingProperty('mul_val')] +[Single] +$MulVal, +# Set the add_val of OBSLuminanceAlphaShader +[Alias('add_val')] +[ComponentModel.DefaultBindingProperty('add_val')] +[Single] +$AddVal, +# Set the level of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('level')] +[Single] +$Level, +# Set the invertAlphaChannel of OBSLuminanceAlphaShader +[ComponentModel.DefaultBindingProperty('invertAlphaChannel')] +[Management.Automation.SwitchParameter] +$InvertAlphaChannel, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'luminance_alpha' +$ShaderNoun = 'OBSLuminanceAlphaShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Luminance Alpha Effect By Charles Fettinger (https://github.com/Oncorporation) 2/2019 +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +uniform float4x4 color_matrix; +uniform float4 color; +uniform float mul_val< + string label = "Mulitply"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; +uniform float add_val< + string label = "Add"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = 0.0; +uniform float level< + string label = "Level"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> =1.0; +uniform bool invertAlphaChannel; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertDataIn { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +struct VertDataOut { + float4 pos : POSITION; + float2 uv : TEXCOORD0; + float2 uv2 : TEXCOORD1; +}; + +VertDataOut mainTransform(VertDataIn v_in) +{ + VertDataOut vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0 ), ViewProj); + vert_out.uv = v_in.uv * mul_val + add_val; + vert_out.uv2 = v_in.uv ; + return vert_out; +} + +/*float3 GetLuminance(float4 rgba) +{ + float red = rbga.r; + float green = rgba.g; + float blue = rgba.b; + return (.299 * red) + (.587 * green) + (.114 * blue); +}*/ + +float4 PSAlphaMaskRGBA(VertDataOut v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv) ; + if (rgba.a > 0.0) + { + + float intensity = rgba.r * color.r * 0.299 + rgba.g * color.g * 0.587 + rgba.b * color.b * 0.114; + if (invertAlphaChannel) + { + intensity = 1.0 - intensity; + } + rgba *= color; + rgba.a = clamp((intensity * level), 0.0, 1.0); + + } + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = PSAlphaMaskRGBA(v_in); + } +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSLuminanceShader { + +[Alias('Set-OBSLuminanceShader','Add-OBSLuminanceShader')] +param( +# Set the color of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('color')] +[String] +$Color, +# Set the level of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('level')] +[Single] +$Level, +# Set the invertImageColor of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('invertImageColor')] +[Management.Automation.SwitchParameter] +$InvertImageColor, +# Set the invertAlphaChannel of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('invertAlphaChannel')] +[Management.Automation.SwitchParameter] +$InvertAlphaChannel, +# Set the notes of OBSLuminanceShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Luminance' +$ShaderNoun = 'OBSLuminanceShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Exeldro February 22, 2022 +uniform float4 color; +uniform float level< + string label = "Level"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform bool invertImageColor; +uniform bool invertAlphaChannel; + +uniform string notes< + string widget_type = "info"; +> = "''color'' - the color to add to the original image. Multiplies the color against the original color giving it a tint. White represents no tint. ''invertImageColor'' - - inverts the color of the screen, great for testing and fine tuning. ''level'' - transparency amount modifier where 1.0 = base luminance (recommend 0.00 - 10.00). ''invertAlphaChannel'' - flip what is transparent from darks (default) to lights"; + +float4 InvertColor(float4 rgba_in) +{ + rgba_in.r = 1.0 - rgba_in.r; + rgba_in.g = 1.0 - rgba_in.g; + rgba_in.b = 1.0 - rgba_in.b; + rgba_in.a = 1.0 - rgba_in.a; + return rgba_in; +} + +float4 mainImage(VertData v_in) : TARGET +{ + + float4 rgba = image.Sample(textureSampler, v_in.uv); + if (rgba.a > 0.0) + { + + if (invertImageColor) + { + rgba = InvertColor(rgba); + } + float intensity = rgba.r * color.r * 0.299 + rgba.g * color.g * 0.587 + rgba.b * color.b * 0.114; + + //intensity = min(max(intensity,minIntensity),maxIntensity); + + + if (invertAlphaChannel) + { + intensity = 1.0 - intensity; + } + rgba *= color; + rgba.a = clamp((intensity * level), 0.0, 1.0); + + } + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSMatrixShader { + +[Alias('Set-OBSMatrixShader','Add-OBSMatrixShader')] +param( +# Set the ViewProj of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSMatrixShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSMatrixShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSMatrixShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_size of OBSMatrixShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the uv_pixel_interval of OBSMatrixShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSMatrixShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the rand_instance_f of OBSMatrixShader +[Alias('rand_instance_f')] +[ComponentModel.DefaultBindingProperty('rand_instance_f')] +[Single] +$RandInstanceF, +# Set the rand_activation_f of OBSMatrixShader +[Alias('rand_activation_f')] +[ComponentModel.DefaultBindingProperty('rand_activation_f')] +[Single] +$RandActivationF, +# Set the loops of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('loops')] +[Int32] +$Loops, +# Set the local_time of OBSMatrixShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the mouse of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('mouse')] +[Single[]] +$Mouse, +# Set the Invert_Direction of OBSMatrixShader +[Alias('Invert_Direction')] +[ComponentModel.DefaultBindingProperty('Invert_Direction')] +[Management.Automation.SwitchParameter] +$InvertDirection, +# Set the lumaMin of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('lumaMin')] +[Single] +$LumaMin, +# Set the lumaMinSmooth of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('lumaMinSmooth')] +[Single] +$LumaMinSmooth, +# Set the Ratio of OBSMatrixShader +[ComponentModel.DefaultBindingProperty('Ratio')] +[Single] +$Ratio, +# Set the Alpha_Percentage of OBSMatrixShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Apply_To_Alpha_Layer of OBSMatrixShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'matrix' +$ShaderNoun = 'OBSMatrixShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Matrix effect by Charles Fettinger for obs-shaderfilter plugin 7/2020 v.2 +// https://github.com/Oncorporation/obs-shaderfilter +// https://www.shadertoy.com/view/XljBW3 The cat is a glitch (Matrix) - coverted from and updated + +#define vec2 float2 +#define vec3 float3 +#define vec4 float4 +#define ivec2 int2 +#define ivec3 int3 +#define ivec4 int4 +#define mat2 float2x2 +#define mat3 float3x3 +#define mat4 float4x4 +#define fract frac +#define mix lerp +#define iTime float + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_size; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float rand_instance_f; +uniform float rand_activation_f; +uniform int loops; +uniform float local_time; + + +uniform float2 mouse< + string label = "Virtual Mouse Coordinates"; + string widget_type = "slider"; + float2 minimum = {0, 0}; + float2 maximum = {100., 100.}; + float2 scale = {.01, .01}; + float2 step = {.01, .01}; +> = {0., 0.}; + + +int2 iMouse() { + return int2(mouse.x * uv_size.x, mouse.y * uv_size.y); +} + +sampler_state textureSampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +/* ps start + +*/ + +uniform bool Invert_Direction< + string label = "Invert Direction"; +> = true; + +uniform float lumaMin< + string label = "Luma Min"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.01; +uniform float lumaMinSmooth< + string label = "Luma Min Smooth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.01; +uniform float Ratio< + string label = "Ratio"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 4.0; +uniform float Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100; // +uniform bool Apply_To_Alpha_Layer = true; + +#define PI2 6.28318530718 +#define PI 3.1416 + + +float vorocloud(float2 p){ + float f = 0.0; + float flow = 1.0; + float time = elapsed_time; + if(Invert_Direction){ + flow *= -1; + } + /* + //periodically stop + if (loops % 16 >= 8.0) + { + time = local_time - elapsed_time; + } + */ + + float r = clamp(Ratio,-50,50); + float2 pp = cos(float2(p.x * 14.0, (16.0 * p.y + cos(floor(p.x * 30.0)) + flow * time * PI2)) ); + p = cos(p * 12.1 + pp * r + sin(time/PI)*(r/PI) + 0.5 * cos(pp.x * r + sin(time/PI)*(r/PI))); + + float2 pts[4]; + + pts[0] = float2(0.5, 0.6); + pts[1] = float2(-0.4, 0.4); + pts[2] = float2(0.2, -0.7); + pts[3] = float2(-0.3, -0.4); + + float d = 5.0; + + for(int i = 0; i < 4; i++){ + pts[i].x += 0.03 * cos(float(i)) + p.x; + pts[i].y += 0.03 * sin(float(i)) + p.y; + d = min(d, distance(pts[i], pp)); + } + + f = 2.0 * pow(1.0 - 0.3 * d, 13.0); + + f = min(f, 1.0); + + return f; +} + +vec4 scene(float2 UV){ + float alpha = clamp(Alpha_Percentage *.01 ,0,1.0); + + float x = UV.x; + float y = UV.y; + + float2 p = float2(x, y) - 0.5; + + vec4 col = vec4(0.0,0.0,0.0,0.0); + col.g += 0.02; + + float v = vorocloud(p); + v = 0.2 * floor(v * 5.0); + + col.r += 0.1 * v; + col.g += 0.6 * v; + col.b += 0.5 * pow(v, 5.0); + + + v = vorocloud(p * 2.0); + v = 0.2 * floor(v * 5.0); + + col.r += 0.1 * v; + col.g += 0.2 * v; + col.b += 0.01 * pow(v, 5.0); + + col.a = 1.0; + float luma = dot(col.rgb,float3(0.299,0.587,0.114)); + float luma_min = smoothstep(lumaMin, lumaMin + lumaMinSmooth, luma); + col.a = clamp(luma_min,0.0,1.0); + + float4 original_color = image.Sample(textureSampler, UV); + + // skip if (alpha is zero and only apply to alpha layer is true) + if (!(original_color.a <= 0.0 && Apply_To_Alpha_Layer == true)) + { + if (Apply_To_Alpha_Layer == false) + original_color.a = alpha; + + col.rgb = lerp(original_color.rgb, col.rgb, alpha); //apply alpha slider + col = lerp(original_color, col, col.a); //remove black background color + } + else + { + col.a = original_color.a; + } + + return col; +} + +void mainImage( out vec4 fragColor, in vec2 fragCoord ) +{ + vec2 uv = fragCoord.xy / uv_size; + fragColor = scene(uv); +} + +/*ps end*/ + +struct VertFragData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertFragData VSDefault(VertFragData vtx) { + vtx.pos = mul(float4(vtx.pos.xyz, 1.0), ViewProj); + return vtx; +} + +float4 PSDefault(VertFragData vtx) : TARGET { + float4 col = float4(1., 1., 1., 1.); + mainImage(col, vtx.uv * uv_size); + return col; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vtx); + pixel_shader = PSDefault(vtx); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSMultiplyShader { + +[Alias('Set-OBSMultiplyShader','Add-OBSMultiplyShader')] +param( +# Set the other_image of OBSMultiplyShader +[Alias('other_image')] +[ComponentModel.DefaultBindingProperty('other_image')] +[String] +$OtherImage, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'multiply' +$ShaderNoun = 'OBSMultiplyShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d other_image; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 other = other_image.Sample(textureSampler, v_in.uv); + float4 base = image.Sample(textureSampler, v_in.uv); + return base * other; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSNightSkyShader { + +[Alias('Set-OBSNightSkyShader','Add-OBSNightSkyShader')] +param( +# Set the speed of OBSNightSkyShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the Include_Clouds of OBSNightSkyShader +[Alias('Include_Clouds')] +[ComponentModel.DefaultBindingProperty('Include_Clouds')] +[Management.Automation.SwitchParameter] +$IncludeClouds, +# Set the Include_Moon of OBSNightSkyShader +[Alias('Include_Moon')] +[ComponentModel.DefaultBindingProperty('Include_Moon')] +[Management.Automation.SwitchParameter] +$IncludeMoon, +# Set the center_width_percentage of OBSNightSkyShader +[Alias('center_width_percentage')] +[ComponentModel.DefaultBindingProperty('center_width_percentage')] +[Int32] +$CenterWidthPercentage, +# Set the center_height_percentage of OBSNightSkyShader +[Alias('center_height_percentage')] +[ComponentModel.DefaultBindingProperty('center_height_percentage')] +[Int32] +$CenterHeightPercentage, +# Set the Alpha_Percentage of OBSNightSkyShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Apply_To_Image of OBSNightSkyShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSNightSkyShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the number_stars of OBSNightSkyShader +[Alias('number_stars')] +[ComponentModel.DefaultBindingProperty('number_stars')] +[Int32] +$NumberStars, +# Set the SKY_COLOR of OBSNightSkyShader +[Alias('SKY_COLOR')] +[ComponentModel.DefaultBindingProperty('SKY_COLOR')] +[String] +$SKYCOLOR, +# Set the STAR_COLOR of OBSNightSkyShader +[Alias('STAR_COLOR')] +[ComponentModel.DefaultBindingProperty('STAR_COLOR')] +[String] +$STARCOLOR, +# Set the LIGHT_SKY of OBSNightSkyShader +[Alias('LIGHT_SKY')] +[ComponentModel.DefaultBindingProperty('LIGHT_SKY')] +[String] +$LIGHTSKY, +# Set the SKY_LIGHTNESS of OBSNightSkyShader +[Alias('SKY_LIGHTNESS')] +[ComponentModel.DefaultBindingProperty('SKY_LIGHTNESS')] +[Single] +$SKYLIGHTNESS, +# Set the MOON_COLOR of OBSNightSkyShader +[Alias('MOON_COLOR')] +[ComponentModel.DefaultBindingProperty('MOON_COLOR')] +[String] +$MOONCOLOR, +# Set the moon_size of OBSNightSkyShader +[Alias('moon_size')] +[ComponentModel.DefaultBindingProperty('moon_size')] +[Single] +$MoonSize, +# Set the moon_bump_size of OBSNightSkyShader +[Alias('moon_bump_size')] +[ComponentModel.DefaultBindingProperty('moon_bump_size')] +[Single] +$MoonBumpSize, +# Set the Moon_Position_x of OBSNightSkyShader +[Alias('Moon_Position_x')] +[ComponentModel.DefaultBindingProperty('Moon_Position_x')] +[Single] +$MoonPositionX, +# Set the Moon_Position_y of OBSNightSkyShader +[Alias('Moon_Position_y')] +[ComponentModel.DefaultBindingProperty('Moon_Position_y')] +[Single] +$MoonPositionY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'night_sky' +$ShaderNoun = 'OBSNightSkyShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Night Sky shader by Charles Fettinger for obs-shaderfilter plugin 6/2020 v.65 +// https://github.com/Oncorporation/obs-shaderfilter +//https://www.shadertoy.com/view/3tfXRM Simple Night Sky - converted from and updated +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 20.0; +uniform bool Include_Clouds = true; +uniform bool Include_Moon = true; +uniform int center_width_percentage< + string label = "Center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_height_percentage< + string label = "Center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 95.0; // +uniform bool Apply_To_Image = false; +uniform bool Replace_Image_Color = false; +uniform int number_stars< + string label = "Number stars"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 20; // + +uniform float4 SKY_COLOR = { 0.027, 0.151, 0.354, 1.0 }; +uniform float4 STAR_COLOR = { 0.92, 0.92, 0.14, 1.0 }; +uniform float4 LIGHT_SKY = { 0.45, 0.61, 0.98, 1.0 }; +uniform float SKY_LIGHTNESS< + string label = "SKY LIGHTNESS"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = .3; + + // Moon +uniform float4 MOON_COLOR = { .4, .25, 0.25, 1.0 }; +uniform float moon_size< + string label = "Moon size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.18; +uniform float moon_bump_size< + string label = "Moon bump size"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.14; +uniform float Moon_Position_x< + string label = "Moon Position x"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = -0.6; +uniform float Moon_Position_y< + string label = "Moon Position y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = -0.3; + +#define PI 3.1416 + +//Noise functions from https://www.youtube.com/watch?v=zXsWftRdsvU +float noise11(float p) { + return frac(sin(p*633.1847) * 9827.95); +} + +float noise21(float2 p) { + return frac(sin(p.x*827.221 + p.y*3228.8275) * 878.121); +} + +float2 noise22(float2 p) { + return frac(float2(sin(p.x*9378.35), sin(p.y*75.589)) * 556.89); +} + +//From https://codepen.io/Tobsta/post/procedural-generation-part-1-1d-perlin-noise +float cosineInterpolation(float a, float b, float x) { + float ft = x * PI; + float f = (1. - cos(ft)) * .5; + return a * (1. - f) + b * f; +} + +float smoothNoise11(float p, float dist) { + float prev = noise11(p-dist); + float next = noise11(p+dist); + + return cosineInterpolation(prev, next, .5); +} + +float smoothNoise21(float2 uv, float cells) { + float2 lv = frac(uv*cells); + float2 id = floor(uv*cells); + + //smoothstep function: maybe change it later! + lv = lv*lv*(3.-2.*lv); + + float bl = noise21(id); + float br = noise21(id+float2(1.,0.)); + float b = lerp(bl, br, lv.x); + + float tl = noise21(id+float2(0.,1.)); + float tr = noise21(id+float2(1.,1.)); + float t = lerp(tl, tr, lv.x); + + return lerp(b, t, lv.y); +} + +float2 smoothNoise22(float2 uv, float cells) { + float2 lv = frac(uv*cells); + float2 id = floor(uv*cells); + + lv = lv*lv*(3.-2.*lv); + + float2 bl = noise22(id); + float2 br = noise22(id+float2(1.,0.)); + float2 b = lerp(bl, br, lv.x); + + float2 tl = noise22(id+float2(0.,1.)); + float2 tr = noise22(id+float2(1.,1.)); + float2 t = lerp(tl, tr, lv.x); + + return lerp(b, t, lv.y); +} + +float valueNoise11(float p) { + float c = smoothNoise11(p, 0.5); + c += smoothNoise11(p, 0.25)*.5; + c += smoothNoise11(p, 0.125)*.25; + c += smoothNoise11(p, 0.0625)*.125; + + return c /= .875; +} + +float valueNoise21(float2 uv) { + float c = smoothNoise21(uv, 4.); + c += smoothNoise21(uv, 8.)*.5; + c += smoothNoise21(uv, 16.)*.25; + c += smoothNoise21(uv, 32.)*.125; + c += smoothNoise21(uv, 64.)*.0625; + + return c /= .9375; +} + +float2 valueNoise22(float2 uv) { + float2 c = smoothNoise22(uv, 4.); + c += smoothNoise22(uv, 8.)*.5; + c += smoothNoise22(uv, 16.)*.25; + c += smoothNoise22(uv, 32.)*.125; + c += smoothNoise22(uv, 64.)*.0625; + + return c /= .9375; +} + +float3 points(float2 p, float2 uv, float3 color, float size, float blur) { + float dist = distance(p, uv); + return color*smoothstep(size, size*(0.999-blur), dist); +} + +float mapInterval(float x, float a, float b, float c, float d) { + return (x-a)/(b-a) * (d-c) + c; +} + +float blink(float time, float timeInterval) { + float halfInterval = timeInterval / 2.0; + //Get relative position in the bucket + float p = fmod(time, timeInterval); + + + if (p <= timeInterval / 2.) { + return smoothstep(0., 1., p/halfInterval); + } else { + return smoothstep(1., 0., (p-halfInterval)/halfInterval); + } +} + +float3 sampleBumps(float2 p, float2 uv, float radius, float spin) { + float dist = distance(p, uv); + float3 BumpSamples = float3(0.,0.,0.); + + if (dist < radius) { + float bumps = (1.-valueNoise21(uv*spin))*.1; + BumpSamples = float3(bumps, bumps, bumps); + } + return BumpSamples; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 rgba;// = image.Sample(textureSampler, v_in.uv); + float alpha = clamp(Alpha_Percentage *.01 ,0,1.0); + float2 center_pixel_coordinates = float2((center_width_percentage * 0.01), (center_height_percentage * 0.01)); + float2 st = v_in.uv* uv_scale; + float2 toCenter = center_pixel_coordinates - st; + + // Normalized pixel coordinates (from 0 to 1) + float2 uv = v_in.uv; + float2 ouv = uv; + uv -= .5; + uv.x *= uv_size.x/uv_size.y; + + float2 seed = toCenter / uv_size.xy; + + float time = elapsed_time + seed.x*speed; + + //float3 col = float3(0.0); + //float m = valueNoise21(uv); + float3 col = lerp(SKY_COLOR.rgb, LIGHT_SKY.rgb, ouv.y-SKY_LIGHTNESS); + + col *= SKY_LIGHTNESS - (1.-ouv.y); + + //Add clouds + if (Include_Clouds) + { + float2 timeUv = uv; + timeUv.x += time*.1; + timeUv.y += valueNoise11(timeUv.x+.352)*.01; + float cloud = valueNoise21(timeUv); + col += cloud*.1; + } + + //Add stars in the top part of the scene + float timeInterval = speed *.5; //5.0 + float timeBucket = floor(time / timeInterval); + + float2 moonPosition = float2(-1000, -1000); + if (Include_Moon) + { + moonPosition = float2(Moon_Position_x, Moon_Position_y); + col += points(moonPosition, uv, MOON_COLOR.rgb,moon_size, 0.3); + // Moon bumps + col += sampleBumps(moonPosition, uv, moon_bump_size, 9. + fmod(time*.1,9)); + } + + for (float i = 0.; i < clamp(number_stars,0,100); i++) { + float2 starPosition = float2(i/10., i/10.); + + starPosition.x = mapInterval(valueNoise11(timeBucket + i*827.913)-.4, 0., 1., 0.825, -0.825); + starPosition.y = mapInterval(valueNoise11(starPosition.x)-.3, 0., 1., 0.445, -0.445); + + float starIntensity = blink(time+ (rand_f * i), timeInterval ); + //Hide stars that are behind the moon + if (distance(starPosition, moonPosition) > moon_size) { + col += points(starPosition, uv, STAR_COLOR.rgb, 0.001, 0.0)*clamp(starIntensity-.1, 0.0, 1.0)*10.0; + col += points(starPosition, uv, STAR_COLOR.rgb, 0.009, 3.5)*starIntensity*3.0; + } + } + //col = float3(blink(time, timeInterval)); + rgba = float4(col,alpha); + + // Output to screen + if (Apply_To_Image) + { + float4 color = image.Sample(textureSampler, v_in.uv); + float4 original_color = color; + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, rgba * color,alpha); + + } + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSOpacityShader { + +[Alias('Set-OBSOpacityShader','Add-OBSOpacityShader')] +param( +# Set the Opacity of OBSOpacityShader +[ComponentModel.DefaultBindingProperty('Opacity')] +[Single] +$Opacity, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'opacity' +$ShaderNoun = 'OBSOpacityShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Opacity shader - for OBS Shaderfilter +// Copyright 2021 by SkeltonBowTV +// https://twitter.com/skeletonbowtv +// https://twitch.tv/skeletonbowtv + +uniform float Opacity< + string label = "Opacity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200.0; + float step = 0.01; +> = 100.00; // 0.00 - 100.00 percent + +float4 mainImage( VertData v_in ) : TARGET +{ + float4 color = image.Sample( textureSampler, v_in.uv ); + return float4( color.rgb, color.a * Opacity * 0.01 ); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSPagePeelShader { + +[Alias('Set-OBSPagePeelShader','Add-OBSPagePeelShader')] +param( +# Set the Speed of OBSPagePeelShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Position of OBSPagePeelShader +[ComponentModel.DefaultBindingProperty('Position')] +[Single] +$Position, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'page-peel' +$ShaderNoun = 'OBSPagePeelShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simple Page Peel, Version 0.01, for OBS Shaderfilter +// Copyright ©️ 2023 by SkeletonBow +// License: Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License +// Contact info: +// Twitter: +// Twitch: +// YouTube: +// Soundcloud: +// +// Based on Shadertoy shader by droozle +// +// Description: +// +// +// Changelog: +// 0.01 - Initial release + +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 50.0; + float step = 0.001; +> = 1.00; +uniform float Position< + string label = "Position"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.001; +> = 0.0; + +float4 mainImage( VertData v_in ) : TARGET +{ + // Normalized pixel coordinates (from 0 to 1) + float2 aspect = float2( uv_size.x / uv_size.y, 1.0 ); + float2 uv = v_in.uv; + + float t = Position + elapsed_time * Speed; + // Define the fold. + float2 origin = float2( 0.6 + 0.4 * sin( t * 0.2 ), 0.5 + 0.5 * cos( t * 0.13 ) ) * aspect; + float2 normal = normalize( float2( 1.0, 2.0 * sin( t * 0.3 ) ) * aspect ); + + // Sample texture. + float3 col = image.Sample( textureSampler, uv ).rgb; // Front color. + + // Check on which side the pixel lies. + float2 pt = uv * aspect - origin; + float side = dot( pt, normal ); + if( side > 0.0 ) { + col *= 0.25; // Background color (peeled off). + + float shadow = smoothstep( 0.0, 0.05, side ); + col = lerp( col * 0.6, col, shadow ); + } + else { + // Find the mirror pixel. + pt = ( uv * aspect - 2.0 * side * normal ) / aspect; + + // Check if we''re still inside the image bounds. + if( pt.x >= 0.0 && pt.x < 1.0 && pt.y >= 0.0 && pt.y < 1.0 ) { + float4 back = image.Sample( textureSampler, pt ); // Back color. + back.rgb = back.rgb * 0.25 + 0.75; + + float shadow = smoothstep( 0.0, 0.2, -side ); + back.rgb = lerp( back.rgb * 0.2, back.rgb, shadow ); + + // Support for transparency. + col = lerp( col, back.rgb, back.a ); + } + } + + // Output to screen + return float4(col,1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSPagePeelTransitionShader { + +[Alias('Set-OBSPagePeelTransitionShader','Add-OBSPagePeelTransitionShader')] +param( +# Set the image_a of OBSPagePeelTransitionShader +[Alias('image_a')] +[ComponentModel.DefaultBindingProperty('image_a')] +[String] +$ImageA, +# Set the image_b of OBSPagePeelTransitionShader +[Alias('image_b')] +[ComponentModel.DefaultBindingProperty('image_b')] +[String] +$ImageB, +# Set the transition_time of OBSPagePeelTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBSPagePeelTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# Set the page_color of OBSPagePeelTransitionShader +[Alias('page_color')] +[ComponentModel.DefaultBindingProperty('page_color')] +[String] +$PageColor, +# Set the page_transparency of OBSPagePeelTransitionShader +[Alias('page_transparency')] +[ComponentModel.DefaultBindingProperty('page_transparency')] +[Single] +$PageTransparency, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'page-peel-transition' +$ShaderNoun = 'OBSPagePeelTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform texture2d image_a; +uniform texture2d image_b; +uniform float transition_time< + string label = "Transittion Time"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform bool convert_linear = true; +uniform float4 page_color = {1.0, 1.0, 1.0, 1.0}; +uniform float page_transparency< + string label = "Page Transparency"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + // Normalized pixel coordinates (from 0 to 1) + float2 aspect = float2( uv_size.x / uv_size.y, 1.0 ); + float2 uv = v_in.uv; + + float t = transition_time * 12.0 + 11.0; + // Define the fold. + float2 origin = float2( 0.6 + 0.6 * sin( t * 0.2 ), 0.5 + 0.5 * cos( t * 0.13 ) ) * aspect; + float2 normal = normalize( float2( 1.0, 2.0 * sin( t * 0.3 ) ) * aspect ); + + // Sample texture. + float3 col = float3(1.0,0.0,0.0); + + // Check on which side the pixel lies. + float2 pt = uv * aspect - origin; + float side = dot( pt, normal ); + if( side > 0.0 ) { + // Next page + col = image_b.Sample( textureSampler, uv ).rgb; + + float shadow = smoothstep( 0.0, 0.05, side ); + col = lerp( col * 0.6, col, shadow ); + } + else { + + + // Find the mirror pixel. + pt = ( uv * aspect - 2.0 * side * normal ) / aspect; + + // Check if we''re still inside the image bounds. + if( pt.x >= 0.0 && pt.x < 1.0 && pt.y >= 0.0 && pt.y < 1.0 ) { + col = image_a.Sample( textureSampler, pt ).rgb; // Back color. + col = lerp(page_color.rgb, col, page_transparency); + + float shadow = smoothstep( 0.0, 0.2, -side ); + col = lerp( col * 0.2, col, shadow ); + }else{ + col = image_a.Sample( textureSampler, uv ).rgb; + } + } + + // Output to screen + if(convert_linear) + col = srgb_nonlinear_to_linear(col); + return float4(col,1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSPerlinNoiseShader { + +[Alias('Set-OBSPerlinNoiseShader','Add-OBSPerlinNoiseShader')] +param( +# Set the speed of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the animated of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('animated')] +[Management.Automation.SwitchParameter] +$Animated, +# Set the apply_to_channel of OBSPerlinNoiseShader +[Alias('apply_to_channel')] +[ComponentModel.DefaultBindingProperty('apply_to_channel')] +[Management.Automation.SwitchParameter] +$ApplyToChannel, +# Set the inverted of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('inverted')] +[Management.Automation.SwitchParameter] +$Inverted, +# Set the multiply of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('multiply')] +[Management.Automation.SwitchParameter] +$Multiply, +# Set the speed_horizonal of OBSPerlinNoiseShader +[Alias('speed_horizonal')] +[ComponentModel.DefaultBindingProperty('speed_horizonal')] +[Single] +$SpeedHorizonal, +# Set the speed_vertical of OBSPerlinNoiseShader +[Alias('speed_vertical')] +[ComponentModel.DefaultBindingProperty('speed_vertical')] +[Single] +$SpeedVertical, +# Set the iterations of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('iterations')] +[Int32] +$Iterations, +# Set the white_noise of OBSPerlinNoiseShader +[Alias('white_noise')] +[ComponentModel.DefaultBindingProperty('white_noise')] +[Single] +$WhiteNoise, +# Set the black_noise of OBSPerlinNoiseShader +[Alias('black_noise')] +[ComponentModel.DefaultBindingProperty('black_noise')] +[Single] +$BlackNoise, +# Set the notes of OBSPerlinNoiseShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'perlin_noise' +$ShaderNoun = 'OBSPerlinNoiseShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// +// Noise Shader Library for Unity - https://github.com/keijiro/NoiseShader +// Modified and improved my Charles Fettinger (https://github.com/Oncorporation) 1/2019 +// +// Original work (webgl-noise) Copyright (C) 2011 Stefan Gustavson +// Translation and modification was made by Keijiro Takahashi. +// Conversion for OBS by Charles Fettinger. +// +// This shader is based on the webgl-noise GLSL shader. For further details +// of the original shader, please see the following description from the +// original source code. +// + // +// GLSL textureless classic 2D noise "cnoise", (white_noise) +// with an RSL-style periodic variant "pnoise" (black_noise). +// Author: Stefan Gustavson (stefan.gustavson@liu.se) +// Version: 2011-08-22 +// +// Many thanks to Ian McEwan of Ashima Arts for the +// ideas for permutation and gradient selection. +// +// Copyright (c) 2011 Stefan Gustavson. All rights reserved. +// Distributed under the MIT license. See LICENSE file. +// https://github.com/ashima/webgl-noise +//Converted to OpenGL by Q-mii & Exeldro March 8, 2022 + float4 mod(float4 x, float4 y) +{ + return x - y * floor(x / y); +} + float4 mod289(float4 x) +{ + return x - floor(x / 289.0) * 289.0; +} + float4 permute(float4 x) +{ + return mod289(((x*34.0)+1.0)*x); +} + float4 taylorInvSqrt(float4 r) +{ + return 1.79284291400159 - r * 0.85373472095314; +} + float2 fade(float2 t) { + return t*t*t*(t*(t*6.0-15.0)+10.0); +} + // Classic Perlin noise +float cnoise(float2 P) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac (P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + float4 i = permute(permute(ix) + iy); + float4 gx = frac(i / 41.0) * 2.0 - 1.0 ; + float4 gy = abs(gx) - 0.5 ; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + float2 g00 = float2(gx.x,gy.x); + float2 g10 = float2(gx.y,gy.y); + float2 g01 = float2(gx.z,gy.z); + float2 g11 = float2(gx.w,gy.w); + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} + // Classic Perlin noise, periodic variant +float pnoise(float2 P, float2 rep) +{ + float4 Pi = floor(P.xyxy) + float4(0.0, 0.0, 1.0, 1.0); + float4 Pf = frac (P.xyxy) - float4(0.0, 0.0, 1.0, 1.0); + Pi = mod(Pi, rep.xyxy); // To create noise with explicit period + Pi = mod289(Pi); // To avoid truncation effects in permutation + float4 ix = Pi.xzxz; + float4 iy = Pi.yyww; + float4 fx = Pf.xzxz; + float4 fy = Pf.yyww; + float4 i = permute(permute(ix) + iy); + float4 gx = frac(i / 41.0) * 2.0 - 1.0 ; + float4 gy = abs(gx) - 0.5 ; + float4 tx = floor(gx + 0.5); + gx = gx - tx; + float2 g00 = float2(gx.x,gy.x); + float2 g10 = float2(gx.y,gy.y); + float2 g01 = float2(gx.z,gy.z); + float2 g11 = float2(gx.w,gy.w); + float4 norm = taylorInvSqrt(float4(dot(g00, g00), dot(g01, g01), dot(g10, g10), dot(g11, g11))); + g00 *= norm.x; + g01 *= norm.y; + g10 *= norm.z; + g11 *= norm.w; + float n00 = dot(g00, float2(fx.x, fy.x)); + float n10 = dot(g10, float2(fx.y, fy.y)); + float n01 = dot(g01, float2(fx.z, fy.z)); + float n11 = dot(g11, float2(fx.w, fy.w)); + float2 fade_xy = fade(Pf.xy); + float2 n_x = lerp(float2(n00, n01), float2(n10, n11), fade_xy.x); + float n_xy = lerp(n_x.x, n_x.y, fade_xy.y); + return 2.3 * n_xy; +} + //The good bits~ adapting the noise generator for the plugin and giving some control over the shader + //todo: pseudorandom number generator w/ seed +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.5; +uniform bool animated; +uniform bool apply_to_channel; +uniform bool inverted; +uniform bool multiply; +uniform float speed_horizonal< + string label = "Speed horizontal"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.5; +uniform float speed_vertical< + string label = "Speed vertical"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0; +uniform int iterations< + string label = "Iterations"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 20; + int step = 1; +> = 4; +//how much c_noise do we want? white +uniform float white_noise< + string label = "White noise"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.5; +//how much p_noise do we want? black +uniform float black_noise< + string label = "Black noise"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.5; +uniform string notes< + string widget_type = "info"; +> = "white noise and black noise and iterations.. enjoy!"; + + float2 noisePosition(float t){ + return float2(sin(2.2 * t) - cos(1.4 * t), cos(1.3 * t) + sin(-1.9 *t)); +} + float4 mainImage(VertData v_in) : TARGET +{ + float4 color = image.Sample(textureSampler, v_in.uv); + float t = elapsed_time * speed; + float2 dir = float2(speed_horizonal,speed_vertical); + + if(!animated){ + float o = 0.5; + float scale = 1.0; + float w = 0.5; + for(int i = 0; i < iterations; i++){ + float2 coord = v_in.uv * scale; + float2 period = float2(scale * 2.0, scale * 2.0); + + if(white_noise == 0.0 && black_noise == 0.0){ + o += pnoise(coord, period) * w; + } else { + if(white_noise != 0.0){ + o += cnoise(coord) * w * white_noise; + } + if(black_noise != 0.0){ + o += pnoise(coord, period) * w * black_noise; + } + } + + //o += pnoise(coord, period) * w; + + scale *= 2.0; + w *= 0.5; + } + if(inverted){ + o = 1 - o; + } + if(apply_to_channel){ + if(multiply){ + return float4(color.r,color.g,color.b,color.a*o); + } else { + return float4(color.r,color.g,color.b,o); + } + } else { + return float4(o,o,o,1.0); + } + } else { + float o = 0.5; + float scale = 1.0; + float w = 0.5; + for(int i = 0; i < iterations; i++){ + float2 coord = (v_in.uv + t*dir) * scale; + float2 period = float2(scale * 2.0, scale * 2.0); + + if(white_noise == 0.0 && black_noise == 0.0){ + o += pnoise(coord, period) * w; + } else { + if(white_noise != 0.0){ + o += cnoise(coord) * w * white_noise; + } + if(black_noise != 0.0){ + o += pnoise(coord, period) * w * black_noise; + } + } + + scale *= 2.0; + w *= 0.5; + } + if(inverted){ + o = 1 - o; + } + if(apply_to_channel){ + if(multiply){ + return float4(color.r,color.g,color.b,color.a*o); + } else { + return float4(color.r,color.g,color.b,o); + } + } else { + return float4(o,o,o,1.0); + } + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSPieChartShader { + +[Alias('Set-OBSPieChartShader','Add-OBSPieChartShader')] +param( +# Set the inner_radius of OBSPieChartShader +[Alias('inner_radius')] +[ComponentModel.DefaultBindingProperty('inner_radius')] +[Single] +$InnerRadius, +# Set the outer_radius of OBSPieChartShader +[Alias('outer_radius')] +[ComponentModel.DefaultBindingProperty('outer_radius')] +[Single] +$OuterRadius, +# Set the start_angle of OBSPieChartShader +[Alias('start_angle')] +[ComponentModel.DefaultBindingProperty('start_angle')] +[Single] +$StartAngle, +# Set the total of OBSPieChartShader +[ComponentModel.DefaultBindingProperty('total')] +[Int32] +$Total, +# Set the part_1 of OBSPieChartShader +[Alias('part_1')] +[ComponentModel.DefaultBindingProperty('part_1')] +[Int32] +$Part1, +# Set the color_1 of OBSPieChartShader +[Alias('color_1')] +[ComponentModel.DefaultBindingProperty('color_1')] +[String] +$Color1, +# Set the part_2 of OBSPieChartShader +[Alias('part_2')] +[ComponentModel.DefaultBindingProperty('part_2')] +[Int32] +$Part2, +# Set the color_2 of OBSPieChartShader +[Alias('color_2')] +[ComponentModel.DefaultBindingProperty('color_2')] +[String] +$Color2, +# Set the part_3 of OBSPieChartShader +[Alias('part_3')] +[ComponentModel.DefaultBindingProperty('part_3')] +[Int32] +$Part3, +# Set the color_3 of OBSPieChartShader +[Alias('color_3')] +[ComponentModel.DefaultBindingProperty('color_3')] +[String] +$Color3, +# Set the part_4 of OBSPieChartShader +[Alias('part_4')] +[ComponentModel.DefaultBindingProperty('part_4')] +[Int32] +$Part4, +# Set the color_4 of OBSPieChartShader +[Alias('color_4')] +[ComponentModel.DefaultBindingProperty('color_4')] +[String] +$Color4, +# Set the part_5 of OBSPieChartShader +[Alias('part_5')] +[ComponentModel.DefaultBindingProperty('part_5')] +[Int32] +$Part5, +# Set the color_5 of OBSPieChartShader +[Alias('color_5')] +[ComponentModel.DefaultBindingProperty('color_5')] +[String] +$Color5, +# Set the part_6 of OBSPieChartShader +[Alias('part_6')] +[ComponentModel.DefaultBindingProperty('part_6')] +[Int32] +$Part6, +# Set the color_6 of OBSPieChartShader +[Alias('color_6')] +[ComponentModel.DefaultBindingProperty('color_6')] +[String] +$Color6, +# Set the part_7 of OBSPieChartShader +[Alias('part_7')] +[ComponentModel.DefaultBindingProperty('part_7')] +[Int32] +$Part7, +# Set the color_7 of OBSPieChartShader +[Alias('color_7')] +[ComponentModel.DefaultBindingProperty('color_7')] +[String] +$Color7, +# Set the part_8 of OBSPieChartShader +[Alias('part_8')] +[ComponentModel.DefaultBindingProperty('part_8')] +[Int32] +$Part8, +# Set the color_8 of OBSPieChartShader +[Alias('color_8')] +[ComponentModel.DefaultBindingProperty('color_8')] +[String] +$Color8, +# Set the part_9 of OBSPieChartShader +[Alias('part_9')] +[ComponentModel.DefaultBindingProperty('part_9')] +[Int32] +$Part9, +# Set the color_9 of OBSPieChartShader +[Alias('color_9')] +[ComponentModel.DefaultBindingProperty('color_9')] +[String] +$Color9, +# Set the part_10 of OBSPieChartShader +[Alias('part_10')] +[ComponentModel.DefaultBindingProperty('part_10')] +[Int32] +$Part10, +# Set the color_10 of OBSPieChartShader +[Alias('color_10')] +[ComponentModel.DefaultBindingProperty('color_10')] +[String] +$Color10, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'pie-chart' +$ShaderNoun = 'OBSPieChartShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float inner_radius< + string label = "inner radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 32.0; +uniform float outer_radius< + string label = "outer radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 50.0; +uniform float start_angle< + string label = "Start angle"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 360.0; + float step = 0.1; +> = 90.0; + +uniform int total< + string label = "Total"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 100; +uniform int part_1< + string label = "Part 1"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 50; +uniform float4 color_1 = {0.0,0.26,0.62,1.0}; +uniform int part_2< + string label = "Part 2"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 25; +uniform float4 color_2 = {0.24,0.40,0.68,1.0}; +uniform int part_3< + string label = "Part 3"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 10; +uniform float4 color_3 = {0.38,0.56,0.75,1.0}; +uniform int part_4< + string label = "Part 4"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 5; +uniform float4 color_4 = {0.52,0.72,0.81,1.0}; +uniform int part_5< + string label = "Part 5"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 3; +uniform float4 color_5 = {0.69,0.87,0.86,1.0}; +uniform int part_6< + string label = "Part 6"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 2; +uniform float4 color_6 = {1.0,0.79,0.73,1.0}; +uniform int part_7< + string label = "Part 7"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 1; +uniform float4 color_7 = {0.99,0.57,0.57,1.0}; +uniform int part_8< + string label = "Part 8"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 1; +uniform float4 color_8 = {0.91,0.36,0.44,1.0}; +uniform int part_9< + string label = "Part 9"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 1; +uniform float4 color_9 = {0.77,0.16,0.32,1.0}; +uniform int part_10< + string label = "Part 10"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 1000; + int step = 1; +> = 0; +uniform float4 color_10 = {0.58,0.0,0.23,1.0}; + +float4 mainImage(VertData v_in) : TARGET +{ + const float pi = 3.14159265358979323846; +#ifdef OPENGL + float[10] parts = float[10](part_1, part_2, part_3, part_4, part_5, part_6, part_7, part_8, part_9, part_10); + float4[10] colors = float4[10](color_1, color_2, color_3, color_4, color_5, color_6, color_7, color_8, color_9, color_10); +#else + float parts[] = {part_1, part_2, part_3, part_4, part_5, part_6, part_7, part_8, part_9, part_10}; + float4 colors[] = {color_1, color_2, color_3, color_4, color_5, color_6, color_7, color_8, color_9, color_10}; +#endif + float2 center = float2(0.5, 0.5); + float2 factor; + if(uv_size.x < uv_size.y){ + factor = float2(1.0, uv_size.y/uv_size.x); + }else{ + factor = float2(uv_size.x/uv_size.y, 1.0); + } + center = center * factor; + float d = distance(center, v_in.uv * factor); + if(d > outer_radius/100.0 || d < inner_radius/100.0){ + return image.Sample(textureSampler, v_in.uv); + } + float2 toCenter = center - v_in.uv*factor; + float angle = atan2(toCenter.y ,toCenter.x); + angle = angle - (start_angle / 180.0 * pi); + if(angle < 0.0) + angle = pi + pi + angle; + if(angle < 0.0) + angle = pi + pi + angle; + angle = angle / (pi + pi); + float t = 0.0; + for(int i = 0; i < 10; i+=1) { + float part = parts[i]/total; + if(angle > t && angle <= t+part){ + return colors[i]; + } + t = t + part; + } + return image.Sample(textureSampler, v_in.uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSPixelationShader { + +[Alias('Set-OBSPixelationShader','Add-OBSPixelationShader')] +param( +# Set the Target_Width of OBSPixelationShader +[Alias('Target_Width')] +[ComponentModel.DefaultBindingProperty('Target_Width')] +[Single] +$TargetWidth, +# Set the Target_Height of OBSPixelationShader +[Alias('Target_Height')] +[ComponentModel.DefaultBindingProperty('Target_Height')] +[Single] +$TargetHeight, +# Set the notes of OBSPixelationShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'pixelation' +$ShaderNoun = 'OBSPixelationShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// pixelation shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +// with help from SkeltonBowTV +// https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 15, 2022 +uniform float Target_Width< + string label = "Target Width"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2000.0; + float step = 0.1; +> = 320.0; +uniform float Target_Height< + string label = "Target Height"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2000.0; + float step = 0.1; +> = 180.0; +uniform string notes< + string widget_type = "info"; +> = "adjust width and height to your screen dimension"; + +float4 mainImage(VertData v_in) : TARGET +{ + float targetWidth = Target_Width; + if(targetWidth < 2.0) + targetWidth = 2.0; + float targetHeight = Target_Height; + if(targetHeight < 2.0) + targetHeight = 2.0; + float2 tex1; + int pixelSizeX = int(uv_size.x / targetWidth); + int pixelSizeY = int(uv_size.y / targetHeight); + + int pixelX = int(v_in.uv.x * uv_size.x); + int pixelY = int(v_in.uv.y * uv_size.y); + + tex1.x = ((float(pixelX / pixelSizeX)*float(pixelSizeX)) / uv_size.x) + (float(pixelSizeX) / uv_size.x)/2.0; + tex1.y = ((float(pixelY / pixelSizeY)*float(pixelSizeY)) / uv_size.y) + (float(pixelSizeY) / uv_size.y)/2.0; + + float4 c1 = image.Sample(textureSampler, tex1 ); + + return c1; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSPixelationTransitionShader { + +[Alias('Set-OBSPixelationTransitionShader','Add-OBSPixelationTransitionShader')] +param( +# Set the transition_time of OBSPixelationTransitionShader +[Alias('transition_time')] +[ComponentModel.DefaultBindingProperty('transition_time')] +[Single] +$TransitionTime, +# Set the convert_linear of OBSPixelationTransitionShader +[Alias('convert_linear')] +[ComponentModel.DefaultBindingProperty('convert_linear')] +[Management.Automation.SwitchParameter] +$ConvertLinear, +# Set the power of OBSPixelationTransitionShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# Set the center_x of OBSPixelationTransitionShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSPixelationTransitionShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'pixelation-transition' +$ShaderNoun = 'OBSPixelationTransitionShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float transition_time< + string label = "Transittion Time"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform bool convert_linear = true; +uniform float power< + string label = "Power"; + string widget_type = "slider"; + float minimum = 0.5; + float maximum = 8.0; + float step = 0.01; +> = 3.0; +uniform float center_x< + string label = "X"; + string widget_type = "slider"; + string group = "Center"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform float center_y< + string label = "Y"; + string widget_type = "slider"; + string group = "Center"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + //1..0..1 + float scale = abs(transition_time - 0.5) * 2.0; + scale = pow(scale, power); + + float2 uv = v_in.uv; + uv -= float2(center_x, center_y); + uv *= uv_size; + uv *= scale; + uv = floor(uv); + uv /= scale; + uv /= uv_size; + uv += float2(center_x, center_y); + uv = clamp(uv, 1.0/uv_size, 1.0); + float4 rgba = image.Sample(textureSampler, uv); + if(convert_linear) + rgba.rgb = srgb_nonlinear_to_linear(rgba.rgb); + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSPolarShader { + +[Alias('Set-OBSPolarShader','Add-OBSPolarShader')] +param( +# Set the center_x of OBSPolarShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSPolarShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# Set the point_y of OBSPolarShader +[Alias('point_y')] +[ComponentModel.DefaultBindingProperty('point_y')] +[Single] +$PointY, +# Set the flip of OBSPolarShader +[ComponentModel.DefaultBindingProperty('flip')] +[Management.Automation.SwitchParameter] +$Flip, +# Set the rotate of OBSPolarShader +[ComponentModel.DefaultBindingProperty('rotate')] +[Single] +$Rotate, +# Set the repeat of OBSPolarShader +[ComponentModel.DefaultBindingProperty('repeat')] +[Single] +$Repeat, +# Set the scale of OBSPolarShader +[ComponentModel.DefaultBindingProperty('scale')] +[Single] +$Scale, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'polar' +$ShaderNoun = 'OBSPolarShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +#define PI 3.14159265359 +#define PI_2 6.2831 +#define mod(x,y) (x - y * floor(x / y)) + +uniform float center_x< + string label = "Center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform float center_y< + string label = "Center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +uniform float point_y< + string label = "Point y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform bool flip; + +uniform float rotate< + string label = "Rotate"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float repeat< + string label = "Repeat"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 20.0; + float step = 0.001; +> = 1.0; + +uniform float scale< + string label = "Scale"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + uv.x -= center_x ; + uv.y -= center_y ; + uv.x = uv.x * ( uv_size.x / uv_size.y); + float pixel_angle = atan2(uv.x,uv.y)/PI_2+0.5; + if(repeat < 1.0){ + pixel_angle = mod(pixel_angle+rotate,1.0); + if(pixel_angle > repeat) + return float4(0,0,0,0); + pixel_angle = mod(pixel_angle/repeat,1.0); + } else { + pixel_angle = mod(pixel_angle*repeat+rotate, 1.0); + } + float pixel_distance = length(uv)/ scale - point_y; + float2 uv2 = float2(pixel_angle , pixel_distance); + if(flip) + uv2 = float2(1.0,1.0) - uv2; + return image.Sample(textureSampler,uv2); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSPulseShader { + +[Alias('Set-OBSPulseShader','Add-OBSPulseShader')] +param( +# Set the ViewProj of OBSPulseShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSPulseShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSPulseShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSPulseShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSPulseShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSPulseShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSPulseShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSPulseShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the speed of OBSPulseShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the min_growth_pixels of OBSPulseShader +[Alias('min_growth_pixels')] +[ComponentModel.DefaultBindingProperty('min_growth_pixels')] +[Single] +$MinGrowthPixels, +# Set the max_growth_pixels of OBSPulseShader +[Alias('max_growth_pixels')] +[ComponentModel.DefaultBindingProperty('max_growth_pixels')] +[Single] +$MaxGrowthPixels, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'pulse' +$ShaderNoun = 'OBSPulseShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 1.0; +uniform float min_growth_pixels< + string label = "min growth pixels"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1000.0; + float step = 0.1; +> = 0.0; +uniform float max_growth_pixels< + string label = "max growth pixels"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1000.0; + float step = 0.1; +> = 200.0; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + + float3 pos = v_in.pos.xyz; + float3 direction_from_center = float3((v_in.uv.x - 0.5) * uv_pixel_interval.y / uv_pixel_interval.x, v_in.uv.y - 0.5, 0); + float3 min_pos = pos + direction_from_center * min_growth_pixels / 2; + float3 max_pos = pos + direction_from_center * max_growth_pixels / 2; + + float t = (1 + sin(elapsed_time * speed)) / 2; + float3 current_pos = min_pos * (1 - t) + max_pos * t; + + vert_out.pos = mul(float4(current_pos, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRainbowShader { + +[Alias('Set-OBSRainbowShader','Add-OBSRainbowShader')] +param( +# Set the Saturation of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Saturation')] +[Single] +$Saturation, +# Set the Luminosity of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Luminosity')] +[Single] +$Luminosity, +# Set the Spread of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Spread')] +[Single] +$Spread, +# Set the Speed of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Speed')] +[Single] +$Speed, +# Set the Alpha_Percentage of OBSRainbowShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Vertical of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# Set the Rotational of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Rotational')] +[Management.Automation.SwitchParameter] +$Rotational, +# Set the Rotation_Offset of OBSRainbowShader +[Alias('Rotation_Offset')] +[ComponentModel.DefaultBindingProperty('Rotation_Offset')] +[Single] +$RotationOffset, +# Set the Apply_To_Image of OBSRainbowShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSRainbowShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Apply_To_Specific_Color of OBSRainbowShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSRainbowShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Notes of OBSRainbowShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rainbow' +$ShaderNoun = 'OBSRainbowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Rainbow shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +// https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 13, 2022 +uniform float Saturation< + string label = "Saturation"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.8; // +uniform float Luminosity< + string label = "Luminosity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; // +uniform float Spread< + string label = "Spread"; + string widget_type = "slider"; + float minimum = 0.5; + float maximum = 10.0; + float step = 0.01; +> = 3.8; // +uniform float Speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 2.4; // +uniform float Alpha_Percentage< + string label = "Rotation Offset"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; // +uniform bool Vertical; +uniform bool Rotational; +uniform float Rotation_Offset< + string label = "Rotation Offset"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 6.28318531; + float step = 0.001; +> = 0.0; // +uniform bool Apply_To_Image; +uniform bool Replace_Image_Color; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform string Notes< + string widget_type = "info"; +> = "Spread is wideness of color and is limited between .25 and 10. Edit at your own risk"; + +float hueToRGB(float v1, float v2, float vH) { + vH = frac(vH); + if ((6.0 * vH) < 1.0) return (v1 + (v2 - v1) * 6.0 * vH); + if ((2.0 * vH) < 1.0) return (v2); + if ((3.0 * vH) < 2.0) return (v1 + (v2 - v1) * ((0.6666666666666667) - vH) * 6.0); + return clamp(v1, 0.0, 1.0); +} + +float4 HSLtoRGB(float4 hsl) { + float4 rgb = float4(0.0, 0.0, 0.0, hsl.w); + float v1 = 0.0; + float v2 = 0.0; + + if (hsl.y == 0) { + rgb.xyz = hsl.zzz; + } + else { + + if (hsl.z < 0.5) { + v2 = hsl.z * (1 + hsl.y); + } + else { + v2 = (hsl.z + hsl.y) - (hsl.y * hsl.z); + } + + v1 = 2.0 * hsl.z - v2; + + rgb.x = hueToRGB(v1, v2, hsl.x + (0.3333333333333333)); + rgb.y = hueToRGB(v1, v2, hsl.x); + rgb.z = hueToRGB(v1, v2, hsl.x - (0.3333333333333333)); + + } + + return rgb; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 lPos = (v_in.uv * uv_scale + uv_offset)/ clamp(Spread, 0.25, 10.0); + float time = (elapsed_time * clamp(Speed, -5.0, 5.0)) / clamp(Spread, 0.25, 10.0); + + //set colors and direction + float hue = (-1 * lPos.x) / 2.0; + + if (Rotational && (Vertical == false)) + { + float timeWithOffset = time + Rotation_Offset; + float sine = sin(timeWithOffset); + float cosine = cos(timeWithOffset); + hue = (lPos.x * cosine + lPos.y * sine) * 0.5; + } + + if (Vertical && (Rotational == false)) + { + hue = (-1 * lPos.y) * 0.5; + } + + hue += time; + hue = frac(hue); + float4 hsl = float4(hue, clamp(Saturation, 0.0, 1.0), clamp(Luminosity, 0.0, 1.0), 1.0); + float4 rgba = HSLtoRGB(hsl); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + float luma = 0.30*color.r+0.59*color.g+0.11*color.b+1.0*color.a; + float4 luma_color = float4(luma, luma, luma, luma); + if (Replace_Image_Color) + color = luma_color; + rgba = lerp(original_color, rgba * color,clamp(Alpha_Percentage *.01 ,0,1.0)); + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, clamp(Alpha_Percentage * .01, 0, 1.0)); + } + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRainWindowShader { + +[Alias('Set-OBSRainWindowShader','Add-OBSRainWindowShader')] +param( +# Set the size of OBSRainWindowShader +[ComponentModel.DefaultBindingProperty('size')] +[Single] +$Size, +# Set the blurSize of OBSRainWindowShader +[ComponentModel.DefaultBindingProperty('blurSize')] +[Single] +$BlurSize, +# Set the trail_strength of OBSRainWindowShader +[Alias('trail_strength')] +[ComponentModel.DefaultBindingProperty('trail_strength')] +[Single] +$TrailStrength, +# Set the trail_color of OBSRainWindowShader +[Alias('trail_color')] +[ComponentModel.DefaultBindingProperty('trail_color')] +[Single] +$TrailColor, +# Set the speed of OBSRainWindowShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the debug of OBSRainWindowShader +[ComponentModel.DefaultBindingProperty('debug')] +[Management.Automation.SwitchParameter] +$DebugShader, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rain-window' +$ShaderNoun = 'OBSRainWindowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// https://www.shadertoy.com/view/slfSzS adopted for OBS by Exeldro +// shader derived from Heartfelt - by Martijn Steinrucken aka BigWings - 2017 +// https://www.shadertoy.com/view/ltffzl +// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. + +uniform float size< + string label = "Rain Drop Size"; + string widget_type = "slider"; + float minimum = 0.001; + float maximum = 0.5; + float step = 0.01; +> = 0.2; +uniform float blurSize< + string label = "Blur Radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 32.0; // BLUR SIZE (Radius) +uniform float trail_strength< + string label = "Trail Strength"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100.0; +uniform float trail_color< + string label = "Trail Color"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 40.0; +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200.0; + float step = 0.01; +> = 100.0; +uniform bool debug = false; + + +float fract(float v){ + return v - floor(v); +} + +float2 fract2(float2 v){ + return float2(v.x - floor(v.x), v.y - floor(v.y)); +} + +float3 fract3(float3 v){ + return float3(v.x - floor(v.x), v.y - floor(v.y), v.z - floor(v.z)); +} + +float3 fract4(float4 v){ + return float4(v.x - floor(v.x), v.y - floor(v.y), v.z - floor(v.z), v.w - floor(v.w)); +} + + +float3 N13(float p) { + // from DAVE HOSKINS + float3 p3 = fract3(float3(p, p, p) * float3(.1031,.11369,.13787)); + p3 += dot(p3, p3.yzx + 19.19); + return fract3(float3((p3.x + p3.y)*p3.z, (p3.x+p3.z)*p3.y, (p3.y+p3.z)*p3.x)); +} + +float4 N14(float t) { + return fract4(sin(t*float4(123., 1024., 1456., 264.))*float4(6547., 345., 8799., 1564.)); +} +float N(float t) { + return fract(sin(t*12345.564)*7658.76); +} + +float Saw(float b, float t) { + return smoothstep(0., b, t)*smoothstep(1., b, t); +} + +float2 Drops(float2 uv, float t) { + + float2 UV = uv; + + // DEFINE GRID + uv.y += t*0.8; + float2 a = float2(6., 1.); + float2 grid = a*2.; + float2 id = floor(uv*grid); + + // RANDOM SHIFT Y + float colShift = N(id.x); + uv.y += colShift; + + // DEFINE SPACES + id = floor(uv*grid); + float3 n = N13(id.x*35.2+id.y*2376.1); + float2 st = fract2(uv*grid)-float2(.5, 0); + + // POSITION DROPS + //clamp(2*x,0,2)+clamp(1-x*.5, -1.5, .5)+1.5-2 + float x = n.x-.5; + + float y = UV.y*20.; + + float distort = sin(y+sin(y)); + x += distort*(.5-abs(x))*(n.z-.5); + x *= .7; + float ti = fract(t+n.z); + y = (Saw(.85, ti)-.5)*.9+.5; + float2 p = float2(x, y); + + // DROPS + float d = length((st-p)*a.yx); + + float dSize = size; + + float Drop = smoothstep(dSize, .0, d); + + + float r = sqrt(smoothstep(1., y, st.y)); + float cd = abs(st.x-x); + + // TRAILS + float trail = smoothstep((dSize*.5+.03)*r, (dSize*.5-.05)*r, cd); + float trailFront = smoothstep(-.02, .02, st.y-y); + trail *= trailFront; + + + // DROPLETS + y = UV.y; + y += N(id.x); + float trail2 = smoothstep(dSize*r, .0, cd); + float droplets = max(0., (sin(y*(1.-y)*120.)-st.y))*trail2*trailFront*n.z; + y = fract(y*10.)+(st.y-.5); + float dd = length(st-float2(x, y)); + droplets = smoothstep(dSize*N(id.x), 0., dd); + float m = Drop+droplets*r*trailFront; + if(debug){ + m += st.x>a.y*.45 || st.y>a.x*.165 ? 1.2 : 0.; //DEBUG SPACES + } + + + return float2(m, trail); +} + +float StaticDrops(float2 uv, float t) { + uv *= 30.; + + float2 id = floor(uv); + uv = fract2(uv)-.5; + float3 n = N13(id.x*107.45+id.y*3543.654); + float2 p = (n.xy-.5)*0.5; + float d = length(uv-p); + + float fade = Saw(.025, fract(t+n.z)); + float c = smoothstep(size, 0., d)*fract(n.z*10.)*fade; + + return c; +} + +float2 Rain(float2 uv, float t) { + //float s = StaticDrops(uv, t); + float2 r1 = Drops(uv, t); + float2 r2 = Drops(uv*1.8, t); + float c; + if(debug){ + c = r1.x; + }else{ + c = r1.x+r2.x;//s+r1.x+r2.x; + } + + c = smoothstep(.3, 1., c); + + if(debug){ + return float2(c, r1.y); + }else{ + return float2(c, max(r1.y, r2.y)); + } +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv;//(fragCoord.xy-.5*iResolution.xy) / iResolution.y; + uv.y = 1.0 - uv.y; + uv = uv * uv_scale; + float2 UV = v_in.uv; + float T = elapsed_time * speed / 100.0; + + float t = T*.2; + + UV = (UV-.5)*(.9)+.5; + + float2 c = Rain(uv, t); + + float2 e = float2(.001, 0.); //pixel offset + float cx = Rain(uv+e, t).x; + float cy = Rain(uv+e.yx, t).x; + float2 n = float2(cx-c.x, cy-c.x); //normals + + // BLUR derived from existical https://www.shadertoy.com/view/Xltfzj + float Pi = 6.28318530718; // Pi*2 + + // GAUSSIAN BLUR SETTINGS {{{ + float Directions = 32.0; // BLUR DIRECTIONS (Default 16.0 - More is better but slower) + float Quality = 8.0; // BLUR QUALITY (Default 4.0 - More is better but slower) + // GAUSSIAN BLUR SETTINGS }}} + float2 Radius = blurSize/uv_size; + float3 col = image.Sample(textureSampler, UV).rgb; + + if(blurSize > 0.0){ + // Blur calculations + for(float d=0.0; dAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRectangularDropShadowShader { + +[Alias('Set-OBSRectangularDropShadowShader','Add-OBSRectangularDropShadowShader')] +param( +# Set the shadow_offset_x of OBSRectangularDropShadowShader +[Alias('shadow_offset_x')] +[ComponentModel.DefaultBindingProperty('shadow_offset_x')] +[Int32] +$ShadowOffsetX, +# Set the shadow_offset_y of OBSRectangularDropShadowShader +[Alias('shadow_offset_y')] +[ComponentModel.DefaultBindingProperty('shadow_offset_y')] +[Int32] +$ShadowOffsetY, +# Set the shadow_blur_size of OBSRectangularDropShadowShader +[Alias('shadow_blur_size')] +[ComponentModel.DefaultBindingProperty('shadow_blur_size')] +[Int32] +$ShadowBlurSize, +# Set the shadow_color of OBSRectangularDropShadowShader +[Alias('shadow_color')] +[ComponentModel.DefaultBindingProperty('shadow_color')] +[String] +$ShadowColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rectangular_drop_shadow' +$ShaderNoun = 'OBSRectangularDropShadowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Exeldro February 22, 2022 +uniform int shadow_offset_x< + string label = "shadow offset x"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +>; +uniform int shadow_offset_y< + string label = "shadow offset y"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +>; +uniform int shadow_blur_size< + string label = "shadow blur size"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 100; + int step = 1; +> = 1; + +uniform float4 shadow_color; + +float4 mainImage(VertData v_in) : TARGET +{ + int shadow_blur_samples = int(pow(shadow_blur_size * 2 + 1, 2)); + + float4 color = image.Sample(textureSampler, v_in.uv); + float2 shadow_uv = float2(v_in.uv.x - uv_pixel_interval.x * int(shadow_offset_x), + v_in.uv.y - uv_pixel_interval.y * int(shadow_offset_y)); + + float start_of_overlap_x = max(0, shadow_uv.x - shadow_blur_size * uv_pixel_interval.x); + float end_of_overlap_x = min(1, shadow_uv.x + shadow_blur_size * uv_pixel_interval.x); + float x_proportion = (end_of_overlap_x - start_of_overlap_x) / (2 * shadow_blur_size * uv_pixel_interval.x); + + float start_of_overlap_y = max(0, shadow_uv.y - shadow_blur_size * uv_pixel_interval.y); + float end_of_overlap_y = min(1, shadow_uv.y + shadow_blur_size * uv_pixel_interval.y); + float y_proportion = (end_of_overlap_y - start_of_overlap_y) / (2 * shadow_blur_size * uv_pixel_interval.y); + + float4 final_shadow_color = float4(shadow_color.r, shadow_color.g, shadow_color.b, shadow_color.a * x_proportion * y_proportion); + + return final_shadow_color * (1-color.a) + color; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSReflectShader { + +[Alias('Set-OBSReflectShader','Add-OBSReflectShader')] +param( +# Set the Horizontal of OBSReflectShader +[ComponentModel.DefaultBindingProperty('Horizontal')] +[Management.Automation.SwitchParameter] +$Horizontal, +# Set the Vertical of OBSReflectShader +[ComponentModel.DefaultBindingProperty('Vertical')] +[Management.Automation.SwitchParameter] +$Vertical, +# Set the center_x_percent of OBSReflectShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Int32] +$CenterXPercent, +# Set the center_y_percent of OBSReflectShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Int32] +$CenterYPercent, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Reflect' +$ShaderNoun = 'OBSReflectShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simple Reflect Shader + +// Reflects horizontally and/or vertically. + +uniform bool Horizontal< + string label = "Reflect horizontally"; +> = false; +uniform bool Vertical< + string label = "Reflect vertically"; +> = true; + +uniform int center_x_percent< + string label = "center x percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; + + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + + if (Horizontal == true) { + if (pos.x < center_pos.x) { + pos.x = center_pos.x - pos.x; + } else if (pos.x == center_pos.x) { + pos.x = pos.x; + } else { + pos.x = pos.x - center_pos.x; + } + } + if (Vertical == true) { + if (pos.y < center_pos.y) { + pos.y = center_pos.y - pos.y; + } else if (pos.y == center_pos.y) { + pos.y = pos.y; + } else { + pos.y = pos.y - center_pos.y; + } + } + + return image.Sample(textureSampler, pos); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRemovePartialPixelsShader { + +[Alias('Set-OBSRemovePartialPixelsShader','Add-OBSRemovePartialPixelsShader')] +param( +# Set the minimum_alpha_percent of OBSRemovePartialPixelsShader +[Alias('minimum_alpha_percent')] +[ComponentModel.DefaultBindingProperty('minimum_alpha_percent')] +[Int32] +$MinimumAlphaPercent, +# Set the notes of OBSRemovePartialPixelsShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'remove_partial_pixels' +$ShaderNoun = 'OBSRemovePartialPixelsShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Remove Partial Pixels shader by Charles Fettinger for obs-shaderfilter plugin 8/2020 +// https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGL by Exeldro February 21, 2022 +uniform int minimum_alpha_percent< + string label = "minimum alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform string notes< + string widget_type = "info"; +> = "Removes partial pixels, excellent for cleaning greenscreen. Default Minimum Alpha Percent is 50%, lowering will reveal more pixels"; + +float4 mainImage(VertData v_in) : TARGET +{ + float min_alpha = clamp(minimum_alpha_percent * .01, -1.0, 101.0); + float4 output_color = image.Sample(textureSampler, v_in.uv); + if (output_color.a < min_alpha) + { + return float4(0.0, 0.0, 0.0, 0.0); + } + else + { + return float4(output_color); + } +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRepeatShader { + +[Alias('Set-OBSRepeatShader','Add-OBSRepeatShader')] +param( +# Set the ViewProj of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the color_matrix of OBSRepeatShader +[Alias('color_matrix')] +[ComponentModel.DefaultBindingProperty('color_matrix')] +[Single[][]] +$ColorMatrix, +# Set the color_range_min of OBSRepeatShader +[Alias('color_range_min')] +[ComponentModel.DefaultBindingProperty('color_range_min')] +[Single[]] +$ColorRangeMin, +# Set the color_range_max of OBSRepeatShader +[Alias('color_range_max')] +[ComponentModel.DefaultBindingProperty('color_range_max')] +[Single[]] +$ColorRangeMax, +# Set the image of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSRepeatShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSRepeatShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSRepeatShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSRepeatShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSRepeatShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSRepeatShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the alpha of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('alpha')] +[Single] +$Alpha, +# Set the copies of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('copies')] +[Single] +$Copies, +# Set the notes of OBSRepeatShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'repeat' +$ShaderNoun = 'OBSRepeatShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Repeat Effect By Charles Fettinger (https://github.com/Oncorporation) 2/2019 + +uniform float4x4 ViewProj; +uniform float4x4 color_matrix; +uniform float3 color_range_min = {0.0, 0.0, 0.0}; +uniform float3 color_range_max = {1.0, 1.0, 1.0}; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; + +uniform float alpha< + string label = "Alpha"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 3.0; + float step = 0.001; +> = 1.0; +uniform float copies< + string label = "Copies"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 4.0; +uniform string notes< + string widget_type = "info"; +> = ''copies, use a number that has a square root. Alpha adjusts the alpha level of the copies (recommend 0.5-2.0 recommend)''; + +sampler_state def_sampler { + Filter = Linear; + AddressU = Repeat; + AddressV = Repeat; +}; + +struct VertInOut { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertInOut VSDefault(VertInOut vert_in) +{ + VertInOut vert_out; + vert_out.pos = mul(float4(vert_in.pos.xyz, 1 ), ViewProj); + vert_out.uv = vert_in.uv * sqrt(copies); + return vert_out; +} + +float4 PSDrawBare(VertInOut vert_in) : TARGET +{ + float4 rgba = image.Sample(def_sampler, vert_in.uv); + rgba.a *= alpha; + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vert_in); + pixel_shader = PSDrawBare(vert_in); + } +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRepeatTextureShader { + +[Alias('Set-OBSRepeatTextureShader','Add-OBSRepeatTextureShader')] +param( +# Set the ViewProj of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the color_matrix of OBSRepeatTextureShader +[Alias('color_matrix')] +[ComponentModel.DefaultBindingProperty('color_matrix')] +[Single[][]] +$ColorMatrix, +# Set the color_range_min of OBSRepeatTextureShader +[Alias('color_range_min')] +[ComponentModel.DefaultBindingProperty('color_range_min')] +[Single[]] +$ColorRangeMin, +# Set the color_range_max of OBSRepeatTextureShader +[Alias('color_range_max')] +[ComponentModel.DefaultBindingProperty('color_range_max')] +[Single[]] +$ColorRangeMax, +# Set the image of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the tex_image of OBSRepeatTextureShader +[Alias('tex_image')] +[ComponentModel.DefaultBindingProperty('tex_image')] +[String] +$TexImage, +# Set the elapsed_time of OBSRepeatTextureShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSRepeatTextureShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSRepeatTextureShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSRepeatTextureShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the uv_size of OBSRepeatTextureShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the rand_f of OBSRepeatTextureShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the blend of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('blend')] +[Single] +$Blend, +# Set the copies of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('copies')] +[Single] +$Copies, +# Set the notes of OBSRepeatTextureShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the alpha_percentage of OBSRepeatTextureShader +[Alias('alpha_percentage')] +[ComponentModel.DefaultBindingProperty('alpha_percentage')] +[Single] +$AlphaPercentage, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'repeat_texture' +$ShaderNoun = 'OBSRepeatTextureShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Repeat Effect By Charles Fettinger (https://github.com/Oncorporation) 2/2019 + +uniform float4x4 ViewProj; +uniform float4x4 color_matrix; +uniform float3 color_range_min = {0.0, 0.0, 0.0}; +uniform float3 color_range_max = {1.0, 1.0, 1.0}; +uniform texture2d image; +uniform texture2d tex_image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float2 uv_size; +uniform float rand_f; + +uniform float blend< + string label = "Blend"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 3.0; + float step = 0.001; +> = 1.0; +uniform float copies< + string label = "Copies"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 4.0; +uniform string notes< + string widget_type = "info"; +> = ''copies, use a number that has a square root. Blend adjusts the ratio of source and texture''; +uniform float alpha_percentage< + string label = "alpha percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100.0; + +sampler_state tex_sampler { + Filter = Linear; + AddressU = Repeat; + AddressV = Repeat; +}; + +sampler_state base_sampler { + Filter = Linear; + AddressU = Clamp; + AddressV = Clamp; +}; + +struct VertIn { + float4 pos : POSITION; + float2 uv_0 : TEXCOORD0; + float2 uv_1 : TEXCOORD1; +}; + +struct VertOut { + float4 pos : POSITION; + float2 uv_0 : TEXCOORD0; + float2 uv_1 : TEXCOORD1; +}; + +VertOut VSDefault(VertIn vert_in) +{ + VertOut vert_out; + vert_out.pos = mul(float4(vert_in.pos.xyz, 1 ), ViewProj); + vert_out.uv_1 = vert_in.uv_0; + vert_out.uv_0 = vert_in.uv_0 * sqrt(copies); + return vert_out; +} + +float4 PSDrawBare(VertOut vert_in) : TARGET +{ + float alpha = clamp(alpha_percentage * 0.01 ,-1.0,2.0); + float4 tex = tex_image.Sample(tex_sampler, vert_in.uv_0); + float4 base = image.Sample(base_sampler, vert_in.uv_1); + + return (1 - alpha) * base + (alpha) * tex; +} + +technique Draw +{ + pass + { + vertex_shader = VSDefault(vert_in); + pixel_shader = PSDrawBare(vert_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRGBAPercentShader { + +[Alias('Set-OBSRGBAPercentShader','Add-OBSRGBAPercentShader')] +param( +# Set the RedPercent of OBSRGBAPercentShader +[ComponentModel.DefaultBindingProperty('RedPercent')] +[Single] +$RedPercent, +# Set the GreenPercent of OBSRGBAPercentShader +[ComponentModel.DefaultBindingProperty('GreenPercent')] +[Single] +$GreenPercent, +# Set the BluePercent of OBSRGBAPercentShader +[ComponentModel.DefaultBindingProperty('BluePercent')] +[Single] +$BluePercent, +# Set the AlphaPercent of OBSRGBAPercentShader +[ComponentModel.DefaultBindingProperty('AlphaPercent')] +[Single] +$AlphaPercent, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'RGBA_Percent' +$ShaderNoun = 'OBSRGBAPercentShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simple RGBA Percent Shader +// Allows Red, Green, or Blue to be adjusted between 0-200% +// Allows Alpha to be adjusted between 0/100% +uniform float RedPercent< + string label = "Red percentage"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 200; + float step = 1.0; +> = 100; + +uniform float GreenPercent< + string label = "Green percentage"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 200; + float step = 1.0; +> = 100; + +uniform float BluePercent< + string label = "Blue percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200; + float step = 1.0; +> = 100.0; + + +uniform float AlphaPercent< + string label = "Alpha percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 100.0; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pos = v_in.uv; + + float4 imageColors = image.Sample(textureSampler, v_in.uv); + float4 adjustedColor = float4( + imageColors.r * (RedPercent * 0.01), + imageColors.g * (GreenPercent * 0.01), + imageColors.b * (BluePercent * 0.01), + imageColors.a * (AlphaPercent * 0.01) + ); + return adjustedColor; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRgbColorWheelShader { + +[Alias('Set-OBSRgbColorWheelShader','Add-OBSRgbColorWheelShader')] +param( +# Set the speed of OBSRgbColorWheelShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the color_depth of OBSRgbColorWheelShader +[Alias('color_depth')] +[ComponentModel.DefaultBindingProperty('color_depth')] +[Single] +$ColorDepth, +# Set the Apply_To_Image of OBSRgbColorWheelShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSRgbColorWheelShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Apply_To_Specific_Color of OBSRgbColorWheelShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSRgbColorWheelShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Alpha_Percentage of OBSRgbColorWheelShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the center_width_percentage of OBSRgbColorWheelShader +[Alias('center_width_percentage')] +[ComponentModel.DefaultBindingProperty('center_width_percentage')] +[Int32] +$CenterWidthPercentage, +# Set the center_height_percentage of OBSRgbColorWheelShader +[Alias('center_height_percentage')] +[ComponentModel.DefaultBindingProperty('center_height_percentage')] +[Int32] +$CenterHeightPercentage, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rgb_color_wheel' +$ShaderNoun = 'OBSRgbColorWheelShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// RGB Color Wheel shader by Charles Fettinger for obs-shaderfilter plugin 5/2020 +// https://github.com/Oncorporation/obs-shaderfilter +//Converted to OpenGl by Q-mii & Exeldro February 25, 2022 +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 15.0; + float step = 0.1; +> = 2.0; +uniform float color_depth< + string label = "Color Depth"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.1; +> = 2.10; +uniform bool Apply_To_Image; +uniform bool Replace_Image_Color; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform float Alpha_Percentage< + string label = "Alpha Percentage"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.1; +> = 100; // +uniform int center_width_percentage< + string label = "center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_height_percentage< + string label = "center height percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; + +float3 hsv2rgb(float3 c) +{ + float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); + return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y); +} + +float mod(float x, float y) +{ + return x - y * floor(x / y); +} + +float4 mainImage(VertData v_in) : TARGET +{ + const float PI = 3.14159265f;//acos(-1); + float PI180th = 0.0174532925; //PI divided by 180 + float4 rgba = image.Sample(textureSampler, v_in.uv); + float2 center_pixel_coordinates = float2((center_width_percentage * 0.01), (center_height_percentage * 0.01) ); + float2 st = v_in.uv* uv_scale; + float2 toCenter = center_pixel_coordinates - st ; + float r = length(toCenter) * color_depth; + float angle = atan2(toCenter.y ,toCenter.x ); + float angleMod = (elapsed_time * mod(speed ,18)) / 18; + + rgba.rgb = hsv2rgb(float3((angle / PI*0.5) + angleMod,r,1.0)); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + float luma = color.r * 0.299 + color.g * 0.587 + color.b * 0.114; + if (Replace_Image_Color) + color = float4(luma, luma, luma, luma); + rgba = lerp(original_color, rgba * color,clamp(Alpha_Percentage *.01 ,0,1.0)); + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, clamp(Alpha_Percentage * .01, 0, 1.0)); + } + + return rgba; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRgbSplitShader { + +[Alias('Set-OBSRgbSplitShader','Add-OBSRgbSplitShader')] +param( +# Set the redx of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('redx')] +[Single] +$Redx, +# Set the redy of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('redy')] +[Single] +$Redy, +# Set the greenx of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('greenx')] +[Single] +$Greenx, +# Set the greeny of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('greeny')] +[Single] +$Greeny, +# Set the bluex of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('bluex')] +[Single] +$Bluex, +# Set the bluey of OBSRgbSplitShader +[ComponentModel.DefaultBindingProperty('bluey')] +[Single] +$Bluey, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rgb_split' +$ShaderNoun = 'OBSRgbSplitShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float redx< + string label = "Red X"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 2.00; +uniform float redy< + string label = "Red Y"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.00; +uniform float greenx< + string label = "Green X"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.00; +uniform float greeny< + string label = "Green Y"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.00; +uniform float bluex< + string label = "Blue X"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = -2.00; +uniform float bluey< + string label = "Blue Y"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.01; +> = 0.00; + + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + if(redx != 0.0 || redy != 0.0) + c.r = image.Sample(textureSampler, v_in.uv + float2(redx/100.0, redy/100.0)).r; + if(greenx != 0.0 || greeny != 0.0) + c.g = image.Sample(textureSampler, v_in.uv + float2(greenx/100.0, greeny/100.0)).g; + if(bluex != 0.0 || bluey != 0.0) + c.b = image.Sample(textureSampler, v_in.uv + float2(bluex/100.0, bluey/100.0)).b; + return c; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRgbvisibilityShader { + +[Alias('Set-OBSRgbvisibilityShader','Add-OBSRgbvisibilityShader')] +param( +# Set the Red of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('Red')] +[Single] +$Red, +# Set the Green of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('Green')] +[Single] +$Green, +# Set the Blue of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('Blue')] +[Single] +$Blue, +# Set the RedVisibility of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('RedVisibility')] +[Single] +$RedVisibility, +# Set the GreenVisibility of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('GreenVisibility')] +[Single] +$GreenVisibility, +# Set the BlueVisibility of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('BlueVisibility')] +[Single] +$BlueVisibility, +# Set the notes of OBSRgbvisibilityShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rgbvisibility' +$ShaderNoun = 'OBSRgbvisibilityShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// RGB visibility separation filter, created by EposVox + +uniform float Red< + string label = "Red"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; + +uniform float Green< + string label = "Green"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; + +uniform float Blue< + string label = "Blue"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 10.0; + float step = 0.01; +> = 2.2; + +uniform float RedVisibility< + string label = "Red Visibility"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +uniform float GreenVisibility< + string label = "Green Visibility"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +uniform float BlueVisibility< + string label = "Blue Visibility"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; + +uniform string notes< + string widget_type = "info"; +> = "Modify Colors to correct for gamma, use equal values for general correction."; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + float redChannel = pow(c.r, Red) * RedVisibility; + float greenChannel = pow(c.g, Green) * GreenVisibility; + float blueChannel = pow(c.b, Blue) * BlueVisibility; + + return float4(redChannel, greenChannel, blueChannel, c.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRGSSAAShader { + +[Alias('Set-OBSRGSSAAShader','Add-OBSRGSSAAShader')] +param( +# Set the ColorSigma of OBSRGSSAAShader +[ComponentModel.DefaultBindingProperty('ColorSigma')] +[Single] +$ColorSigma, +# Set the SpatialSigma of OBSRGSSAAShader +[ComponentModel.DefaultBindingProperty('SpatialSigma')] +[Single] +$SpatialSigma, +# Set the notes of OBSRGSSAAShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'RGSSAA' +$ShaderNoun = 'OBSRGSSAAShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// RGSSAA shader by Eliseu Amaro for obs-shaderfilter plugin 2/2024 +// https://github.com/exeldro/obs-shaderfilter/tree/master +// Using edge detection shader as a base, created by Hallatore +// https://forums.unrealengine.com/t/sharper-image-without-the-edge-artifacts/108461 + +uniform float ColorSigma< + string label = "Color Sigma"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 1.0; + float step = 0.1; +> = 1.0; + +uniform float SpatialSigma< + string label = "Spatial Sigma"; + string widget_type = "slider"; + float minimum = 0.1; + float maximum = 1.0; + float step = 0.1; +> = 1.0; + +uniform string notes< + string widget_type = "info"; +> = "Performs RGSSAA, a form of anti-aliasing. Implementation roughly follows the original with color and spatial sigma (or strengths) parameters. Useful to apply before a sharpen pass (e.g on a webcam feed)." + +float Luminance(float3 rgb) +{ + return rgb.r * 0.299 + rgb.g * 0.587 + rgb.b * 0.114; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float3 SceneColor = image.Sample(textureSampler, v_in.uv).rgb; + float2 SceneUV = v_in.uv; + float2 TexelScale = 1.0f/uv_size; + + const float SQRT2 = 1.4142135624; + const float PI = 3.141592654; + const float angle = PI / 8.0; + const float cs = cos(angle); + const float sn = sin(angle); + + // Rotated grid samples + float3 C1 = + image.Sample(textureSampler, SceneUV + float2(cs, -sn) * TexelScale).rgb; + float3 C2 = + image.Sample(textureSampler, SceneUV + float2(-cs, -sn) * TexelScale).rgb; + float3 C3 = + image.Sample(textureSampler, SceneUV + float2(-sn, cs) * TexelScale).rgb; + float3 C4 = + image.Sample(textureSampler, SceneUV + float2(sn, cs) * TexelScale).rgb; + float3 C5 = + image.Sample(textureSampler, SceneUV + float2(cs * SQRT2, 0) * TexelScale).rgb; + float3 C6 = + image.Sample(textureSampler, SceneUV + float2(0, sn *SQRT2) * TexelScale).rgb; + float3 C7 = + image.Sample(textureSampler, SceneUV + float2(-cs * SQRT2, 0) * TexelScale).rgb; + float3 C8 = + image.Sample(textureSampler, SceneUV + float2(0, -sn *SQRT2) * TexelScale).rgb; + + // Luminance edge detection + float A0 = Luminance(SceneColor); + float CL1 = Luminance(C1); + float L1 = ((max(CL1, A0)) / (min(CL1, A0) + 0.001) - 1); + float CL2 = Luminance(C2); + float L2 = ((max(CL2, A0)) / (min(CL2, A0) + 0.001) - 1); + float CL3 = Luminance(C3); + float L3 = ((max(CL3, A0)) / (min(CL3, A0) + 0.001) - 1); + float CL4 = Luminance(C4); + float L4 = ((max(CL4, A0)) / (min(CL4, A0) + 0.001) - 1); + float CL5 = Luminance(C5); + float L5 = ((max(CL5, A0)) / (min(CL5, A0) + 0.001) - 1); + float CL6 = Luminance(C6); + float L6 = ((max(CL6, A0)) / (min(CL6, A0) + 0.001) - 1); + float CL7 = Luminance(C7); + float L7 = ((max(CL7, A0)) / (min(CL7, A0) + 0.001) - 1); + float CL8 = Luminance(C8); + float L8 = ((max(CL8, A0)) / (min(CL8, A0) + 0.001) - 1); + float NeighborDifference = max(max(max(L1, L2), max(L3, L4)), max(max(L5, L6), max(L7, L8))); + + // Calculate distance-based weights + float2 Dist1 = float2(cs, -sn); + float2 Dist2 = float2(-cs, -sn); + float2 Dist3 = float2(-sn, cs); + float2 Dist4 = float2(sn, cs); + float2 Dist5 = float2(cs * SQRT2, 0); + float2 Dist6 = float2(0, sn * SQRT2); + float2 Dist7 = float2(-cs * SQRT2, 0); + float2 Dist8 = float2(0, -sn * SQRT2); + float SW1 = exp(-dot(Dist1, Dist1) / (2.0 * SpatialSigma * SpatialSigma)); + float SW2 = exp(-dot(Dist2, Dist2) / (2.0 * SpatialSigma * SpatialSigma)); + float SW3 = exp(-dot(Dist3, Dist3) / (2.0 * SpatialSigma * SpatialSigma)); + float SW4 = exp(-dot(Dist4, Dist4) / (2.0 * SpatialSigma * SpatialSigma)); + float SW5 = exp(-dot(Dist5, Dist5) / (2.0 * SpatialSigma * SpatialSigma)); + float SW6 = exp(-dot(Dist6, Dist6) / (2.0 * SpatialSigma * SpatialSigma)); + float SW7 = exp(-dot(Dist7, Dist7) / (2.0 * SpatialSigma * SpatialSigma)); + float SW8 = exp(-dot(Dist8, Dist8) / (2.0 * SpatialSigma * SpatialSigma)); + + // Color weights + float3 ColorDiff1 = SceneColor.rgb - C1; + float3 ColorDiff2 = SceneColor.rgb - C2; + float3 ColorDiff3 = SceneColor.rgb - C3; + float3 ColorDiff4 = SceneColor.rgb - C4; + float3 ColorDiff5 = SceneColor.rgb - C5; + float3 ColorDiff6 = SceneColor.rgb - C6; + float3 ColorDiff7 = SceneColor.rgb - C7; + float3 ColorDiff8 = SceneColor.rgb - C8; + + float CW1 = exp(-dot(ColorDiff1, ColorDiff1) / (2.0 * ColorSigma * ColorSigma)); + float CW2 = exp(-dot(ColorDiff2, ColorDiff2) / (2.0 * ColorSigma * ColorSigma)); + float CW3 = exp(-dot(ColorDiff3, ColorDiff3) / (2.0 * ColorSigma * ColorSigma)); + float CW4 = exp(-dot(ColorDiff4, ColorDiff4) / (2.0 * ColorSigma * ColorSigma)); + float CW5 = exp(-dot(ColorDiff5, ColorDiff5) / (2.0 * ColorSigma * ColorSigma)); + float CW6 = exp(-dot(ColorDiff6, ColorDiff6) / (2.0 * ColorSigma * ColorSigma)); + float CW7 = exp(-dot(ColorDiff7, ColorDiff7) / (2.0 * ColorSigma * ColorSigma)); + float CW8 = exp(-dot(ColorDiff8, ColorDiff8) / (2.0 * ColorSigma * ColorSigma)); + + // Mixing weights + float W1 = SW1 * CW1; + float W2 = SW2 * CW2; + float W3 = SW3 * CW3; + float W4 = SW4 * CW4; + float W5 = SW5 * CW5; + float W6 = SW6 * CW6; + float W7 = SW7 * CW7; + float W8 = SW8 * CW8; + float TotalWeight = W1 + W2 + W3 + W4 + W5 + W6 + W7 + W8; + + // Weighted color + float3 AAResult = (C1 * W1 + C2 * W2 + C3 * W3 + C4 * W4 + C5 * W5 + C6 * W6 + + C7 * W7 + C8 * W8) / + max(TotalWeight, 0.0001); + + // Blend it + float4 LuminanceNeightbors = float4(CL1, CL2, CL3, CL4); + float4 LuminanceNeightbors2 = float4(CL5, CL6, CL7, CL8); + float4 A0LuminanceNeightbors = abs(A0 - LuminanceNeightbors); + float4 A0LuminanceNeightbors2 = abs(A0 - LuminanceNeightbors2); + float A0Max = max(max(A0LuminanceNeightbors.r, A0LuminanceNeightbors.g), max(A0LuminanceNeightbors.b, A0LuminanceNeightbors.a)); + float A0Max2 = max(max(A0LuminanceNeightbors2.r, A0LuminanceNeightbors2.g), max(A0LuminanceNeightbors2.b, A0LuminanceNeightbors2.a)); + float HDREdge = max(A0Max, A0Max2); + float EdgeMask = saturate(1.0f - HDREdge); + + return float4(lerp(SceneColor.rgb, AAResult, EdgeMask), 1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRippleShader { + +[Alias('Set-OBSRippleShader','Add-OBSRippleShader')] +param( +# Set the distance_factor of OBSRippleShader +[Alias('distance_factor')] +[ComponentModel.DefaultBindingProperty('distance_factor')] +[Single] +$DistanceFactor, +# Set the time_factor of OBSRippleShader +[Alias('time_factor')] +[ComponentModel.DefaultBindingProperty('time_factor')] +[Single] +$TimeFactor, +# Set the power_factor of OBSRippleShader +[Alias('power_factor')] +[ComponentModel.DefaultBindingProperty('power_factor')] +[Single] +$PowerFactor, +# Set the center_pos_x of OBSRippleShader +[Alias('center_pos_x')] +[ComponentModel.DefaultBindingProperty('center_pos_x')] +[Single] +$CenterPosX, +# Set the center_pos_y of OBSRippleShader +[Alias('center_pos_y')] +[ComponentModel.DefaultBindingProperty('center_pos_y')] +[Single] +$CenterPosY, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'ripple' +$ShaderNoun = 'OBSRippleShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform float distance_factor< + string label = "distance factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.001; +> = 12.0; +uniform float time_factor< + string label = "time factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 2.0; +uniform float power_factor< + string label = "power factor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 3.0; +uniform float center_pos_x< + string label = "center pos x"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float center_pos_y< + string label = "center pos y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 cPos = (v_in.uv * 2 ) -1; + float2 center_pos = float2(center_pos_x, center_pos_y); + float cLength = distance(cPos, center_pos); + float2 uv = v_in.uv+(cPos/cLength)*cos(cLength*distance_factor-elapsed_time*time_factor) * power_factor / 100.0; + return image.Sample(textureSampler, uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRotatingSourceShader { + +[Alias('Set-OBSRotatingSourceShader','Add-OBSRotatingSourceShader')] +param( +# Set the spin_speed of OBSRotatingSourceShader +[Alias('spin_speed')] +[ComponentModel.DefaultBindingProperty('spin_speed')] +[Single] +$SpinSpeed, +# Set the rotation of OBSRotatingSourceShader +[ComponentModel.DefaultBindingProperty('rotation')] +[Single] +$Rotation, +# Set the zoomin of OBSRotatingSourceShader +[ComponentModel.DefaultBindingProperty('zoomin')] +[Single] +$Zoomin, +# Set the keep_aspectratio of OBSRotatingSourceShader +[Alias('keep_aspectratio')] +[ComponentModel.DefaultBindingProperty('keep_aspectratio')] +[Management.Automation.SwitchParameter] +$KeepAspectratio, +# Set the x_center of OBSRotatingSourceShader +[Alias('x_center')] +[ComponentModel.DefaultBindingProperty('x_center')] +[Single] +$XCenter, +# Set the y_center of OBSRotatingSourceShader +[Alias('y_center')] +[ComponentModel.DefaultBindingProperty('y_center')] +[Single] +$YCenter, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rotating-source' +$ShaderNoun = 'OBSRotatingSourceShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//spin speed higher the slower +uniform float spin_speed< + string label = "Spin Speed"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; +uniform float rotation< + string label = "Rotation"; + string widget_type = "slider"; + float minimum = -360.0; + float maximum = 360.0; + float step = 0.1; +> = 0.0; +uniform float zoomin< + string label = "Zoom"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform bool keep_aspectratio = true; +uniform float x_center< + string label = "Center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform float y_center< + string label = "Center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + + +//main fragment code +//from lioran to nutella with love +float4 mainImage(VertData v_in) : TARGET +{ + float x_aspectratio = keep_aspectratio ? uv_size.x : 1.0; + float y_aspectratio = keep_aspectratio ? uv_size.y : 1.0; + //get position on of the texture and focus on the middle + float i_rotation; + if (spin_speed == 0){ + //turn angle number into pi number + i_rotation = rotation/57.295779513; + }else{ + //use elapsed time for spinning if spin speed is not 0 + i_rotation = elapsed_time * spin_speed; + } + float2 i_point; + i_point.x = (v_in.uv.x * x_aspectratio) - (x_aspectratio * x_center); + i_point.y = (v_in.uv.y * y_aspectratio) - (y_aspectratio * y_center); + + //get the angle from center , returns pi number + float i_dir = atan(i_point.y/i_point.x); + if(i_point.x < 0.0){ + i_dir += 3.14159265359; + } + + //get the distance from the centers + float i_distance = sqrt(pow(i_point.x,2) + pow(i_point.y,2)); + //multiple distance by the zoomin value + i_distance *= zoomin; + + //shift the texture position based on angle and distance from the middle + i_point.x = ((x_aspectratio*x_center)+cos(i_dir-i_rotation)*i_distance)/x_aspectratio; + i_point.y = ((y_aspectratio*y_center)+sin(i_dir-i_rotation)*i_distance)/y_aspectratio; + + //draw normally from new point + return image.Sample(textureSampler, i_point); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRotatoeShader { + +[Alias('Set-OBSRotatoeShader','Add-OBSRotatoeShader')] +param( +# Set the ViewProj of OBSRotatoeShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSRotatoeShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSRotatoeShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSRotatoeShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSRotatoeShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSRotatoeShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSRotatoeShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSRotatoeShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the speed_percent of OBSRotatoeShader +[Alias('speed_percent')] +[ComponentModel.DefaultBindingProperty('speed_percent')] +[Int32] +$SpeedPercent, +# Set the Axis_X of OBSRotatoeShader +[Alias('Axis_X')] +[ComponentModel.DefaultBindingProperty('Axis_X')] +[Single] +$AxisX, +# Set the Axis_Y of OBSRotatoeShader +[Alias('Axis_Y')] +[ComponentModel.DefaultBindingProperty('Axis_Y')] +[Single] +$AxisY, +# Set the Axis_Z of OBSRotatoeShader +[Alias('Axis_Z')] +[ComponentModel.DefaultBindingProperty('Axis_Z')] +[Single] +$AxisZ, +# Set the Angle_Degrees of OBSRotatoeShader +[Alias('Angle_Degrees')] +[ComponentModel.DefaultBindingProperty('Angle_Degrees')] +[Single] +$AngleDegrees, +# Set the Rotate_Transform of OBSRotatoeShader +[Alias('Rotate_Transform')] +[ComponentModel.DefaultBindingProperty('Rotate_Transform')] +[Management.Automation.SwitchParameter] +$RotateTransform, +# Set the Rotate_Pixels of OBSRotatoeShader +[Alias('Rotate_Pixels')] +[ComponentModel.DefaultBindingProperty('Rotate_Pixels')] +[Management.Automation.SwitchParameter] +$RotatePixels, +# Set the Rotate_Colors of OBSRotatoeShader +[Alias('Rotate_Colors')] +[ComponentModel.DefaultBindingProperty('Rotate_Colors')] +[Management.Automation.SwitchParameter] +$RotateColors, +# Set the center_width_percentage of OBSRotatoeShader +[Alias('center_width_percentage')] +[ComponentModel.DefaultBindingProperty('center_width_percentage')] +[Int32] +$CenterWidthPercentage, +# Set the center_height_percentage of OBSRotatoeShader +[Alias('center_height_percentage')] +[ComponentModel.DefaultBindingProperty('center_height_percentage')] +[Int32] +$CenterHeightPercentage, +# Set the notes of OBSRotatoeShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rotatoe' +$ShaderNoun = 'OBSRotatoeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Rotation Effect By Charles Fettinger (https://github.com/Oncorporation) 10/2019 +//Converted to OpenGL by Q-mii, Exeldro, & skeletonbow +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +uniform int speed_percent< + string label = "speed percentage"; + string widget_type = "slider"; + int minimum = -100; + int maximum = 100; + int step = 1; +> = 50; // +uniform float Axis_X< + string label = "Axis X"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.1; +> = 0.0; +uniform float Axis_Y< + string label = "Axis Y"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 0.0; +uniform float Axis_Z< + string label = "Axis Z"; + string widget_type = "slider"; + float minimum = -2.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; +uniform float Angle_Degrees< + string label = "Angle Degrees"; + string widget_type = "slider"; + float minimum = -180.0; + float maximum = 180.0; + float step = 0.01; +> = 45.0; +uniform bool Rotate_Transform = true; +uniform bool Rotate_Pixels = false; +uniform bool Rotate_Colors = false; +uniform int center_width_percentage< + string label = "center width percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_height_percentage< + string label = "center height percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; + +uniform string notes< + string widget_type = "info"; +> = " Choose axis, angle and speed, then rotate away! center_width_percentage & center_height_percentage allow you to change the pixel spin axis"; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +float3x3 rotAxis(float3 axis, float a) { + float s=sin(a); + float c=cos(a); + float oc=1.0-c; + + float3 as=axis*s; + + float3x3 p=float3x3(axis.x*axis,axis.y*axis,axis.z*axis); + float3x3 q=float3x3(c,-as.z,as.y,as.z,c,-as.x,-as.y,as.x,c); + return p*oc+q; +} + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + + float speed = speed_percent * 0.01; + // circular easing variable + float PI = 3.1415926535897932384626433832795; //acos(-1); + float PI180th = 0.0174532925; //PI divided by 180 + float direction = abs(sin((elapsed_time - 0.001) * speed)); + float t = sin(elapsed_time * speed); + float angle_degrees = PI180th * Angle_Degrees; + + // use matrix to transform rotation + if (Rotate_Transform) + vert_out.pos.xyz = mul(vert_out.pos.xyz,rotAxis(float3(Axis_X,Axis_Y,Axis_Z), (angle_degrees * t))).xyz; + + vert_out.uv = v_in.uv * uv_scale + uv_offset; + + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 rgba = image.Sample(textureSampler, v_in.uv); + + float speed = speed_percent * 0.01; + // circular easing variable + float PI = 3.1415926535897932384626433832795; //acos(-1); + float PI180th = 0.0174532925; //PI divided by 180 + float direction = abs(sin((elapsed_time - 0.001) * speed)); + float t = sin(elapsed_time * speed); + float angle_degrees = PI180th * Angle_Degrees; + + + // use matrix to transform pixels + if (Rotate_Pixels) + { + float2 center_pixel_coordinates = float2((center_width_percentage * 0.01), (center_height_percentage * 0.01) ); + rgba = image.Sample(textureSampler, mul(float3(v_in.uv - center_pixel_coordinates, 1.0), rotAxis(float3(Axis_X ,Axis_Y, Axis_Z ), (angle_degrees * t))).xy + center_pixel_coordinates); + } + if (Rotate_Colors) + rgba.rgb = mul(rgba.rgb, rotAxis(float3(Axis_X,Axis_Y,Axis_Z), (angle_degrees * t))).xyz; + + return rgba; +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRoundedRect2Shader { + +[Alias('Set-OBSRoundedRect2Shader','Add-OBSRoundedRect2Shader')] +param( +# Set the corner_radius of OBSRoundedRect2Shader +[Alias('corner_radius')] +[ComponentModel.DefaultBindingProperty('corner_radius')] +[Int32] +$CornerRadius, +# Set the border_thickness of OBSRoundedRect2Shader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSRoundedRect2Shader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_alpha_start of OBSRoundedRect2Shader +[Alias('border_alpha_start')] +[ComponentModel.DefaultBindingProperty('border_alpha_start')] +[Single] +$BorderAlphaStart, +# Set the border_alpha_end of OBSRoundedRect2Shader +[Alias('border_alpha_end')] +[ComponentModel.DefaultBindingProperty('border_alpha_end')] +[Single] +$BorderAlphaEnd, +# Set the alpha_cut_off of OBSRoundedRect2Shader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# Set the faster_scan of OBSRoundedRect2Shader +[Alias('faster_scan')] +[ComponentModel.DefaultBindingProperty('faster_scan')] +[Management.Automation.SwitchParameter] +$FasterScan, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_rect2' +$ShaderNoun = 'OBSRoundedRect2Shader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int corner_radius< + string label = "Corner radius"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_color; +uniform float border_alpha_start< + string label = "Border alpha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 1.0; +uniform float border_alpha_end< + string label = "Border alpha end"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; +uniform float alpha_cut_off< + string label = "Aplha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.5; +uniform bool faster_scan = true; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 pixel = image.Sample(textureSampler, v_in.uv); + int closedEdgeX = 0; + int closedEdgeY = 0; + if(pixel.a < alpha_cut_off){ + return float4(1.0,0.0,0.0,0.0); + } + float check_dist = float(corner_radius); + if(border_thickness > check_dist) + check_dist = border_thickness; + if(image.Sample(textureSampler, v_in.uv + float2(check_dist*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = int(check_dist); + }else if(image.Sample(textureSampler, v_in.uv + float2(-check_dist*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = int(-check_dist); + } + if(image.Sample(textureSampler, v_in.uv + float2(0,check_dist*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = int(check_dist); + }else if(image.Sample(textureSampler, v_in.uv + float2(0,-check_dist*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = int(-check_dist); + } + if(closedEdgeX == 0 && closedEdgeY == 0){ + return pixel; + } + if(!faster_scan || closedEdgeX != 0){ + [loop] for(int x = 1;float(x) check_dist && border_thickness > corner_radius){ + if(closedEdgeXabs < corner_radius && closedEdgeYabs < corner_radius){ + float cd = distance(float2(closedEdgeXabs, closedEdgeYabs), float2(corner_radius,corner_radius)); + if(floor(cd) > corner_radius) + return float4(0.0,0.0,0.0,0.0); + if(cd > corner_radius){ + d = border_thickness + cd - corner_radius; + } else if(d > border_thickness){ + d = border_thickness; + } + }else if(d > border_thickness){ + d = border_thickness; + } + } + if(floor(d) <= check_dist){ + if(border_thickness > 0){ + if(ceil(check_dist-d) <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + ((check_dist-d)/ float(border_thickness))*(border_alpha_start-border_alpha_end); + if(border_alpha_start < border_alpha_end){ + fade_color.rgb = pixel.rgb * (1.0 - fade_color.a) + fade_color.rgb * fade_color.a; + fade_color.a = border_alpha_end + ((check_dist-d) / float(border_thickness))*(pixel.a-border_alpha_end); + } + if(d > check_dist) + fade_color.a *= 1.0 -(d - check_dist); + return fade_color; + }else if(d >= 0 && floor(check_dist-d) <= border_thickness && border_alpha_start >= border_alpha_end){ + float4 fade_color = border_color; + float f; + if(border_thickness > (check_dist-d)) + f = border_thickness - (check_dist-d); + else + f = 1.0 -((check_dist-d) - border_thickness); + fade_color.rgb = pixel.rgb * (1.0 - f) + fade_color.rgb * f; + return fade_color; + } + } + if (d > check_dist) + pixel.a *= 1.0 - (d - check_dist); + return pixel; + + } + return float4(0.0,0.0,0.0,0.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRoundedRectPerCornerShader { + +[Alias('Set-OBSRoundedRectPerCornerShader','Add-OBSRoundedRectPerCornerShader')] +param( +# Set the corner_radius_tl of OBSRoundedRectPerCornerShader +[Alias('corner_radius_tl')] +[ComponentModel.DefaultBindingProperty('corner_radius_tl')] +[Int32] +$CornerRadiusTl, +# Set the corner_radius_tr of OBSRoundedRectPerCornerShader +[Alias('corner_radius_tr')] +[ComponentModel.DefaultBindingProperty('corner_radius_tr')] +[Int32] +$CornerRadiusTr, +# Set the corner_radius_br of OBSRoundedRectPerCornerShader +[Alias('corner_radius_br')] +[ComponentModel.DefaultBindingProperty('corner_radius_br')] +[Int32] +$CornerRadiusBr, +# Set the corner_radius_bl of OBSRoundedRectPerCornerShader +[Alias('corner_radius_bl')] +[ComponentModel.DefaultBindingProperty('corner_radius_bl')] +[Int32] +$CornerRadiusBl, +# Set the border_thickness of OBSRoundedRectPerCornerShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSRoundedRectPerCornerShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_alpha_start of OBSRoundedRectPerCornerShader +[Alias('border_alpha_start')] +[ComponentModel.DefaultBindingProperty('border_alpha_start')] +[Single] +$BorderAlphaStart, +# Set the border_alpha_end of OBSRoundedRectPerCornerShader +[Alias('border_alpha_end')] +[ComponentModel.DefaultBindingProperty('border_alpha_end')] +[Single] +$BorderAlphaEnd, +# Set the alpha_cut_off of OBSRoundedRectPerCornerShader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_rect_per_corner' +$ShaderNoun = 'OBSRoundedRectPerCornerShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int corner_radius_tl< + string label = "Corner radius top left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_tr< + string label = "Corner radius top right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_br< + string label = "Corner radius bottom right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_bl< + string label = "Corner radius bottom left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_color; +uniform float border_alpha_start< + string label = "border alpha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 1.0; +uniform float border_alpha_end< + string label = "border alpha end"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float alpha_cut_off< + string label = "alpha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 pixel = image.Sample(textureSampler, v_in.uv); + int closedEdgeX = 0; + int closedEdgeY = 0; + if(pixel.a < alpha_cut_off){ + return float4(1.0,0.0,0.0,0.0); + } + int corner_radius_top = corner_radius_tl>corner_radius_tr?corner_radius_tl:corner_radius_tr; + int corner_radius_right = corner_radius_tr>corner_radius_br?corner_radius_tr:corner_radius_br; + int corner_radius_bottom = corner_radius_bl>corner_radius_br?corner_radius_bl:corner_radius_br; + int corner_radius_left = corner_radius_tl>corner_radius_bl?corner_radius_tl:corner_radius_bl; + + if(image.Sample(textureSampler, v_in.uv + float2(corner_radius_right*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = corner_radius_right; + }else if(image.Sample(textureSampler, v_in.uv + float2(-corner_radius_left*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = -corner_radius_left; + } + if(image.Sample(textureSampler, v_in.uv + float2(0,corner_radius_bottom*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = corner_radius_bottom; + }else if(image.Sample(textureSampler, v_in.uv + float2(0,-corner_radius_top*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = -corner_radius_top; + } + if(closedEdgeX == 0 && closedEdgeY == 0){ + return pixel; + } + if(closedEdgeX != 0){ + [loop] for(int x = 1;x 0 && closedEdgeY < 0){ + corner_radius = corner_radius_tr; + }else if(closedEdgeX > 0 && closedEdgeY > 0){ + corner_radius = corner_radius_br; + }else if(closedEdgeX < 0 && closedEdgeY > 0){ + corner_radius = corner_radius_bl; + } + if(closedEdgeXabs > corner_radius && closedEdgeYabs > corner_radius){ + return pixel; + } + if(closedEdgeXabs == 0){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (closedEdgeYabs / border_thickness)*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeYabs == 0){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (closedEdgeXabs / border_thickness)*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeXabs > corner_radius){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (closedEdgeYabs / border_thickness)*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + if(closedEdgeYabs > corner_radius){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (closedEdgeXabs / border_thickness)*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return pixel; + } + } + float d = distance(float2(closedEdgeXabs, closedEdgeYabs), float2(corner_radius,corner_radius)); + if(dAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRoundedRectPerSideShader { + +[Alias('Set-OBSRoundedRectPerSideShader','Add-OBSRoundedRectPerSideShader')] +param( +# Set the corner_radius_bottom of OBSRoundedRectPerSideShader +[Alias('corner_radius_bottom')] +[ComponentModel.DefaultBindingProperty('corner_radius_bottom')] +[Int32] +$CornerRadiusBottom, +# Set the corner_radius_left of OBSRoundedRectPerSideShader +[Alias('corner_radius_left')] +[ComponentModel.DefaultBindingProperty('corner_radius_left')] +[Int32] +$CornerRadiusLeft, +# Set the corner_radius_top of OBSRoundedRectPerSideShader +[Alias('corner_radius_top')] +[ComponentModel.DefaultBindingProperty('corner_radius_top')] +[Int32] +$CornerRadiusTop, +# Set the corner_radius_right of OBSRoundedRectPerSideShader +[Alias('corner_radius_right')] +[ComponentModel.DefaultBindingProperty('corner_radius_right')] +[Int32] +$CornerRadiusRight, +# Set the border_thickness of OBSRoundedRectPerSideShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSRoundedRectPerSideShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the border_alpha_start of OBSRoundedRectPerSideShader +[Alias('border_alpha_start')] +[ComponentModel.DefaultBindingProperty('border_alpha_start')] +[Single] +$BorderAlphaStart, +# Set the border_alpha_end of OBSRoundedRectPerSideShader +[Alias('border_alpha_end')] +[ComponentModel.DefaultBindingProperty('border_alpha_end')] +[Single] +$BorderAlphaEnd, +# Set the alpha_cut_off of OBSRoundedRectPerSideShader +[Alias('alpha_cut_off')] +[ComponentModel.DefaultBindingProperty('alpha_cut_off')] +[Single] +$AlphaCutOff, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_rect_per_side' +$ShaderNoun = 'OBSRoundedRectPerSideShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int corner_radius_bottom< + string label = "Corner radius bottom"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_left< + string label = "Corner radius left"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_top< + string label = "Corner radius top"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int corner_radius_right< + string label = "Corner radius right"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_color; +uniform float border_alpha_start< + string label = "border alpha start"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 1.0; +uniform float border_alpha_end< + string label = "border alpha end"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float alpha_cut_off< + string label = "alpha cut off"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float4 output_color = image.Sample(textureSampler, v_in.uv); + int closedEdgeX = 0; + int closedEdgeY = 0; + if(output_color.a < alpha_cut_off){ + return float4(1.0,0.0,0.0,0.0); + } + if(image.Sample(textureSampler, v_in.uv + float2(corner_radius_right*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = corner_radius_right; + }else if(image.Sample(textureSampler, v_in.uv + float2(-corner_radius_left*uv_pixel_interval.x,0)).a < alpha_cut_off){ + closedEdgeX = -corner_radius_left; + } + if(image.Sample(textureSampler, v_in.uv + float2(0,corner_radius_bottom*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = corner_radius_bottom; + }else if(image.Sample(textureSampler, v_in.uv + float2(0,-corner_radius_top*uv_pixel_interval.y)).a < alpha_cut_off){ + closedEdgeY = -corner_radius_top; + } + if(closedEdgeX == 0 && closedEdgeY == 0){ + return output_color; + } + if(closedEdgeX != 0){ + [loop] for(int x = 1;x corner_radius){ + closedEdgeXabs = 0; + } + if(closedEdgeYabs > corner_radius){ + closedEdgeYabs = 0; + } + if(closedEdgeXabs == 0 && closedEdgeYabs == 0){ + return output_color; + } + if(closedEdgeXabs == 0){ + if(closedEdgeYabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeYabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return output_color; + } + } + if(closedEdgeYabs == 0){ + if(closedEdgeXabs <= border_thickness){ + float4 fade_color = border_color; + fade_color.a = border_alpha_end + (float(closedEdgeXabs) / float(border_thickness))*(border_alpha_start-border_alpha_end); + return fade_color; + }else{ + return output_color; + } + } + + float closest = closedEdgeXabsAdd|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRoundedRectShader { + +[Alias('Set-OBSRoundedRectShader','Add-OBSRoundedRectShader')] +param( +# Set the corner_radius of OBSRoundedRectShader +[Alias('corner_radius')] +[ComponentModel.DefaultBindingProperty('corner_radius')] +[Int32] +$CornerRadius, +# Set the border_thickness of OBSRoundedRectShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the border_color of OBSRoundedRectShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_rect' +$ShaderNoun = 'OBSRoundedRectShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGl by Q-mii & Exeldro February 21, 2022 +uniform int corner_radius< + string label = "Corner radius"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; + +uniform float4 border_color; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 mirrored_tex_coord = float2(0.5, 0.5) - abs(v_in.uv - float2(0.5, 0.5)); + float4 output_color = image.Sample(textureSampler, v_in.uv); + + float2 pixel_position = float2(mirrored_tex_coord.x / uv_pixel_interval.x, mirrored_tex_coord.y / uv_pixel_interval.y); + float pixel_distance_from_center = distance(pixel_position, float2(corner_radius, corner_radius)); + + bool is_in_corner = pixel_position.x < corner_radius && pixel_position.y < corner_radius; + bool is_within_radius = pixel_distance_from_center <= corner_radius; + + bool is_within_edge_border = !is_in_corner && (pixel_position.x < 0 && pixel_position.x >= -border_thickness || pixel_position.y < 0 && pixel_position.y >= -border_thickness); + bool is_within_corner_border = is_in_corner && pixel_distance_from_center > corner_radius && pixel_distance_from_center <= (corner_radius + border_thickness); + + return ((!is_in_corner || is_within_radius)?output_color:float4(0,0,0,0)) + ((is_within_edge_border || is_within_corner_border)?border_color:float4(0,0,0,0)); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRoundedStrokeGradientShader { + +[Alias('Set-OBSRoundedStrokeGradientShader','Add-OBSRoundedStrokeGradientShader')] +param( +# Set the corner_radius of OBSRoundedStrokeGradientShader +[Alias('corner_radius')] +[ComponentModel.DefaultBindingProperty('corner_radius')] +[Int32] +$CornerRadius, +# Set the border_thickness of OBSRoundedStrokeGradientShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the minimum_alpha_percent of OBSRoundedStrokeGradientShader +[Alias('minimum_alpha_percent')] +[ComponentModel.DefaultBindingProperty('minimum_alpha_percent')] +[Int32] +$MinimumAlphaPercent, +# Set the rotation_speed of OBSRoundedStrokeGradientShader +[Alias('rotation_speed')] +[ComponentModel.DefaultBindingProperty('rotation_speed')] +[Int32] +$RotationSpeed, +# Set the border_colorL of OBSRoundedStrokeGradientShader +[Alias('border_colorL')] +[ComponentModel.DefaultBindingProperty('border_colorL')] +[String] +$BorderColorL, +# Set the border_colorR of OBSRoundedStrokeGradientShader +[Alias('border_colorR')] +[ComponentModel.DefaultBindingProperty('border_colorR')] +[String] +$BorderColorR, +# Set the center_width of OBSRoundedStrokeGradientShader +[Alias('center_width')] +[ComponentModel.DefaultBindingProperty('center_width')] +[Int32] +$CenterWidth, +# Set the center_height of OBSRoundedStrokeGradientShader +[Alias('center_height')] +[ComponentModel.DefaultBindingProperty('center_height')] +[Int32] +$CenterHeight, +# Set the notes of OBSRoundedStrokeGradientShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_stroke_gradient' +$ShaderNoun = 'OBSRoundedStrokeGradientShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//rounded rectange shader from https://raw.githubusercontent.com/exeldro/obs-lua/master/rounded_rect.shader +//modified slightly by Surn +uniform int corner_radius< + string label = "Corner radius"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "Border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int minimum_alpha_percent< + string label = "Minimum alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int rotation_speed< + string label = "rotation speed"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform float4 border_colorL; +uniform float4 border_colorR; +//uniform float color_spread = 2.0; +uniform int center_width< + string label = "center width"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_height< + string label = "center height"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform string notes< + string widget_type = "info"; +> = "Outlines the opaque areas with a rounded border. Default Minimum Alpha Percent is 50%, lowering will reveal more"; + +// float3 hsv2rgb(float3 c) +// { +// float4 K = float4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); +// float3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www); +// return c.z * lerp(K.xxx, saturate(p - K.xxx), c.y); +// } + +float mod(float x, float y) +{ + return x - y * floor(x/y); +} + +float4 gradient(float c) { + c = mod(c , 2.0); + if(c < 0.0f){ + c = c * -1.0; + } + if(c > 1.0){ + c = 1.0 - c; + if(c < 0.0f){ + c = c + 1.0; + } + } + return lerp(border_colorL, border_colorR, c); +} + +float4 getBorderColor(float2 toCenter){ + float angle = atan2(toCenter.y ,toCenter.x ); + float angleMod = (elapsed_time * mod(float(rotation_speed) , 18.0)) / 9; + return gradient((angle / 3.14159265f) + angleMod); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 st = v_in.uv * uv_scale; + float2 center_pixel_coordinates = float2((float(center_width) * 0.01), (float(center_height) * 0.01) ); + float2 toCenter = center_pixel_coordinates - st; + + float min_alpha = clamp(minimum_alpha_percent * .01, -1.0, 101.0); + float4 output_color = image.Sample(textureSampler, v_in.uv); + if (output_color.a < min_alpha) + { + return float4(0.0, 0.0, 0.0, 0.0); + } + int closedEdgeX = 0; + if (image.Sample(textureSampler, v_in.uv + float2(corner_radius * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = corner_radius; + } + else if (image.Sample(textureSampler, v_in.uv + float2(-corner_radius * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = corner_radius; + } + int closedEdgeY = 0; + if (image.Sample(textureSampler, v_in.uv + float2(0, corner_radius * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = corner_radius; + } + else if (image.Sample(textureSampler, v_in.uv + float2(0, -corner_radius * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = corner_radius; + } + if (closedEdgeX == 0 && closedEdgeY == 0) + { + return output_color; + } + if (closedEdgeX != 0) + { + [loop] + for (int x = 1; x < corner_radius; x++) + { + if (image.Sample(textureSampler, v_in.uv + float2(x * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = x; + break; + } + if (image.Sample(textureSampler, v_in.uv + float2(-x * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = x; + break; + } + } + } + if (closedEdgeY != 0) + { + [loop] + for (int y = 1; y < corner_radius; y++) + { + if (image.Sample(textureSampler, v_in.uv + float2(0, y * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = y; + break; + } + if (image.Sample(textureSampler, v_in.uv + float2(0, -y * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = y; + break; + } + } + } + if (closedEdgeX == 0) + { + if (closedEdgeY < border_thickness) + { + return getBorderColor(toCenter); + } + else + { + return output_color; + } + } + if (closedEdgeY == 0) + { + if (closedEdgeX < border_thickness) + { + return getBorderColor(toCenter); + } + else + { + return output_color; + } + } + + float d = distance(float2(closedEdgeX, closedEdgeY), float2(corner_radius, corner_radius)); + if (d < corner_radius) + { + if (corner_radius - d < border_thickness) + { + return getBorderColor(toCenter); + } + else + { + return output_color; + } + } + return float4(0.0, 0.0, 0.0, 0.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRoundedStrokeShader { + +[Alias('Set-OBSRoundedStrokeShader','Add-OBSRoundedStrokeShader')] +param( +# Set the corner_radius of OBSRoundedStrokeShader +[Alias('corner_radius')] +[ComponentModel.DefaultBindingProperty('corner_radius')] +[Int32] +$CornerRadius, +# Set the border_thickness of OBSRoundedStrokeShader +[Alias('border_thickness')] +[ComponentModel.DefaultBindingProperty('border_thickness')] +[Int32] +$BorderThickness, +# Set the minimum_alpha_percent of OBSRoundedStrokeShader +[Alias('minimum_alpha_percent')] +[ComponentModel.DefaultBindingProperty('minimum_alpha_percent')] +[Int32] +$MinimumAlphaPercent, +# Set the border_color of OBSRoundedStrokeShader +[Alias('border_color')] +[ComponentModel.DefaultBindingProperty('border_color')] +[String] +$BorderColor, +# Set the notes of OBSRoundedStrokeShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'rounded_stroke' +$ShaderNoun = 'OBSRoundedStrokeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//rounded rectange shader from https://raw.githubusercontent.com/exeldro/obs-lua/master/rounded_rect.shader +//modified slightly by Surn +//Converted to OpenGl by Q-mii & Exeldro February 21, 2022 +uniform int corner_radius< + string label = "Corner radius"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 200; + int step = 1; +>; +uniform int border_thickness< + string label = "border thickness"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; +uniform int minimum_alpha_percent< + string label = "Minimum alpha percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float4 border_color; +uniform string notes< + string widget_type = "info"; +> = "Outlines the opaque areas with a rounded border. Default Minimum Alpha Percent is 50%, lowering will reveal more"; + +float4 mainImage(VertData v_in) : TARGET +{ + float min_alpha = clamp(minimum_alpha_percent * .01, -1.0, 101.0); + float4 output_color = image.Sample(textureSampler, v_in.uv); + if (output_color.a < min_alpha) + { + return float4(0.0, 0.0, 0.0, 0.0); + } + int closedEdgeX = 0; + if (image.Sample(textureSampler, v_in.uv + float2(corner_radius * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = corner_radius; + } + else if (image.Sample(textureSampler, v_in.uv + float2(-corner_radius * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = corner_radius; + } + int closedEdgeY = 0; + if (image.Sample(textureSampler, v_in.uv + float2(0, corner_radius * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = corner_radius; + } + else if (image.Sample(textureSampler, v_in.uv + float2(0, -corner_radius * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = corner_radius; + } + if (closedEdgeX == 0 && closedEdgeY == 0) + { + return float4(output_color); + } + if (closedEdgeX != 0) + { + [loop] + for (int x = 1; x < corner_radius; x++) + { + if (image.Sample(textureSampler, v_in.uv + float2(x * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = x; + break; + } + if (image.Sample(textureSampler, v_in.uv + float2(-x * uv_pixel_interval.x, 0)).a < min_alpha) + { + closedEdgeX = x; + break; + } + } + } + if (closedEdgeY != 0) + { + [loop] + for (int y = 1; y < corner_radius; y++) + { + if (image.Sample(textureSampler, v_in.uv + float2(0, y * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = y; + break; + } + if (image.Sample(textureSampler, v_in.uv + float2(0, -y * uv_pixel_interval.y)).a < min_alpha) + { + closedEdgeY = y; + break; + } + } + } + if (closedEdgeX == 0) + { + if (closedEdgeY < border_thickness) + { + return border_color; + } + else + { + return float4(output_color); + } + } + if (closedEdgeY == 0) + { + if (closedEdgeX < border_thickness) + { + return border_color; + } + else + { + return float4(output_color); + } + } + + float d = distance(float2(closedEdgeX, closedEdgeY), float2(corner_radius, corner_radius)); + if (d < corner_radius) + { + if (corner_radius - d < border_thickness) + { + return border_color; + } + else + { + return output_color; + } + } + return float4(0.0, 0.0, 0.0, 0.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSScanLineShader { + +[Alias('Set-OBSScanLineShader','Add-OBSScanLineShader')] +param( +# Set the lengthwise of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('lengthwise')] +[Management.Automation.SwitchParameter] +$Lengthwise, +# Set the animate of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('animate')] +[Management.Automation.SwitchParameter] +$Animate, +# Set the speed of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the angle of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('angle')] +[Single] +$Angle, +# Set the shift of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('shift')] +[Management.Automation.SwitchParameter] +$Shift, +# Set the boost of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('boost')] +[Management.Automation.SwitchParameter] +$Boost, +# Set the floor of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('floor')] +[Single] +$Floor, +# Set the period of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('period')] +[Single] +$Period, +# Set the notes of OBSScanLineShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'scan_line' +$ShaderNoun = 'OBSScanLineShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Scan Line Effect for OBS Studio +// originally from Andersama (https://github.com/Andersama) +// Modified and improved my Charles Fettinger (https://github.com/Oncorporation) 1/2019 +//Converted to OpenGL by Q-mii & Exeldro February 21, 2022 +//Count the number of scanlines we want via height or width, adjusts the sin wave period +uniform bool lengthwise; +//Do we want the scanlines to move? +uniform bool animate; +//How fast do we want those scanlines to move? +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10000.0; + float step = 1; +> = 1000; +//What angle should the scanlines come in at (based in degrees) +uniform float angle< + string label = "angle"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 360.0; + float step = 0.1; +> = 45; +//Turns on adjustment of the results, sin returns -1 -> 1 these settings will change the results a bit +//By default values for color range from 0 to 1 +//Boost centers the result of the sin wave on 1*, to help maintain the brightness of the screen +uniform bool shift = true; +uniform bool boost = true; +//Increases the minimum value of the sin wave +uniform float floor< + string label = "Floor"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.001; +> = 0.0; +//final adjustment to the period of the sin wave, we can''t / 0, need to be careful w/ user input +uniform float period< + string label = "Period"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 1000.0; + float step = 1.0; +> = 10.0; +uniform string notes< + string widget_type = "info"; +> = "floor affects the minimum opacity of the scan line"; +float4 mainImage(VertData v_in) : TARGET +{ + //3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481 3.141592653589793238462643383279502884197169399375105820974944592307816406286 + // float pix2 = 6.2831853071795864769252;//86766559005768394338798750211641949 + float nfloor = clamp(floor, 0.0, 100.0) * 0.01; + float nperiod = max(period, 1.0); + float gap = 1 - nfloor; + float pi = 3.1415926535897932384626; + float2 direction = float2( cos(angle * pi / 180.0) , sin(angle * pi / 180.0) ); + float nspeed = 0.0; + if(animate){ + nspeed = speed * 0.0001; + } + + float4 color = image.Sample(textureSampler, v_in.uv); + + float t = elapsed_time * nspeed; + + if(!lengthwise){ + float base_height = 1.0 / uv_pixel_interval.y; + float h_interval = pi * base_height; + + float rh_sin = sin(((v_in.uv.y * direction.y + v_in.uv.x * direction.x) + t) * (h_interval / nperiod)); + if(shift){ + rh_sin = ((1.0 + rh_sin) * 0.5) * gap + nfloor; + if(boost){ + rh_sin += gap * 0.5; + } + } + float4 s_mult = float4(rh_sin,rh_sin,rh_sin,1); + return s_mult * color; + } + else{ + float base_width = 1.0 / uv_pixel_interval.x; + float w_interval = pi * base_width; + + float rh_sin = sin(((v_in.uv.y * direction.y + v_in.uv.x * direction.x) + t) * (w_interval / nperiod)); + if(shift){ + rh_sin = ((1.0 + rh_sin) * 0.5) * gap + nfloor; + if(boost){ + rh_sin += gap * 0.5; + } + } + float4 s_mult = float4(rh_sin,rh_sin,rh_sin,1); + return s_mult * color; + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSeascapeShader { + +[Alias('Set-OBSSeascapeShader','Add-OBSSeascapeShader')] +param( +# Set the AA of OBSSeascapeShader +[ComponentModel.DefaultBindingProperty('AA')] +[Management.Automation.SwitchParameter] +$AA, +# Set the SEA_HEIGHT of OBSSeascapeShader +[Alias('SEA_HEIGHT')] +[ComponentModel.DefaultBindingProperty('SEA_HEIGHT')] +[Single] +$SEAHEIGHT, +# Set the SEA_CHOPPY of OBSSeascapeShader +[Alias('SEA_CHOPPY')] +[ComponentModel.DefaultBindingProperty('SEA_CHOPPY')] +[Single] +$SEACHOPPY, +# Set the SEA_SPEED of OBSSeascapeShader +[Alias('SEA_SPEED')] +[ComponentModel.DefaultBindingProperty('SEA_SPEED')] +[Single] +$SEASPEED, +# Set the SEA_FREQ of OBSSeascapeShader +[Alias('SEA_FREQ')] +[ComponentModel.DefaultBindingProperty('SEA_FREQ')] +[Single] +$SEAFREQ, +# Set the SEA_BASE of OBSSeascapeShader +[Alias('SEA_BASE')] +[ComponentModel.DefaultBindingProperty('SEA_BASE')] +[String] +$SEABASE, +# Set the SEA_WATER_COLOR of OBSSeascapeShader +[Alias('SEA_WATER_COLOR')] +[ComponentModel.DefaultBindingProperty('SEA_WATER_COLOR')] +[String] +$SEAWATERCOLOR, +# Set the CAMERA_SPEED of OBSSeascapeShader +[Alias('CAMERA_SPEED')] +[ComponentModel.DefaultBindingProperty('CAMERA_SPEED')] +[Single] +$CAMERASPEED, +# Set the CAMERA_TURN_SPEED of OBSSeascapeShader +[Alias('CAMERA_TURN_SPEED')] +[ComponentModel.DefaultBindingProperty('CAMERA_TURN_SPEED')] +[Single] +$CAMERATURNSPEED, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'seascape' +$ShaderNoun = 'OBSSeascapeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +/* + * "Seascape" by Alexander Alekseev aka TDM - 2014 + * License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. + * Contact: tdmaav@gmail.com + * https://www.shadertoy.com/view/Ms2SD1 adapted by Exeldro + */ + +#define NUM_STEPS 8 +#define PI 3.141592 +#define EPSILON 0.001 +uniform bool AA< + string label = "Smooth (more resources)"; +> = false; + +#ifndef OPENGL +#define mat2 float2x2 +#define mat3 float3x3 +#define fract frac +#define mix lerp +#endif + +// sea +#define ITER_GEOMETRY 3 +#define ITER_FRAGMENT 5 +uniform float SEA_HEIGHT< + string label = "Sea Height"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.5; + float step = 0.001; +> = 0.6; +uniform float SEA_CHOPPY< + string label = "Sea Choppy"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 4.0; +uniform float SEA_SPEED< + string label = "Sea Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.8; +uniform float SEA_FREQ< + string label = "Sea Frequency"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.16; +uniform float4 SEA_BASE< + string label = "Sea Base"; +> = {0.0,0.09,0.18,1.0}; +uniform float4 SEA_WATER_COLOR< + string label = "Sea Water"; +> = {0.48,0.54,0.36,1.0}; + +uniform float CAMERA_SPEED< + string label = "Camera Speed"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; + +uniform float CAMERA_TURN_SPEED< + string label = "Camera Turn Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; + + +float SEA_TIME(){ + return 1.0 + elapsed_time * SEA_SPEED; +} + +// math +mat3 fromEuler(float3 ang) { + float2 a1 = float2(sin(ang.x),cos(ang.x)); + float2 a2 = float2(sin(ang.y),cos(ang.y)); + float2 a3 = float2(sin(ang.z),cos(ang.z)); + return mat3(float3(a1.y*a3.y+a1.x*a2.x*a3.x,a1.y*a2.x*a3.x+a3.y*a1.x,-a2.y*a3.x), + float3(-a2.y*a1.x,a1.y*a2.y,a2.x), + float3(a3.y*a1.x*a2.x+a1.y*a3.x,a1.x*a3.x-a1.y*a3.y*a2.x,a2.y*a3.y)); +} + +float hash(float2 p) { + float h = dot(p,float2(127.1,311.7)); + return fract(sin(h)*43758.5453123); +} + +float noise(float2 p) { + float2 i = floor( p ); + float2 f = fract( p ); + float2 u = f*f*(3.0-2.0*f); + return -1.0+2.0*mix( mix( hash( i + float2(0.0,0.0) ), + hash( i + float2(1.0,0.0) ), u.x), + mix( hash( i + float2(0.0,1.0) ), + hash( i + float2(1.0,1.0) ), u.x), u.y); +} + +// lighting +float diffuse(float3 n,float3 l,float p) { + return pow(dot(n,l) * 0.4 + 0.6,p); +} +float specular(float3 n,float3 l,float3 e,float s) { + float nrm = (s + 8.0) / (PI * 8.0); + return pow(max(dot(reflect(e,n),l),0.0),s) * nrm; +} + +// sky +float3 getSkyColor(float3 e) { + e.y = (max(e.y,0.0)*0.8+0.2)*0.8; + return float3(pow(1.0-e.y,2.0), 1.0-e.y, 0.6+(1.0-e.y)*0.4) * 1.1; +} + +// sea +float sea_octave(float2 uv, float choppy) { + uv += noise(uv); + float2 wv = 1.0-abs(sin(uv)); + float2 swv = abs(cos(uv)); + wv = mix(wv,swv,wv); + return pow(1.0-pow(wv.x * wv.y,0.65),choppy); +} + +float map(float3 p) { + float freq = SEA_FREQ; + float amp = SEA_HEIGHT; + float choppy = SEA_CHOPPY; + float2 uv = p.xz; + uv.x *= 0.75; + mat2 octave_m = mat2(1.6,1.2,-1.2,1.6); + + float st = SEA_TIME(); + float d, h = 0.0; + for(int i = 0; i < ITER_GEOMETRY; i++) { + d = sea_octave((uv+float2(st,st))*freq,choppy); + d += sea_octave((uv-float2(st,st))*freq,choppy); + h += d * amp; + uv = mul(uv, octave_m); + freq *= 1.9; + amp *= 0.22; + choppy = mix(choppy,1.0,0.2); + } + return p.y - h; +} + +float map_detailed(float3 p) { + float freq = SEA_FREQ; + float amp = SEA_HEIGHT; + float choppy = SEA_CHOPPY; + float2 uv = p.xz; uv.x *= 0.75; + mat2 octave_m = mat2(1.6,1.2,-1.2,1.6); + float st = SEA_TIME(); + float d, h = 0.0; + for(int i = 0; i < ITER_FRAGMENT; i++) { + d = sea_octave((uv+float2(st,st))*freq,choppy); + d += sea_octave((uv-float2(st,st))*freq,choppy); + h += d * amp; + uv = mul(uv, octave_m); + freq *= 1.9; + amp *= 0.22; + choppy = mix(choppy,1.0,0.2); + } + return p.y - h; +} + +float3 getSeaColor(float3 p, float3 n, float3 l, float3 eye, float3 dist) { + float fresnel = clamp(1.0 - dot(n,-eye), 0.0, 1.0); + fresnel = min(pow(fresnel,3.0), 0.5); + + float3 reflected = getSkyColor(reflect(eye,n)); + float3 refracted = SEA_BASE.rgb + diffuse(n,l,80.0) * SEA_WATER_COLOR.rgb * 0.12; + + float3 color = mix(refracted,reflected,fresnel); + + float atten = max(1.0 - dot(dist,dist) * 0.001, 0.0); + color += SEA_WATER_COLOR.rgb * (p.y - SEA_HEIGHT) * 0.18 * atten; + + float s = specular(n,l,eye,60.0); + color += float3(s,s,s); + + return color; +} + +// tracing +float3 getNormal(float3 p, float eps) { + float3 n; + n.y = map_detailed(p); + n.x = map_detailed(float3(p.x+eps,p.y,p.z)) - n.y; + n.z = map_detailed(float3(p.x,p.y,p.z+eps)) - n.y; + n.y = eps; + return normalize(n); +} + +float heightMapTracing(float3 ori, float3 dir, out float3 p) { + float tm = 0.0; + float tx = 1000.0; + float hx = map(ori + dir * tx); + if(hx > 0.0) { + p = ori + dir * tx; + return tx; + } + float hm = map(ori + dir * tm); + float tmid = 0.0; + for(int i = 0; i < NUM_STEPS; i++) { + tmid = mix(tm,tx, hm/(hm-hx)); + p = ori + dir * tmid; + float hmid = map(p); + if(hmid < 0.0) { + tx = tmid; + hx = hmid; + } else { + tm = tmid; + hm = hmid; + } + } + return tmid; +} + +float3 getPixel(in float2 coord, float time) { + float2 uv = coord / uv_size.xy; + uv = uv * 2.0 - 1.0; + uv.x *= uv_size.x / uv_size.y; + + // ray + float3 ang = float3(sin(time*3.0*CAMERA_TURN_SPEED)*0.1,sin(time*CAMERA_TURN_SPEED)*0.2+0.3,time*CAMERA_TURN_SPEED); + float3 ori = float3(0.0,3.5,time*5.0*CAMERA_SPEED); + float3 dir = normalize(float3(uv.xy,-2.0)); + dir.z += length(uv) * 0.14; + dir = mul(normalize(dir), fromEuler(ang)); + + // tracing + float3 p; + heightMapTracing(ori,dir,p); + float3 dist = p - ori; + float3 n = getNormal(p, dot(dist,dist) * (0.1 / uv_size.x)); + float3 light = normalize(float3(0.0,1.0,0.8)); + + // color + return mix( + getSkyColor(dir), + getSeaColor(p,n,light,dir,dist), + pow(smoothstep(0.0,-0.02,dir.y),0.2)); +} + +// main +float4 mainImage(VertData v_in) : TARGET +{ + float time = elapsed_time * 0.3; + float2 fragCoord = float2(v_in.uv.x * uv_size.x, (1.0 - v_in.uv.y) * uv_size.y); + + float3 color = float3(0.0,0.0,0.0);; + if (AA){ + for(int i = -1; i <= 1; i++) { + for(int j = -1; j <= 1; j++) { + float2 uv = fragCoord+float2(i,j)/3.0; + color += getPixel(uv, time); + } + } + color /= 9.0; + }else{ + color = getPixel(fragCoord, time); + } + + // post + return float4(pow(color,float3(0.65,0.65,0.65)), 1.0); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSeasickShader { + +[Alias('Set-OBSSeasickShader','Add-OBSSeasickShader')] +param( +# Set the notes of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the amplitude of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('amplitude')] +[Single] +$Amplitude, +# Set the speed of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the frequency of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('frequency')] +[Single] +$Frequency, +# Set the opacity of OBSSeasickShader +[ComponentModel.DefaultBindingProperty('opacity')] +[Single] +$Opacity, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'seasick' +$ShaderNoun = 'OBSSeasickShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Seasick - an effect for OBS Studio +// +uniform string notes< + string widget_type = "info"; +> = "Seasick - from the game Snavenger\n\n(available on Google Play/Amazon Fire)"; +uniform float amplitude< + string label = "amplitude"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.03; +uniform float speed< + string label = "speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 1.0; +uniform float frequency< + string label = "frequency"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 6.0; +uniform float opacity< + string label = "opacity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 pulse = sin(elapsed_time*speed - frequency * v_in.uv); + float2 coord = v_in.uv + amplitude * float2(pulse.x, -pulse.y); + return image.Sample(textureSampler, coord) * opacity; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSelectiveColorShader { + +[Alias('Set-OBSSelectiveColorShader','Add-OBSSelectiveColorShader')] +param( +# Set the cutoff_Red of OBSSelectiveColorShader +[Alias('cutoff_Red')] +[ComponentModel.DefaultBindingProperty('cutoff_Red')] +[Single] +$CutoffRed, +# Set the cutoff_Green of OBSSelectiveColorShader +[Alias('cutoff_Green')] +[ComponentModel.DefaultBindingProperty('cutoff_Green')] +[Single] +$CutoffGreen, +# Set the cutoff_Blue of OBSSelectiveColorShader +[Alias('cutoff_Blue')] +[ComponentModel.DefaultBindingProperty('cutoff_Blue')] +[Single] +$CutoffBlue, +# Set the cutoff_Yellow of OBSSelectiveColorShader +[Alias('cutoff_Yellow')] +[ComponentModel.DefaultBindingProperty('cutoff_Yellow')] +[Single] +$CutoffYellow, +# Set the acceptance_Amplifier of OBSSelectiveColorShader +[Alias('acceptance_Amplifier')] +[ComponentModel.DefaultBindingProperty('acceptance_Amplifier')] +[Single] +$AcceptanceAmplifier, +# Set the show_Red of OBSSelectiveColorShader +[Alias('show_Red')] +[ComponentModel.DefaultBindingProperty('show_Red')] +[Management.Automation.SwitchParameter] +$ShowRed, +# Set the show_Green of OBSSelectiveColorShader +[Alias('show_Green')] +[ComponentModel.DefaultBindingProperty('show_Green')] +[Management.Automation.SwitchParameter] +$ShowGreen, +# Set the show_Blue of OBSSelectiveColorShader +[Alias('show_Blue')] +[ComponentModel.DefaultBindingProperty('show_Blue')] +[Management.Automation.SwitchParameter] +$ShowBlue, +# Set the show_Yellow of OBSSelectiveColorShader +[Alias('show_Yellow')] +[ComponentModel.DefaultBindingProperty('show_Yellow')] +[Management.Automation.SwitchParameter] +$ShowYellow, +# Set the notes of OBSSelectiveColorShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the background_type of OBSSelectiveColorShader +[Alias('background_type')] +[ComponentModel.DefaultBindingProperty('background_type')] +[Int32] +$BackgroundType, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'selective_color' +$ShaderNoun = 'OBSSelectiveColorShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Selective Color shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +//https://github.com/Oncorporation/obs-shaderfilter +//updated 4/13/2020: take into account the opacity/alpha of input image -thanks Skeletonbow for suggestion +//Converted to OpenGL by Q-mii February 25, 2020 +uniform float cutoff_Red< + string label = "cutoff Red"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.40; +uniform float cutoff_Green< + string label = "cutoff Green"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.025; +uniform float cutoff_Blue< + string label = "cutoff Blue"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.25; +uniform float cutoff_Yellow< + string label = "cutoff Yellow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.25; +uniform float acceptance_Amplifier< + string label = "acceptance Amplifier"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 20.0; + float step = 0.001; +> = 5.0; + +uniform bool show_Red = true; +uniform bool show_Green = true; +uniform bool show_Blue = true; +uniform bool show_Yellow = true; +uniform string notes< + string widget_type = "info"; +> = "defaults: .4,.03,.25,.25, 5.0, true,true, true, true. cuttoff higher = less color, 0 = all 1 = none."; +uniform int background_type< + string label = "background type"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "Grey"; + int option_1_value = 1; + string option_1_label = "Luma"; + int option_2_value = 2; + string option_2_label = "White"; + int option_3_value = 3; + string option_3_label = "Black"; + int option_4_value = 4; + string option_4_label = "Transparent"; + int option_5_value = 5; + string option_5_label = "Background Color"; +> = 0; + +float4 mainImage(VertData v_in) : TARGET +{ + const float PI = 3.1415926535897932384626433832795;//acos(-1); + const float3 coefLuma = float3(0.2126, 0.7152, 0.0722); + float4 color = image.Sample(textureSampler, v_in.uv); + + float luminance = dot(coefLuma, color.rgb); + float4 gray = float4(luminance, luminance, luminance, 1.0); + + if (background_type == 0) + { + luminance = (color.r + color.g + color.b) * 0.3333; + gray = float4(luminance,luminance,luminance, 1.0); + } + //if (background_type == 1) + //{ + // gray = float4(luminance,luminance,luminance, 1.0); + //} + if (background_type == 2) + gray = float4(1.0,1.0,1.0,1.0); + if (background_type == 3) + gray = float4(0.0,0.0,0.0,1.0); + if (background_type == 4) + gray.a = 0.01; + if (background_type == 5) + gray = color; + + float redness = max ( min ( color.r - color.g , color.r - color.b ) / color.r , 0); + float greenness = max ( min ( color.g - color.r , color.g - color.b ) / color.g , 0); + float blueness = max ( min ( color.b - color.r , color.b - color.g ) / color.b , 0); + + float rgLuminance = (color.r*1.4 + color.g*0.6)/2; + float rgDiff = abs(color.r-color.g)*1.4; + + float yellowness = 0.1 + rgLuminance * 1.2 - color.b - rgDiff; + + float4 accept; + accept.r = float(show_Red) * (redness - cutoff_Red); + accept.g = float(show_Green) * (greenness - cutoff_Green); + accept.b = float(show_Blue) * (blueness - cutoff_Blue); + accept[3] = float(show_Yellow) * (yellowness - cutoff_Yellow); + + float acceptance = max (accept.r, max(accept.g, max(accept.b, max(accept[3],0)))); + float modAcceptance = min (acceptance * acceptance_Amplifier, 1); + + float4 result = color; + if (result.a > 0) { + result = modAcceptance * color + (1.0 - modAcceptance) * gray; + //result.a *= gray.a; + } + + return result; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSShakeShader { + +[Alias('Set-OBSShakeShader','Add-OBSShakeShader')] +param( +# Set the ViewProj of OBSShakeShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSShakeShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSShakeShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSShakeShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSShakeShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSShakeShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSShakeShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSShakeShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the local_time of OBSShakeShader +[Alias('local_time')] +[ComponentModel.DefaultBindingProperty('local_time')] +[Single] +$LocalTime, +# Set the random_scale of OBSShakeShader +[Alias('random_scale')] +[ComponentModel.DefaultBindingProperty('random_scale')] +[Single] +$RandomScale, +# Set the worble of OBSShakeShader +[ComponentModel.DefaultBindingProperty('worble')] +[Management.Automation.SwitchParameter] +$Worble, +# Set the speed of OBSShakeShader +[ComponentModel.DefaultBindingProperty('speed')] +[Single] +$Speed, +# Set the min_growth_pixels of OBSShakeShader +[Alias('min_growth_pixels')] +[ComponentModel.DefaultBindingProperty('min_growth_pixels')] +[Single] +$MinGrowthPixels, +# Set the max_growth_pixels of OBSShakeShader +[Alias('max_growth_pixels')] +[ComponentModel.DefaultBindingProperty('max_growth_pixels')] +[Single] +$MaxGrowthPixels, +# Set the randomize_movement of OBSShakeShader +[Alias('randomize_movement')] +[ComponentModel.DefaultBindingProperty('randomize_movement')] +[Management.Automation.SwitchParameter] +$RandomizeMovement, +# Set the notes of OBSShakeShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'shake' +$ShaderNoun = 'OBSShakeShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Shake Effect By Charles Fettinger (https://github.com/Oncorporation) 2/2019 +// Added some randomization based upon random_scale input +// updated for latest version of obs-shaderfilter + +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; +uniform float local_time; + + +uniform float random_scale< + string label = "random scale"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 0.25; +uniform bool worble = false; +uniform float speed< + string label = "Speed"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.001; +> = 1.0; +uniform float min_growth_pixels< + string label = "min growth pixels"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = -2.0; +uniform float max_growth_pixels< + string label = "max growth pixels"; + string widget_type = "slider"; + float minimum = -10.0; + float maximum = 10.0; + float step = 0.001; +> = 2.0; +uniform bool randomize_movement = false; + +uniform string notes< + string widget_type = "info"; +> =''keep the random_scale low for small (0.2-1) for small jerky movements and larger for less often big jumps''; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +//noise values in range if 0.0 to 1.0 + +float noise3D(float x, float y, float z) { + float ptr = 0.0f; + return frac(sin(x*112.9898f + y*179.233f + z*237.212f) * 43758.5453f); +} + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + + float3 pos = v_in.pos.xyz; + float t; + float s; + float noise; + if (randomize_movement) + { + t = (rand_f * 2) - 1.0f; + s = (1 - rand_f * 2) - 1.0f;; + noise = clamp( rand_f * random_scale,-0.99, 0.99); + } + else + { + t = (1 + sin(elapsed_time * speed)) / 2; + s = (1 + cos(elapsed_time * speed)) / 2; + noise = clamp(noise3D(t,s,100) * random_scale,-0.99, 0.99); + } + + float3 direction_from_center = float3((v_in.uv.x - 0.5 + noise) * uv_pixel_interval.y / uv_pixel_interval.x, v_in.uv.y - 0.5 + noise, 1); + float3 min_pos; + float3 max_pos; + if (worble) + { + min_pos = pos + direction_from_center * min_growth_pixels * 0.5; + max_pos = pos + direction_from_center * max_growth_pixels * 0.5; + } + else + { + min_pos = pos + direction_from_center * 0.5; + max_pos = min_pos; + } + + float3 current_pos = min_pos * (1 - t) + max_pos * t; + //current_pos.x = v_in.pos.x + (t * min_pos.x); + current_pos.y = (min_pos.y * (1 - s) + max_pos.y * s); + //current_pos.y = v_in.pos.y + (s * min_pos.y); + //current_pos.z = min_pos.z * (1 - s) + max_pos.z * s; + + float2 offset = uv_offset; + offset.x = uv_offset.x * (1 - t + noise); + offset.y = uv_offset.y * (1 - s + noise); + + vert_out.pos = mul(float4(current_pos, 1), ViewProj); + + //float2 scale = uv_scale; + //scale += dot(pos - current_pos, 1); + + vert_out.uv = v_in.uv * uv_scale + offset; + return vert_out; +} + +float4 mainImage(VertData v_in) : TARGET +{ + return image.Sample(textureSampler, v_in.uv); +} + +technique Draw +{ + pass + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSShineShader { + +[Alias('Set-OBSShineShader','Add-OBSShineShader')] +param( +# Set the l_tex of OBSShineShader +[Alias('l_tex')] +[ComponentModel.DefaultBindingProperty('l_tex')] +[String] +$LTex, +# Set the shine_color of OBSShineShader +[Alias('shine_color')] +[ComponentModel.DefaultBindingProperty('shine_color')] +[String] +$ShineColor, +# Set the speed_percent of OBSShineShader +[Alias('speed_percent')] +[ComponentModel.DefaultBindingProperty('speed_percent')] +[Int32] +$SpeedPercent, +# Set the gradient_percent of OBSShineShader +[Alias('gradient_percent')] +[ComponentModel.DefaultBindingProperty('gradient_percent')] +[Int32] +$GradientPercent, +# Set the delay_percent of OBSShineShader +[Alias('delay_percent')] +[ComponentModel.DefaultBindingProperty('delay_percent')] +[Int32] +$DelayPercent, +# Set the Apply_To_Alpha_Layer of OBSShineShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the ease of OBSShineShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the hide of OBSShineShader +[ComponentModel.DefaultBindingProperty('hide')] +[Management.Automation.SwitchParameter] +$Hide, +# Set the reverse of OBSShineShader +[ComponentModel.DefaultBindingProperty('reverse')] +[Management.Automation.SwitchParameter] +$Reverse, +# Set the One_Direction of OBSShineShader +[Alias('One_Direction')] +[ComponentModel.DefaultBindingProperty('One_Direction')] +[Management.Automation.SwitchParameter] +$OneDirection, +# Set the glitch of OBSShineShader +[ComponentModel.DefaultBindingProperty('glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the notes of OBSShineShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# Set the start_adjust of OBSShineShader +[Alias('start_adjust')] +[ComponentModel.DefaultBindingProperty('start_adjust')] +[Single] +$StartAdjust, +# Set the stop_adjust of OBSShineShader +[Alias('stop_adjust')] +[ComponentModel.DefaultBindingProperty('stop_adjust')] +[Single] +$StopAdjust, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'shine' +$ShaderNoun = 'OBSShineShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Shine Shader By Charles Fettinger (https://github.com/Oncorporation) 3/2019 +// use color to control shine amount, use transition wipes or make your own alpha texture +// slerp not currently used, for circular effects +//Converted to OpenGL by Exeldro February 14, 2022 +uniform texture2d l_tex; +uniform float4 shine_color ; +uniform int speed_percent< + string label = "speed percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 25; +uniform int gradient_percent< + string label = "gradient percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 20; +uniform int delay_percent< + string label = "delay percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform bool Apply_To_Alpha_Layer = false; +uniform bool ease = false; +uniform bool hide = false; +uniform bool reverse = false; +uniform bool One_Direction = true; +uniform bool glitch = false; +uniform string notes< + string widget_type = "info"; +> = "Use Luma Wipes ( data/obs-plugins/obs-transitions/luma_wipes ) ''ease'' makes the animation pause at the begin and end for a moment, ''hide'' will make the image disappear, ''glitch'' is random and amazing, ''reverse'' quickly allows you to test settings, ''One Direction'' only shows the shine as it travels in one direction, ''delay percentage'' adds a delay between shines (requires adjustment to speed: https://www.desmos.com/calculator/wkgbndweyt )"; + +uniform float start_adjust; +uniform float stop_adjust; + +float EaseInOutCircTimer(float t,float b,float c,float d){ + t /= d/2.0; + if (t < 1.0) return -c/2.0 * (sqrt(1.0 - t*t) - 1.0) + b; + t -= 2.0; + return c/2.0 * (sqrt(1.0 - t*t) + 1.0) + b; +} + +float Styler(float t,float b,float c,float d,bool ease) +{ + if (ease) return EaseInOutCircTimer(t,0.0,c,d); + return t; +} + +float4 convert_pmalpha(float4 c) +{ + float4 ret = c; + if (c.a >= 0.001) + ret.xyz /= c.a; + else + ret = float4(0.0, 0.0, 0.0, 0.0); + return ret; +} + +float4 slerp(float4 start, float4 end, float percent) +{ + // Dot product - the cosine of the angle between 2 vectors. + float dotf = start.r*end.r+start.g*end.g+start.b*end.b+start.a*end.a; + // Clamp it to be in the range of Acos() + // This may be unnecessary, but floating point + // precision can be a fickle mistress. + dotf = clamp(dotf, -1.0f, 1.0f); + // Acos(dot) returns the angle between start and end, + // And multiplying that by percent returns the angle between + // start and the final result. + float theta = acos(dotf)*percent; + float4 RelativeVec = normalize(end - start * dotf); + + // Orthonormal basis + // The final result. + return ((start*cos(theta)) + (RelativeVec*sin(theta))); +} + +float4 mainImage(VertData v_in) : TARGET +{ + // convert input for vector math + float4 rgba = convert_pmalpha(image.Sample(textureSampler, v_in.uv)); + float speed = speed_percent * 0.01; + float softness = max(abs(gradient_percent * 0.01), 0.01) * sign(gradient_percent); + float delay = clamp(delay_percent * 0.01, 0.0, 1.0); + + + // circular easing variable + float direction = abs(sin((elapsed_time - 0.001) * speed)); + float t = abs(sin(elapsed_time * speed)); + + // if time is greater than direction, we are going up! + direction = t - direction; + + // split into segments with frac or mod. + // delay is the gap between starting and ending of the sine wave, use speed to compensate + t = (frac(t) - delay) * (1 / (1 - delay)); + t = 1 + max(t,0.0); + + float s = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + if (glitch) t = clamp(t + ((rand_f *2) - 1), 0.0,2.0); + + //if Unidirectional disable on return + if (One_Direction && (direction < 0.0)) + { + s = 0; + } + else + { + s = Styler(t, 0, c, d, ease); + } + + // combine luma texture and user defined shine color + float luma = l_tex.Sample(textureSampler, v_in.uv).x; + + // - adjust for min and max + if ((luma >= (start_adjust)) && (luma <= (1 - stop_adjust))) + { + + if (reverse) + { + luma = 1.0 - luma; + } + + // user color with luma + float4 output_color = float4(shine_color.rgb, luma); + + float time = lerp(0.0f, 1.0f + abs(2*softness), s - 1.0); + + // use luma texture to add alpha and shine + + // if behind glow, consider trailing gradient shine then show underlying image + if (luma <= time - softness) + { + float alpha_behind = clamp(1.0 - (time - softness - luma ) / softness, 0.00, 1.0); + if (Apply_To_Alpha_Layer) + alpha_behind *= rgba.a; + return lerp(rgba, rgba + output_color, alpha_behind); + } + + // if in front of glow, consider if the underlying image is hidden + if (luma >= time) + { + // if hide, make the transition better + if (hide) + { + return float4(rgba.rgb, lerp(0.0, rgba.a, (time + softness) / (1 + abs(2*softness)))); + } + else + { + return rgba; + } + } + + // else show the glow area, with luminance + float alpha_ = (time - luma) / softness; + if (Apply_To_Alpha_Layer) + alpha_ *= rgba.a; + return lerp(rgba, rgba + output_color, alpha_); + } + else + { + return rgba; + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSimpleGradientShader { + +[Alias('Set-OBSSimpleGradientShader','Add-OBSSimpleGradientShader')] +param( +# Set the speed_percentage of OBSSimpleGradientShader +[Alias('speed_percentage')] +[ComponentModel.DefaultBindingProperty('speed_percentage')] +[Int32] +$SpeedPercentage, +# Set the alpha_percentage of OBSSimpleGradientShader +[Alias('alpha_percentage')] +[ComponentModel.DefaultBindingProperty('alpha_percentage')] +[Int32] +$AlphaPercentage, +# Set the Lens_Flair of OBSSimpleGradientShader +[Alias('Lens_Flair')] +[ComponentModel.DefaultBindingProperty('Lens_Flair')] +[Management.Automation.SwitchParameter] +$LensFlair, +# Set the Animate_Lens_Flair of OBSSimpleGradientShader +[Alias('Animate_Lens_Flair')] +[ComponentModel.DefaultBindingProperty('Animate_Lens_Flair')] +[Management.Automation.SwitchParameter] +$AnimateLensFlair, +# Set the Apply_To_Alpha_Layer of OBSSimpleGradientShader +[Alias('Apply_To_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Apply_To_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$ApplyToAlphaLayer, +# Set the Apply_To_Specific_Color of OBSSimpleGradientShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# Set the Color_To_Replace of OBSSimpleGradientShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the notes of OBSSimpleGradientShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'simple_gradient' +$ShaderNoun = 'OBSSimpleGradientShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simple Gradient shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +// https://github.com/Oncorporation/obs-shaderfilter + +//lots of room to play here +//Converted to OpenGL by Q-mii & Exeldro February 25, 2022 +uniform int speed_percentage< + string label = "speed percentage"; + string widget_type = "slider"; + int minimum = -500; + int maximum = 500; + int step = 1; +> = 240; // +uniform int alpha_percentage< + string label = "aplha percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 90; +uniform bool Lens_Flair = false; +uniform bool Animate_Lens_Flair = false; +uniform bool Apply_To_Alpha_Layer = false; +uniform bool Apply_To_Specific_Color; +uniform float4 Color_To_Replace; +uniform string notes< + string widget_type = "info"; +> = "This gradient is very basic from the top left corner. Red on horizontal, Green vertical, Blue Diagonal. Apply To Alpha Layer will add the gradient colors to the background. Lens Flair will brighten the scene from the bottom right. There is also a lot of unused code to play with in the shader file, delimted by /* ... */"; + +float4 mainImage(VertData v_in) : TARGET +{ + + float4 background_color = image.Sample(textureSampler, v_in.uv); + int no_colors = 4; + float3 colors[4]; + colors[0] = float3(1.0,0.0,0.0); + colors[1] = float3(0.0,1.0,0.0); + colors[2] = float3(0.0,0.0,1.0); + colors[3] = float3(1.0,1.0,1.0); + float alpha = float(alpha_percentage) * 0.01; + float speed = float(speed_percentage) * 0.01; + + float mx = max(uv_size.x , uv_size.y); + //float2 uv = v_in.uv / mx; + float3 rgb = background_color.rgb; + + // skip if (alpha is zero and only apply to alpha layer is true) + if (!(background_color.a <= 0.0 && Apply_To_Alpha_Layer == true)) + { + rgb = float3(v_in.uv.x, v_in.uv.y, 0.10 + 0.85 * sin(elapsed_time * speed)); + } + + //create lens flare like effect + if (Lens_Flair) + { + float2 lens_flair_coordinates = float2(0.95 ,0.95); + if (Animate_Lens_Flair) + lens_flair_coordinates *= float2(sin(elapsed_time * speed) ,cos(elapsed_time * speed)); + + float dist = distance(v_in.uv, ( lens_flair_coordinates * uv_scale + uv_offset)); + for (int i = 0; i < no_colors; ++i) { + rgb += lerp(rgb, colors[i], dist * 1.5) * 0.25; + } + } + + + //float3 col = colors[0]; +/* for (int i = 1; i < no_colors; ++i) { + float3 hole = float3( + sin(1.5 - distance(v_in.uv.x / mx, colors[i].x / mx) * 2.5 * speed), + sin(1.5 - distance(v_in.uv.y / mx, colors[i].y / mx) * 2.5 * speed), + colors[i].z); + rgb = lerp(rgb, hole, 0.1); +*/ +/* float3 hole = lerp(colors[i-1], colors[i], sin(elapsed_time * speed)); + col = lerp(col, hole, v_in.uv.x); +*/ + //} +// rgb = fflerp(rgb, col, 0.5); + + + + //try prepositioned colors with colors[] array timing + //creates an animated color spotlight +/* int color_index = int(sin(elapsed_time * speed) * no_colors); + float3 start_color = colors[color_index]; + float3 end_color; + if (color_index >= 0) + { + end_color = colors[color_index - 1]; + } + else + { + end_color = colors[no_colors - 1]; + } + + rgb = smoothstep(start_color, end_color, distance(v_in.uv , sin(elapsed_time * speed * no_colors) * (float2(1.0,1.0) * uv_scale + uv_offset))); +*/ + float4 rgba; + if (Apply_To_Alpha_Layer == false) + { + rgba = lerp(background_color,float4(rgb, 1.0),alpha); + } + else + { + rgba = lerp(background_color,background_color * float4(rgb,1.0), alpha); + } + if (Apply_To_Specific_Color) + { + float4 original_color = background_color; + background_color = (distance(background_color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : background_color; + rgba = lerp(original_color, background_color, clamp(alpha, 0, 1.0)); + } + return rgba; +} + + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSimplexNoiseShader { + +[Alias('Set-OBSSimplexNoiseShader','Add-OBSSimplexNoiseShader')] +param( +# Set the Snap_Percent of OBSSimplexNoiseShader +[Alias('Snap_Percent')] +[ComponentModel.DefaultBindingProperty('Snap_Percent')] +[Single] +$SnapPercent, +# Set the Speed_Percent of OBSSimplexNoiseShader +[Alias('Speed_Percent')] +[ComponentModel.DefaultBindingProperty('Speed_Percent')] +[Single] +$SpeedPercent, +# Set the Resolution of OBSSimplexNoiseShader +[ComponentModel.DefaultBindingProperty('Resolution')] +[Single] +$Resolution, +# Set the Fractal of OBSSimplexNoiseShader +[ComponentModel.DefaultBindingProperty('Fractal')] +[Management.Automation.SwitchParameter] +$Fractal, +# Set the Use_Alpha_Layer of OBSSimplexNoiseShader +[Alias('Use_Alpha_Layer')] +[ComponentModel.DefaultBindingProperty('Use_Alpha_Layer')] +[Management.Automation.SwitchParameter] +$UseAlphaLayer, +# Set the Fore_Color of OBSSimplexNoiseShader +[Alias('Fore_Color')] +[ComponentModel.DefaultBindingProperty('Fore_Color')] +[String] +$ForeColor, +# Set the Back_Color of OBSSimplexNoiseShader +[Alias('Back_Color')] +[ComponentModel.DefaultBindingProperty('Back_Color')] +[String] +$BackColor, +# Set the Alpha_Percent of OBSSimplexNoiseShader +[Alias('Alpha_Percent')] +[ComponentModel.DefaultBindingProperty('Alpha_Percent')] +[Single] +$AlphaPercent, +# Set the Notes of OBSSimplexNoiseShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'simplex_noise' +$ShaderNoun = 'OBSSimplexNoiseShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Simplex Noise shader by Charles Fettinger (https://github.com/Oncorporation) 5/2019 +// for use with obs-shaderfilter 1.0 +//based upon: https://www.shadertoy.com/view/XsX3zB + +#ifndef OPENGL +#define fract frac +#endif + +uniform float Snap_Percent< + string label = "Snap Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 7.5; +uniform float Speed_Percent< + string label = "Speed Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 2.5; +uniform float Resolution< + string label = "Resolution"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 16.0; +uniform bool Fractal = false; +uniform bool Use_Alpha_Layer = false; +uniform float4 Fore_Color = {0.95,0.95,0.95, 1.0}; +uniform float4 Back_Color = {0.75, 0.75, 0.75, 1.0}; +uniform float Alpha_Percent< + string label = "Alpha Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100.0; +uniform string Notes< + string widget_type = "info"; +> = "Alpha Percentage applies to the shader, Use_Alpha_Layer applies effect with the image alpha layer, Resolution is the amount of detail of noise created.Fractal is a different algorithm. Snap Percent affects how many updates per second. Default values: 7.5%, 2.5%, 16.0, 100%"; + +float dot(float3 a, float3 b){ + return a.r*b.r+a.g*b.g+a.b*b.b; +} + +float dot4(float4 a, float4 b){ + return a.r*b.r+a.g*b.g+a.b*b.b+a.a*b.a; +} +float snap(float x, float snap) +{ + return snap * round(x / max(0.01,snap)); +} + +float3 random3(float3 co) +{ + float j = 4096.0 * sin(dot(co, float3(17.0, 59.4, 15.0))); + float3 result; + result.z = fract(512.0 * j); + j *= .125; + result.x = fract(512.0 * j); + j *= .125; + result.y = fract(512.0 * j); + return result - 0.5; +} + +/* 3d simplex noise */ +float simplex3d(float3 p) { + /* 1. find current tetrahedron T and it''s four vertices */ + /* s, s+i1, s+i2, s+1.0 - absolute skewed (integer) coordinates of T vertices */ + /* x, x1, x2, x3 - unskewed coordinates of p relative to each of T vertices*/ + + /* skew constants for 3d simplex functions */ + float F3 = 0.3333333; + float G3 = 0.1666667; + + /* calculate s and x */ + float3 s = floor(p + dot(p, float3(F3,F3,F3))); + float3 x = p - s + dot(s, float3(G3,G3,G3)); + + /* calculate i1 and i2 */ + float3 e = step(float3(0.0,0.0,0.0), x - x.yzx); + float3 i1 = e * (1.0 - e.zxy); + float3 i2 = 1.0 - e.zxy * (1.0 - e); + + /* x1, x2, x3 */ + float3 x1 = x - i1 + G3; + float3 x2 = x - i2 + 2.0 * G3; + float3 x3 = x - 1.0 + 3.0 * G3; + + /* 2. find four surflets and store them in d */ + float4 w, d; + + /* calculate surflet weights */ + w.x = dot(x, x); + w.y = dot(x1, x1); + w.z = dot(x2, x2); + w.w = dot(x3, x3); + + /* w fades from 0.6 at the center of the surflet to 0.0 at the margin */ + w = max(0.61 - w, 0.0); + + /* calculate surflet components */ + d.x = dot(random3(s), x); + d.y = dot(random3(s + i1), x1); + d.z = dot(random3(s + i2), x2); + d.w = dot(random3(s + 1.0), x3); + + /* multiply d by w^4 */ + w *= w; + w *= w; + d *= w; + + /* 3. return the sum of the four surflets */ + return dot4(d, float4(52.0, 52.0, 52.0, 52.0)); +} + + +/* directional artifacts can be reduced by rotating each octave */ +float simplex3d_fractal(float3 m3) { + /* const matrices for 3d rotation */ +#ifdef OPENGL + float3x3 rot1 = float3x3( + float3(-0.37, 0.36, 0.85), + float3(-0.14, -0.93, 0.34), + float3(0.92, 0.01, 0.4 )); + float3x3 rot2 = float3x3( + float3(-0.55, -0.39, 0.74), + float3(0.33, -0.91, -0.24), + float3(0.77, 0.12, 0.63 )); + float3x3 rot3 = float3x3( + float3(-0.71, 0.52, -0.47), + float3(-0.08, -0.72, -0.68), + float3(-0.7, -0.45, 0.56 )); + + float3 m = float3(m3.x, m3.y, m3.z); +#else + float3x3 rot1 = { + -0.37, 0.36, 0.85, + -0.14, -0.93, 0.34, + 0.92, 0.01, 0.4 }; + float3x3 rot2 = { + -0.55, -0.39, 0.74, + 0.33, -0.91, -0.24, + 0.77, 0.12, 0.63 }; + float3x3 rot3 = { + -0.71, 0.52, -0.47, + -0.08, -0.72, -0.68, + -0.7, -0.45, 0.56 }; + + float3 m = {m3.x, m3.y, m3.z}; +#endif + + return 0.5333333* simplex3d(mul(m, rot1)) + + 0.2666667 * simplex3d(2.0 * mul(m, rot2)) + + 0.1333333 * simplex3d(4.0 * mul(m, rot3)) + + 0.0666667 * simplex3d(8.0 * m); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float time = snap(elapsed_time, Snap_Percent * .01); + float4 rgba = image.Sample(textureSampler, v_in.uv); + float2 p = v_in.uv.xy + float2( 0, -0.5); + float3 p3 = float3(p, time * (Speed_Percent * 0.01)); + + float pixel_alpha = 1.0; + // apply to mainImage rgba + if (Use_Alpha_Layer) { + p3 *= rgba.rgb; + pixel_alpha = rgba.a; + } + + float value; + + if (Fractal) { + value = simplex3d_fractal(p3 * (Resolution * 0.5) + (Resolution * 0.5)); + } + else { + value = simplex3d(p3 * Resolution); + } + + //soften color + value = 0.5 + (0.5 * value); + float intensity = dot(float3(value, value, value), float3(0.299, 0.587, 0.114)); + + //use intensity to apply foreground and background colors + float4 r = lerp(float4(float3(value, value, value), pixel_alpha), Fore_Color, saturate(intensity)); + r = lerp(Back_Color, r, saturate(intensity)); + r.a = pixel_alpha; + + return lerp(rgba, r, Alpha_Percent * 0.01); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSmartDenoiseShader { + +[Alias('Set-OBSSmartDenoiseShader','Add-OBSSmartDenoiseShader')] +param( +# Set the uSigma of OBSSmartDenoiseShader +[ComponentModel.DefaultBindingProperty('uSigma')] +[Single] +$USigma, +# Set the uKSigma of OBSSmartDenoiseShader +[ComponentModel.DefaultBindingProperty('uKSigma')] +[Single] +$UKSigma, +# Set the uThreshold of OBSSmartDenoiseShader +[ComponentModel.DefaultBindingProperty('uThreshold')] +[Single] +$UThreshold, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'smart_denoise' +$ShaderNoun = 'OBSSmartDenoiseShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Smart DeNoise By Michele Morrone (https://github.com/BrutPitt/glslSmartDeNoise) +// Converted to OBS version of HLSL by Euiko on February 10, 2025 + +#define INV_SQRT_OF_2PI 0.39894228040143267793994605993439 // 1.0/SQRT_OF_2PI +#define INV_PI 0.31830988618379067153776752674503 + +uniform float uSigma< + string label = "Sigma"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 3; // max based on the webgl sample, which is 3 + float step = 0.01; +> = 5.0; // default value based on shadertoy +uniform float uKSigma< + string label = "K-Sigma"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 24; // max based on the webgl sample, which is 24 + float step = 0.01; +> = 7.0; // the default value is based on the webgl sample +uniform float uThreshold< + string label = "Edge Threshold"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 2; // max based on the webgl sample, which is 2 + float step = 0.01; +> = 0.190; // the default value is based on the webgl sample + +// smartDeNoise - parameters +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// float2 uv - actual fragment coord +// float2 size - window size +// float sigma > 0 - sigma Standard Deviation +// float kSigma >= 0 - sigma coefficient +// kSigma * sigma --> radius of the circular kernel +// float threshold - edge sharpening threshold +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// NOTE: image''s texture2d data will be supplied by the OBS shaderfilter by default +float4 smartDeNoise(float2 uv, float2 size, float sigma, float kSigma, float threshold) +{ + float radius = round(kSigma * sigma); + float radQ = radius * radius; + + float invSigmaQx2 = 0.5 / (sigma * sigma); // 1.0 / (sigma^2 * 2.0) + float invSigmaQx2PI = INV_PI * invSigmaQx2; // 1/(2 * PI * sigma^2) + + float invThresholdSqx2 = 0.5 / (threshold * threshold); // 1.0 / (sigma^2 * 2.0) + float invThresholdSqrt2PI = INV_SQRT_OF_2PI / threshold; // 1.0 / (sqrt(2*PI) * sigma^2) + + float4 centrPx = image.Sample(textureSampler, uv); + + float zBuff = 0.0; + float4 aBuff = float4(0.0, 0.0, 0.0, 0.0); + + float2 d; + for (d.x = -radius; d.x <= radius; d.x += 1.0) + { + float pt = sqrt(radQ - (d.x * d.x)); // pt = yRadius: have circular trend + d.y = -pt; + for (; d.y <= pt; d.y += 1.0) + { + float blurFactor = exp((-dot(d, d)) * invSigmaQx2) * invSigmaQx2PI; + float4 walkPx = image.Sample(textureSampler, uv + (d / size)); + float4 dC = walkPx - centrPx; + float deltaFactor = (exp((-dot(dC.xyz, dC.xyz)) * invThresholdSqx2) * invThresholdSqrt2PI) * blurFactor; + zBuff += deltaFactor; + aBuff += (walkPx * deltaFactor); + } + } + return aBuff / float4(zBuff, zBuff, zBuff, zBuff); +} + +float4 mainImage(VertData v_in) : TARGET +{ + return smartDeNoise(v_in.uv, uv_size, uSigma, uKSigma, uThreshold); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSpecularShineShader { + +[Alias('Set-OBSSpecularShineShader','Add-OBSSpecularShineShader')] +param( +# Set the Hint of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('Hint')] +[String] +$Hint, +# Set the roughness of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('roughness')] +[Single] +$Roughness, +# Set the lightStrength of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('lightStrength')] +[Single] +$LightStrength, +# Set the LightPositionX of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('LightPositionX')] +[Single] +$LightPositionX, +# Set the LightPositionY of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('LightPositionY')] +[Single] +$LightPositionY, +# Set the flattenNormal of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('flattenNormal')] +[Single] +$FlattenNormal, +# Set the stretchNormalX of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('stretchNormalX')] +[Single] +$StretchNormalX, +# Set the stretchNormalY of OBSSpecularShineShader +[ComponentModel.DefaultBindingProperty('stretchNormalY')] +[Single] +$StretchNormalY, +# Set the Light_Color of OBSSpecularShineShader +[Alias('Light_Color')] +[ComponentModel.DefaultBindingProperty('Light_Color')] +[Single[]] +$LightColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'specular-shine' +$ShaderNoun = 'OBSSpecularShineShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Specular Shine shader by Andicraft / Andrea Jörgensen - https://github.com/Andicraft + +uniform string Hint< + string widget_type = "info"; +> = "Try using a black color source with the additive blend mode!"; + +uniform float roughness< + string label = "Roughness"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.25; + +uniform float lightStrength< + string label = "lightStrength"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.001; +> = 0.5; + +uniform float LightPositionX< + string label = "Light Position X"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float LightPositionY< + string label = "Light Position Y"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; + +uniform float flattenNormal< + string label = "Flatten Normal"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.01; +> = 0.1; + +uniform float stretchNormalX< + string label = "Stretch Normal X"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 4.0; + float step = 0.01; +> = 1; + +uniform float stretchNormalY< + string label = "Stretch Normal Y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 4.0; + float step = 0.01; +> = 1; + +uniform float3 Light_Color = {1,1,1}; + +float Square(float a) { return a * a; } + +float CookTorrance(float3 lightDir, float3 normal, float roughness) { + float3 h = normalize(lightDir + float3(0,0,1)); + float nh2 = Square(saturate(dot(normal, h))); + float lh2 = Square(saturate(dot(lightDir, h))); + float r2 = Square(roughness); + float d2 = Square(nh2 * (r2 - 1.0) + 1.00001); + float normalization = roughness * 4.0 + 2.0; + return r2 / (d2 * max(0.1, lh2) * normalization); +} + +#define PI 3.14159265 + +float4 mainImage(VertData v_in) : TARGET +{ + + float4 c0 = image.Sample(textureSampler, v_in.uv); + + float3 lightDir = normalize(float3(-LightPositionX*5, -LightPositionY*5, 1)); + + float2 normalUV = v_in.uv - 0.5; + normalUV.x /= stretchNormalX; + normalUV.y /= stretchNormalY; + normalUV += 0.5; + + float3 normal = normalize(float3(normalUV.x * 2 - 1,normalUV.y * 2 - 1,-1)); + normal.z *= -1; + + normal = lerp(normal, float3(0,0,-1), flattenNormal); + + float3 light = CookTorrance(lightDir, normal, roughness)*float3(1,1,1)*lightStrength*Light_Color; + + return float4(c0 + light,c0.a); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSpotlightShader { + +[Alias('Set-OBSSpotlightShader','Add-OBSSpotlightShader')] +param( +# Set the Speed_Percent of OBSSpotlightShader +[Alias('Speed_Percent')] +[ComponentModel.DefaultBindingProperty('Speed_Percent')] +[Single] +$SpeedPercent, +# Set the Focus_Percent of OBSSpotlightShader +[Alias('Focus_Percent')] +[ComponentModel.DefaultBindingProperty('Focus_Percent')] +[Single] +$FocusPercent, +# Set the Glitch of OBSSpotlightShader +[ComponentModel.DefaultBindingProperty('Glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the Spotlight_Color of OBSSpotlightShader +[Alias('Spotlight_Color')] +[ComponentModel.DefaultBindingProperty('Spotlight_Color')] +[String] +$SpotlightColor, +# Set the Horizontal_Offset of OBSSpotlightShader +[Alias('Horizontal_Offset')] +[ComponentModel.DefaultBindingProperty('Horizontal_Offset')] +[Single] +$HorizontalOffset, +# Set the Vertical_Offset of OBSSpotlightShader +[Alias('Vertical_Offset')] +[ComponentModel.DefaultBindingProperty('Vertical_Offset')] +[Single] +$VerticalOffset, +# Set the Notes of OBSSpotlightShader +[ComponentModel.DefaultBindingProperty('Notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'spotlight' +$ShaderNoun = 'OBSSpotlightShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Spotlight By Charles Fettinger (https://github.com/Oncorporation) 4/2019 +uniform float Speed_Percent< + string label = "Speed Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 100.0; +uniform float Focus_Percent< + string label = "Focus Percent"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 0.01; +> = 15.0; +uniform bool Glitch; +uniform float4 Spotlight_Color; +uniform float Horizontal_Offset< + string label = "Horizontal Offset"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = 0.0; +uniform float Vertical_Offset< + string label = "Vertical Offset"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.001; +> = -0.5; +uniform string Notes< + string widget_type = "info"; +> = "use negative Focus Percent to create a shade effect, speed zero is a stationary spotlight"; + +float4 mainImage(VertData v_in) : TARGET +{ + float speed = Speed_Percent * 0.01; + float focus = Focus_Percent; + if (Glitch) + { + speed *= ((rand_f * 2) - 1) * 0.01; + focus *= ((rand_f * 1.1) - 0.1); + } + + float PI = 3.1415926535897932384626433832795;//acos(-1); + float4 c0 = image.Sample( textureSampler, v_in.uv); + float3 lightsrc = float3(sin(elapsed_time * speed * PI * 0.667) *.5 + .5 + Horizontal_Offset, cos(elapsed_time * speed * PI) *.5 + .5 + Vertical_Offset, 1); + float3 light = normalize(lightsrc - float3( v_in.uv.x + (Horizontal_Offset * speed), v_in.uv.y + (Vertical_Offset * speed), 0)); + c0 *= pow(dot(light, float3(0, 0, 1)), focus) * Spotlight_Color; + + return c0; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSwirlShader { + +[Alias('Set-OBSSwirlShader','Add-OBSSwirlShader')] +param( +# Set the radius of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('radius')] +[Single] +$Radius, +# Set the angle of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('angle')] +[Single] +$Angle, +# Set the center_x of OBSSwirlShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSSwirlShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# Set the animate of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('animate')] +[Management.Automation.SwitchParameter] +$Animate, +# Set the inverse of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('inverse')] +[Management.Automation.SwitchParameter] +$Inverse, +# Set the notes of OBSSwirlShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Swirl' +$ShaderNoun = 'OBSSwirlShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Created by Radegast Stravinsky for obs-shaderfilter 9/2020 +uniform float radius< + string label = "Radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; // +uniform float angle< + string label = "Angle"; + string widget_type = "slider"; + float minimum = -360.0; + float maximum = 360.0; + float step = 0.01; +> = 270.0; // + +uniform float center_x< + string label = "Center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.25; // +uniform float center_y< + string label = "Center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.25; // + +uniform bool animate = false; +uniform bool inverse = false; + +uniform string notes< + string widget_type = "info"; +> = "Distorts the screen, twisting the image in a circular motion." + +float4 mainImage(VertData v_in) : TARGET +{ + + float2 center = float2(center_x, center_y); + VertData v_out; + v_out.pos = v_in.pos; + float2 hw = uv_size; + float ar = 1. * hw.y/hw.x; + + v_out.uv = 1. * v_in.uv - center; + + center.x /= ar; + v_out.uv.x /= ar; + + float dist = distance(v_out.uv, center); + if (dist < radius) + { + float percent = (radius-dist)/(radius); + percent = inverse == false ? percent : 1 - percent; + + float theta = percent * percent * radians(angle * (animate == true ? sin(elapsed_time) : 1.0)); + float s = sin(theta); + float c = cos(theta); + v_out.uv = float2(dot(v_out.uv-center, float2(c,-s)), dot(v_out.uv-center, float2(s,c))); + v_out.uv += (2 * center); + + v_out.uv.x *= ar; + + return image.Sample(textureSampler, v_out.uv); + } + else + { + return image.Sample(textureSampler, v_in.uv ); + } + +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSTetraShader { + +[Alias('Set-OBSTetraShader','Add-OBSTetraShader')] +param( +# Set the redR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('redR')] +[Single] +$RedR, +# Set the redG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('redG')] +[Single] +$RedG, +# Set the redB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('redB')] +[Single] +$RedB, +# Set the yelR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('yelR')] +[Single] +$YelR, +# Set the yelG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('yelG')] +[Single] +$YelG, +# Set the yelB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('yelB')] +[Single] +$YelB, +# Set the grnR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('grnR')] +[Single] +$GrnR, +# Set the grnG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('grnG')] +[Single] +$GrnG, +# Set the grnB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('grnB')] +[Single] +$GrnB, +# Set the cynR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('cynR')] +[Single] +$CynR, +# Set the cynG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('cynG')] +[Single] +$CynG, +# Set the cynB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('cynB')] +[Single] +$CynB, +# Set the bluR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('bluR')] +[Single] +$BluR, +# Set the bluG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('bluG')] +[Single] +$BluG, +# Set the bluB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('bluB')] +[Single] +$BluB, +# Set the magR of OBSTetraShader +[ComponentModel.DefaultBindingProperty('magR')] +[Single] +$MagR, +# Set the magG of OBSTetraShader +[ComponentModel.DefaultBindingProperty('magG')] +[Single] +$MagG, +# Set the magB of OBSTetraShader +[ComponentModel.DefaultBindingProperty('magB')] +[Single] +$MagB, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'tetra' +$ShaderNoun = 'OBSTetraShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Tetrahedral Interpolation Shader for OBS + +uniform float redR< + string label = "Red in Red"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float redG< + string label = "Green in Red"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float redB< + string label = "Blue in Red"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float yelR< + string label = "Red in Yellow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float yelG< + string label = "Green in Yellow"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float yelB< + string label = "Blue in Yellow"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float grnR< + string label = "Red in Green"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float grnG< + string label = "Green in Green"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float grnB< + string label = "Blue in Green"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float cynR< + string label = "Red in Cyan"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float cynG< + string label = "Green in Cyan"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float cynB< + string label = "Blue in Cyan"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float bluR< + string label = "Red in Blue"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float bluG< + string label = "Green in Blue"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float bluB< + string label = "Blue in Blue"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float magR< + string label = "Red in Magenta"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + +uniform float magG< + string label = "Green in Magenta"; + string widget_type = "slider"; + float minimum = -1.0; + float maximum = 1.0; + float step = 0.01; +> = 0.0; + +uniform float magB< + string label = "Blue in Magenta"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 2.0; + float step = 0.01; +> = 1.0; + + +float3 tetra(float3 RGBimage, float3 red, float3 yel, float3 grn, float3 cyn, float3 blu, float3 mag) { + float r = RGBimage.x; + float g = RGBimage.y; + float b = RGBimage.z; + + float3 wht = float3(1.0, 1.0, 1.0); + + if (r > g) { + if (g > b) { + // r > g > b + return r * red + g * (yel - red) + b * (wht - yel); + } else if (r > b) { + // r > b > g + return r * red + g * (wht - mag) + b * (mag - red); + } else { + // b > r > g + return r * (mag - blu) + g * (wht - mag) + b * blu; + } + } else { + if (b > g) { + // b > g > r + return r * (wht - cyn) + g * (cyn - blu) + b * blu; + } else if (b > r) { + // g > b > r + return r * (wht - cyn) + g * grn + b * (cyn - grn); + } else { + // g > r > b + return r * (yel - grn) + g * grn + b * (wht - yel); + } + } +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 inputColor = image.Sample(textureSampler, v_in.uv); + float alpha = inputColor.a; + + float3 red = float3(redR, redG, redB); + float3 yel = float3(yelR, yelG, yelB); + float3 grn = float3(grnR, grnG, grnB); + float3 cyn = float3(cynR, cynG, cynB); + float3 blu = float3(bluR, bluG, bluB); + float3 mag = float3(magR, magG, magB); + + float3 outputColor = tetra(inputColor.rgb, red, yel, grn, cyn, blu, mag); + return float4(outputColor, alpha); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSThermalShader { + +[Alias('Set-OBSThermalShader','Add-OBSThermalShader')] +param( +# Set the strength of OBSThermalShader +[ComponentModel.DefaultBindingProperty('strength')] +[Single] +$Strength, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'thermal' +$ShaderNoun = 'OBSThermalShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/mdKXzG + +uniform float strength< + string label = "Strength"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 200.0; + float step = 0.1; +> = 100.0; + +float greyScale(float3 c) { + return 0.29 * c.r + 0.60 * c.g + 0.11; +} + +float3 heatMap(float greyValue) { + float3 heat; + heat.r = smoothstep(0.5, 0.8, greyValue); + if(greyValue >= 0.8333) { + heat.r *= (1.1 - greyValue) * 5.0; + } + if(greyValue > 0.6) { + heat.g = smoothstep(1.0, 0.7, greyValue); + } else { + heat.g = smoothstep(0.0, 0.7, greyValue); + } + heat.b = smoothstep(1.0, 0.0, greyValue); + if(greyValue <= 0.3333) { + heat.b *= greyValue / 0.3; + } + return heat; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float4 c = image.Sample(textureSampler, v_in.uv); + float greyValue = greyScale(c.rgb); + float3 h = heatMap(greyValue*(strength/100.0)); + return float4(h.r, h.g, h.b, c.a); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSTvCrtSubpixelShader { + +[Alias('Set-OBSTvCrtSubpixelShader','Add-OBSTvCrtSubpixelShader')] +param( +# Set the channelWidth of OBSTvCrtSubpixelShader +[ComponentModel.DefaultBindingProperty('channelWidth')] +[Int32] +$ChannelWidth, +# Set the channelHeight of OBSTvCrtSubpixelShader +[ComponentModel.DefaultBindingProperty('channelHeight')] +[Int32] +$ChannelHeight, +# Set the hGap of OBSTvCrtSubpixelShader +[ComponentModel.DefaultBindingProperty('hGap')] +[Int32] +$HGap, +# Set the vGap of OBSTvCrtSubpixelShader +[ComponentModel.DefaultBindingProperty('vGap')] +[Int32] +$VGap, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'tv-crt-subpixel' +$ShaderNoun = 'OBSTvCrtSubpixelShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// https://www.shadertoy.com/view/dlBBz1 adopted for OBS by Exeldro + +// width of a single color channel in pixels +uniform int channelWidth< + string label = "Channel Width"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 1; + +// height of color channels in pixels +uniform int channelHeight< + string label = "Channel Height"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 3; + +// horizontal distance between two neighboring pixels +uniform int hGap< + string label = "Horizontal Gap"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 1; + +// vertical distance between two neighboring pixels +uniform int vGap< + string label = "Vertical Gap"; + string widget_type = "slider"; + int minimum = 1; + int maximum = 20; + int step = 1; +> = 1; + +float4 mainImage(VertData v_in) : TARGET +{ + float columns = float(channelWidth * 3 + hGap); + float pixelHeight = float(channelHeight + vGap); + + float2 fragCoord = v_in.uv * uv_size; + float2 sampleRes = float2(uv_size.x / columns, uv_size.y / pixelHeight); + float2 pixel = float2(floor(fragCoord.x / columns), floor(fragCoord.y / pixelHeight)); + float2 sampleUv = pixel / sampleRes; + + // color of sample point + float4 col = image.Sample(textureSampler, sampleUv); + + int column = int(fragCoord.x) % (channelWidth * 3 + hGap); + + // set color based on which channel this fragment corresponds to + if (column < channelWidth * 1) col = float4(col.r, 0.0, 0.0, col.a); + else if (column < channelWidth * 2) col = float4(0.0, col.g, 0.0, col.a); + else if (column < channelWidth * 3) col = float4(0.0, 0.0, col.b, col.a); + else col = float4(0.0, 0.0, 0.0, col.a); + + // offset every other column of pixels + int height = int(pixelHeight); + if (int(pixel.x) % 2 == 0) { + if (int(fragCoord.y) % height >= height - vGap) col = float4(0.0, 0.0, 0.0, col.a); + } else { + if (int(fragCoord.y) % height < vGap) col = float4(0.0, 0.0, 0.0, col.a); + } + + // Output to screen + return col; +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSTwistShader { + +[Alias('Set-OBSTwistShader','Add-OBSTwistShader')] +param( +# Set the center_x_percent of OBSTwistShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Int32] +$CenterXPercent, +# Set the center_y_percent of OBSTwistShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Int32] +$CenterYPercent, +# Set the power of OBSTwistShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# Set the rotation of OBSTwistShader +[ComponentModel.DefaultBindingProperty('rotation')] +[Single] +$Rotation, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'twist' +$ShaderNoun = 'OBSTwistShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int center_x_percent< + string label = "center x percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percentage"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float power< + string label = "power"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 0.3; +uniform float rotation< + string label = "rotation"; + string widget_type = "slider"; + float minimum = -100.0; + float maximum = 100.0; + float step = 0.001; +> = 2.0; + +#ifndef OPENGL +#define mat2 float2x2 +#endif + +mat2 rotate(float angle){ + return mat2(float2(cos(angle), -sin(angle)), float2(sin(angle), cos(angle))); +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float d = distance(center_pos,v_in.uv); + if(d > power){ + return image.Sample(textureSampler, v_in.uv); + } + float r = (cos(d*3.14159265359/power) +1)/2 * rotation; + float2 pos = v_in.uv - center_pos; + pos = mul(pos, rotate(r)); + pos += center_pos; + return image.Sample(textureSampler, pos); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSTwoPassDropShadowShader { + +[Alias('Set-OBSTwoPassDropShadowShader','Add-OBSTwoPassDropShadowShader')] +param( +# Set the ViewProj of OBSTwoPassDropShadowShader +[ComponentModel.DefaultBindingProperty('ViewProj')] +[Single[][]] +$ViewProj, +# Set the image of OBSTwoPassDropShadowShader +[ComponentModel.DefaultBindingProperty('image')] +[String] +$Image, +# Set the elapsed_time of OBSTwoPassDropShadowShader +[Alias('elapsed_time')] +[ComponentModel.DefaultBindingProperty('elapsed_time')] +[Single] +$ElapsedTime, +# Set the uv_offset of OBSTwoPassDropShadowShader +[Alias('uv_offset')] +[ComponentModel.DefaultBindingProperty('uv_offset')] +[Single[]] +$UvOffset, +# Set the uv_scale of OBSTwoPassDropShadowShader +[Alias('uv_scale')] +[ComponentModel.DefaultBindingProperty('uv_scale')] +[Single[]] +$UvScale, +# Set the uv_pixel_interval of OBSTwoPassDropShadowShader +[Alias('uv_pixel_interval')] +[ComponentModel.DefaultBindingProperty('uv_pixel_interval')] +[Single[]] +$UvPixelInterval, +# Set the rand_f of OBSTwoPassDropShadowShader +[Alias('rand_f')] +[ComponentModel.DefaultBindingProperty('rand_f')] +[Single] +$RandF, +# Set the uv_size of OBSTwoPassDropShadowShader +[Alias('uv_size')] +[ComponentModel.DefaultBindingProperty('uv_size')] +[Single[]] +$UvSize, +# Set the shadow_offset_x of OBSTwoPassDropShadowShader +[Alias('shadow_offset_x')] +[ComponentModel.DefaultBindingProperty('shadow_offset_x')] +[Int32] +$ShadowOffsetX, +# Set the shadow_offset_y of OBSTwoPassDropShadowShader +[Alias('shadow_offset_y')] +[ComponentModel.DefaultBindingProperty('shadow_offset_y')] +[Int32] +$ShadowOffsetY, +# Set the shadow_blur_size of OBSTwoPassDropShadowShader +[Alias('shadow_blur_size')] +[ComponentModel.DefaultBindingProperty('shadow_blur_size')] +[Int32] +$ShadowBlurSize, +# Set the shadow_color of OBSTwoPassDropShadowShader +[Alias('shadow_color')] +[ComponentModel.DefaultBindingProperty('shadow_color')] +[String] +$ShadowColor, +# Set the is_alpha_premultiplied of OBSTwoPassDropShadowShader +[Alias('is_alpha_premultiplied')] +[ComponentModel.DefaultBindingProperty('is_alpha_premultiplied')] +[Management.Automation.SwitchParameter] +$IsAlphaPremultiplied, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'two-pass-drop-shadow' +$ShaderNoun = 'OBSTwoPassDropShadowShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 22, 2022 +uniform float4x4 ViewProj; +uniform texture2d image; + +uniform float elapsed_time; +uniform float2 uv_offset; +uniform float2 uv_scale; +uniform float2 uv_pixel_interval; +uniform float rand_f; +uniform float2 uv_size; + +sampler_state textureSampler { + Filter = Linear; + AddressU = Border; + AddressV = Border; + BorderColor = 00000000; +}; + +struct VertData { + float4 pos : POSITION; + float2 uv : TEXCOORD0; +}; + +VertData mainTransform(VertData v_in) +{ + VertData vert_out; + vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj); + vert_out.uv = v_in.uv * uv_scale + uv_offset; + return vert_out; +} + +uniform int shadow_offset_x< + string label = "shadow offset x"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +>; +uniform int shadow_offset_y< + string label = "shadow offset y"; + string widget_type = "slider"; + int minimum = -1000; + int maximum = 1000; + int step = 1; +>; +uniform int shadow_blur_size< + string label = "shadow blur size"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +>; + +uniform float4 shadow_color; + +uniform bool is_alpha_premultiplied; + +float4 mainImage(VertData v_in) : TARGET +{ + int shadow_blur_samples = int(shadow_blur_size + 1);//pow(shadow_blur_size * 2 + 1, 2); + + float4 color = image.Sample(textureSampler, v_in.uv); + float2 shadow_uv = float2(v_in.uv.x - uv_pixel_interval.x * int(shadow_offset_x), + v_in.uv.y - uv_pixel_interval.y * int(shadow_offset_y)); + + float sampled_shadow_alpha = 0; + + for (int blur_x = -shadow_blur_size; blur_x <= shadow_blur_size; blur_x++) + { + float2 blur_uv = shadow_uv + float2(uv_pixel_interval.x * blur_x, 0); + sampled_shadow_alpha += image.Sample(textureSampler, blur_uv).a; + } + + sampled_shadow_alpha /= shadow_blur_samples; + + float4 final_shadow_color = float4(shadow_color.rgb, shadow_color.a * sampled_shadow_alpha); + + return final_shadow_color * (1-color.a) + color * (is_alpha_premultiplied?1.0:color.a); +} + +float4 mainImage_2_end(VertData v_in) : TARGET +{ + int shadow_blur_samples = shadow_blur_size + 1;//pow(shadow_blur_size * 2 + 1, 2); + + float4 color = image.Sample(textureSampler, v_in.uv); + float2 shadow_uv = float2(v_in.uv.x - uv_pixel_interval.x * shadow_offset_x, + v_in.uv.y - uv_pixel_interval.y * shadow_offset_y); + + float sampled_shadow_alpha = 0; + + for (int blur_y = -shadow_blur_size; blur_y <= shadow_blur_size; blur_y++) + { + float2 blur_uv = shadow_uv + float2(0, uv_pixel_interval.y * blur_y); + sampled_shadow_alpha += image.Sample(textureSampler, blur_uv).a; + } + + sampled_shadow_alpha /= shadow_blur_samples; + + float4 final_shadow_color = float4(shadow_color.rgb, shadow_color.a * sampled_shadow_alpha); + + return final_shadow_color * (1-color.a) + color * (is_alpha_premultiplied?1.0:color.a); +} + +technique Draw +{ + pass p0 + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage(v_in); + } + + pass p1 + { + vertex_shader = mainTransform(v_in); + pixel_shader = mainImage_2_end(v_in); + } +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSVCRShader { + +[Alias('Set-OBSVCRShader','Add-OBSVCRShader')] +param( +# Set the vertical_shift of OBSVCRShader +[Alias('vertical_shift')] +[ComponentModel.DefaultBindingProperty('vertical_shift')] +[Single] +$VerticalShift, +# Set the distort of OBSVCRShader +[ComponentModel.DefaultBindingProperty('distort')] +[Single] +$Distort, +# Set the vignet of OBSVCRShader +[ComponentModel.DefaultBindingProperty('vignet')] +[Single] +$Vignet, +# Set the stripe of OBSVCRShader +[ComponentModel.DefaultBindingProperty('stripe')] +[Single] +$Stripe, +# Set the vertical_factor of OBSVCRShader +[Alias('vertical_factor')] +[ComponentModel.DefaultBindingProperty('vertical_factor')] +[Single] +$VerticalFactor, +# Set the vertical_height of OBSVCRShader +[Alias('vertical_height')] +[ComponentModel.DefaultBindingProperty('vertical_height')] +[Single] +$VerticalHeight, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'VCR' +$ShaderNoun = 'OBSVCRShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/ldjGzV +//Converted to OpenGL by Exeldro February 19, 2022 +uniform float vertical_shift< + string label = "vertical shift"; + string widget_type = "slider"; + float minimum = -5.0; + float maximum = 5.0; + float step = 0.001; +> = 0.4; +uniform float distort< + string label = "distort"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 5.0; + float step = 0.001; +> = 1.2; +uniform float vignet< + string label = "vignet"; + string widget_type = "slider"; + float minimum = -5.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; +uniform float stripe< + string label = "stripe"; + string widget_type = "slider"; + float minimum = -5.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; +uniform float vertical_factor< + string label = "vertical factor"; + string widget_type = "slider"; + float minimum = -5.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; +uniform float vertical_height< + string label = "vertical height"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1000.0; + float step = 0.1; +> = 30.0; + +float onOff(float a, float b, float c) +{ + return step(c, sin(elapsed_time + a*cos(elapsed_time*b))); +} + +float ramp(float y, float start, float end) +{ + float inside = step(start,y) - step(end,y); + float fact = (y-start)/(end-start)*inside; + return (1.-fact) * inside; + +} + +float modu(float x, float y) +{ + return (x / y) - floor(x / y); +} + +float stripes(float2 uv) +{ + return ramp(modu(uv.y*4. + elapsed_time/2.+sin(elapsed_time + sin(elapsed_time*0.63)),1.),0.5,0.6)*stripe; +} + +float4 getVideo(float2 uv) +{ + float2 look = uv; + float window = 1./(1.+20.*(look.y-modu(elapsed_time/4.,1.))*(look.y-modu(elapsed_time/4.,1.))); + look.x = look.x + sin(look.y*10. + elapsed_time)/50.*onOff(4.,4.,.3)*(1.+cos(elapsed_time*80.))*window; + float vShift = vertical_shift*onOff(2.,3.,.9)*(sin(elapsed_time)*sin(elapsed_time*20.) + + (0.5 + 0.1*sin(elapsed_time*200.)*cos(elapsed_time))); + look.y = modu((look.y + vShift) , 1.); + return image.Sample(textureSampler, look); +} + +float2 screenDistort(float2 uv) +{ + uv -= float2(.5,.5); + uv = uv*distort*(1./1.2+2.*uv.x*uv.x*uv.y*uv.y); + uv += float2(.5,.5); + return uv; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + uv = screenDistort(uv); + float4 video = getVideo(uv); + float vigAmt = 3.+.3*sin(elapsed_time + 5.*cos(elapsed_time*5.)); + float vignette = ((1.-vigAmt*(uv.y-.5)*(uv.y-.5))*(1.-vigAmt*(uv.x-.5)*(uv.x-.5))-1.)*vignet+1.; + video += stripes(uv); + video *= vignette; + video *= (((12.+modu((uv.y*vertical_height+elapsed_time),1.))/13.)-1.)*vertical_factor+1.; + return float4(video.r, video.g, video.b ,1.0); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSVHSShader { + +[Alias('Set-OBSVHSShader','Add-OBSVHSShader')] +param( +# Set the range of OBSVHSShader +[ComponentModel.DefaultBindingProperty('range')] +[Single] +$Range, +# Set the offsetIntensity of OBSVHSShader +[ComponentModel.DefaultBindingProperty('offsetIntensity')] +[Single] +$OffsetIntensity, +# Set the noiseQuality of OBSVHSShader +[ComponentModel.DefaultBindingProperty('noiseQuality')] +[Single] +$NoiseQuality, +# Set the noiseIntensity of OBSVHSShader +[ComponentModel.DefaultBindingProperty('noiseIntensity')] +[Single] +$NoiseIntensity, +# Set the colorOffsetIntensity of OBSVHSShader +[ComponentModel.DefaultBindingProperty('colorOffsetIntensity')] +[Single] +$ColorOffsetIntensity, +# Set the Alpha_Percentage of OBSVHSShader +[Alias('Alpha_Percentage')] +[ComponentModel.DefaultBindingProperty('Alpha_Percentage')] +[Single] +$AlphaPercentage, +# Set the Apply_To_Image of OBSVHSShader +[Alias('Apply_To_Image')] +[ComponentModel.DefaultBindingProperty('Apply_To_Image')] +[Management.Automation.SwitchParameter] +$ApplyToImage, +# Set the Replace_Image_Color of OBSVHSShader +[Alias('Replace_Image_Color')] +[ComponentModel.DefaultBindingProperty('Replace_Image_Color')] +[Management.Automation.SwitchParameter] +$ReplaceImageColor, +# Set the Color_To_Replace of OBSVHSShader +[Alias('Color_To_Replace')] +[ComponentModel.DefaultBindingProperty('Color_To_Replace')] +[String] +$ColorToReplace, +# Set the Apply_To_Specific_Color of OBSVHSShader +[Alias('Apply_To_Specific_Color')] +[ComponentModel.DefaultBindingProperty('Apply_To_Specific_Color')] +[Management.Automation.SwitchParameter] +$ApplyToSpecificColor, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'VHS' +$ShaderNoun = 'OBSVHSShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//based on https://www.shadertoy.com/view/Ms3XWH converted by Exeldro v 1.0 +//updated by Charles ''Surn'' Fettinger for obs-shaderfilter 9/2020 +//Converted to OpenGL by Exeldro February 19, 2022 +//Use improved input fields by Exeldro April 15, 2023 +uniform float range< + string label = "Wave size (0.05)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.20; + float step = 0.01; +> = 0.05; +uniform float offsetIntensity< + string label = "Offset intensity (0.02)"; + string widget_type = "slider"; + float minimum = 0.01; + float maximum = 0.20; + float step = 0.01; +> = 0.02; +uniform float noiseQuality< + string label = "Noise number of lines (250)"; + string widget_type = "slider"; + float minimum = 1.0; + float maximum = 1000.0; + float step = 10.0; +> = 250.0; +uniform float noiseIntensity< + string label = "Noise intensity (0.88)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.01; +> = 0.88; +uniform float colorOffsetIntensity< + string label = "Color offset intensity (1.3)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 10.0; + float step = 0.1; +> = 1.3; +uniform float Alpha_Percentage< + string label = "Aplha percentage (100.0)"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 100.0; + float step = 1.0; +> = 100.0; +uniform bool Apply_To_Image; +uniform bool Replace_Image_Color; +uniform float4 Color_To_Replace; +uniform bool Apply_To_Specific_Color; + +float dot2(float2 a,float2 b){ + return a.x*b.x+a.y*b.y; +} + +float rand(float2 co) +{ + return frac(sin(dot2(co.xy ,float2(12.9898,78.233))) * 43758.5453); +} + +float verticalBar(float pos, float uvY, float offset) +{ + float edge0 = (pos - range); + float edge1 = (pos + range); + + float x = smoothstep(edge0, pos, uvY) * offset; + x -= smoothstep(pos, edge1, uvY) * offset; + return x; +} + +float modu(float x, float y) +{ + return (x / y) - floor(x / y); +} + +float dot4(float4 a,float4 b){ + return a.r*b.r+a.g*b.g+a.b*b.b+a.a*b.a; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float2 uv = v_in.uv; + for (float i = 0.0; i < 0.71; i += 0.1313) + { + float d = modu(elapsed_time * i, 1.7); + float o = sin(1.0 - tan(elapsed_time * 0.24 * i)); + o *= offsetIntensity; + uv.x += verticalBar(d, uv.y, o); + } + float uvY = uv.y; + uvY *= noiseQuality; + uvY = float(int(uvY)) * (1.0 / noiseQuality); + float noise = rand(float2(elapsed_time * 0.00001, uvY)); + uv.x += noise * noiseIntensity / 100.0; + + float2 offsetR = float2(0.006 * sin(elapsed_time), 0.0) * colorOffsetIntensity; + float2 offsetG = float2(0.0073 * (cos(elapsed_time * 0.97)), 0.0) * colorOffsetIntensity; + + float4 rgba = image.Sample(textureSampler, uv); + float r = image.Sample(textureSampler, uv + offsetR).r; + float g = image.Sample(textureSampler, uv + offsetG).g; + float b = rgba.b; + + rgba = float4(r, g, b, rgba.a); + + float4 color; + float4 original_color; + if (Apply_To_Image) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + float luma = dot4(color, float4(0.30, 0.59, 0.11, 1.0)); + if (Replace_Image_Color) + color = float4(luma,luma,luma,luma); + rgba = lerp(original_color, rgba * color, clamp(Alpha_Percentage * .01, 0, 1.0)); + + } + if (Apply_To_Specific_Color) + { + color = image.Sample(textureSampler, v_in.uv); + original_color = color; + color = (distance(color.rgb, Color_To_Replace.rgb) <= 0.075) ? rgba : color; + rgba = lerp(original_color, color, clamp(Alpha_Percentage * .01, 0, 1.0)); + } + + return rgba; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSVignettingShader { + +[Alias('Set-OBSVignettingShader','Add-OBSVignettingShader')] +param( +# Set the innerRadius of OBSVignettingShader +[ComponentModel.DefaultBindingProperty('innerRadius')] +[Single] +$InnerRadius, +# Set the outerRadius of OBSVignettingShader +[ComponentModel.DefaultBindingProperty('outerRadius')] +[Single] +$OuterRadius, +# Set the opacity of OBSVignettingShader +[ComponentModel.DefaultBindingProperty('opacity')] +[Single] +$Opacity, +# Set the notes of OBSVignettingShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'vignetting' +$ShaderNoun = 'OBSVignettingShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Converted to OpenGL by Q-mii & Exeldro February 21, 2022 +uniform float innerRadius< + string label = "inner radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 0.9; +uniform float outerRadius< + string label = "outer radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 1.5; +uniform float opacity< + string label = "opacity"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.8; +uniform string notes< + string widget_type = "info"; +> = "inner radius will always be shown, outer radius is the falloff"; + +float4 mainImage(VertData v_in) : TARGET +{ + float PI = 3.1415926535897932384626433832795;//acos(-1); + + float4 c0 = image.Sample(textureSampler, v_in.uv); + float verticalDim = 0.5 + sin (v_in.uv.y * PI) * 0.9 ; + + float xTrans = (v_in.uv.x * 2) - 1; + float yTrans = 1 - (v_in.uv.y * 2); + + float radius = sqrt(pow(xTrans, 2) + pow(yTrans, 2)); + + float subtraction = max(0, radius - innerRadius) / max((outerRadius - innerRadius), 0.01); + float factor = 1 - subtraction; + + float4 vignetColor = c0 * factor; + vignetColor *= verticalDim; + + vignetColor *= opacity; + c0 *= 1-opacity; + + float4 output_color = c0 + vignetColor; + + return float4(output_color); +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSVoronoiPixelationShader { + +[Alias('Set-OBSVoronoiPixelationShader','Add-OBSVoronoiPixelationShader')] +param( +# Set the pixH of OBSVoronoiPixelationShader +[ComponentModel.DefaultBindingProperty('pixH')] +[Single] +$PixH, +# Set the alternative of OBSVoronoiPixelationShader +[ComponentModel.DefaultBindingProperty('alternative')] +[Management.Automation.SwitchParameter] +$Alternative, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'voronoi-pixelation' +$ShaderNoun = 'OBSVoronoiPixelationShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// https://www.shadertoy.com/view/sd3yzn adopted by Exeldro + +uniform float pixH< + string label = "Size"; + string widget_type = "slider"; + float minimum = 4.0; + float maximum = 500.0; + float step = 0.01; +> = 100.0; +uniform bool alternative; + +float2 fract2(float2 v){ + return float2(v.x - floor(v.x), v.y - floor(v.y)); +} + +float2 random2( float2 p ) { + return fract2(sin(float2(dot(p,float2(127.1,311.7)),dot(p,float2(269.5,183.3))))*43758.5453); +} +float2 randomSpin(float2 p, float f){ + return 1.0 * float2( + cos( f * elapsed_time * 3.14159 * sign(random2(p).y - 0.5) + random2(p).y * 3.14159), + sin( f * elapsed_time * 3.14159 * sign(random2(p).x - 0.5) + random2(p).x * 3.14159)); +} +float4 VoronoiPixelation(float2 uv, float pixH ){ + float2 pixInt = fract2(uv * pixH); + float2 pixExt = floor(uv * pixH); + float m_dist = 10.0; + float2 relClos = float2(0.0, 0.0); + float2 relRot = 0.5 * float2(cos(elapsed_time), sin(elapsed_time)); + + + for (int y= -3; y <= 3; y++) { + for (int x= -3; x <= 3; x++) { + float2 neighbor = float2(float(x),float(y)); + + float2 point1 = random2(pixExt + neighbor); + float2 relRot = randomSpin(pixExt + neighbor, 0.5); + float2 diff = neighbor + relRot + point1 - pixInt; + float dist = length(diff); + if(dist < m_dist){ + m_dist = dist; + relClos = neighbor; + } + } + } + float2 nPoint = pixExt + relClos + randomSpin(pixExt + relClos, 0.5) + random2(pixExt + relClos); + nPoint = nPoint / pixH; + nPoint.x = nPoint.x * uv_scale.x ; + + return image.Sample(textureSampler, nPoint); +} +float4 VoronoiPixelation2(float2 uv, float pixH ){ + float2 pixInt = fract2(uv * pixH); + float2 pixExt = floor(uv * pixH); + float m_dist = 10.0; + float2 relClos = float2(0.0, 0.0); + float2 relRot = 0.5 * float2(cos(elapsed_time), sin(elapsed_time)); + + + for (int y= -3; y <= 3; y++) { + for (int x= -3; x <= 3; x++) { + float2 neighbor = float2(float(x),float(y)); + + float2 point2 = random2(pixExt + neighbor); + float2 relRot = randomSpin(pixExt + neighbor, 0.5); + float2 diff = neighbor + relRot + point2 - pixInt; + float dist = length(diff); + if(dist < m_dist){ + m_dist = dist; + relClos = neighbor; + } + } + } + float2 nPoint = pixExt + relClos + random2(pixExt + relClos); + nPoint = nPoint / pixH; + nPoint.x = nPoint.x * uv_scale.x; + + return image.Sample(textureSampler, nPoint); +} + + +float4 mainImage(VertData v_in) : TARGET +{ + if (alternative) { + return VoronoiPixelation2(v_in.uv, pixH); + } else { + return VoronoiPixelation(v_in.uv, pixH); + } +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSZigZagShader { + +[Alias('Set-OBSZigZagShader','Add-OBSZigZagShader')] +param( +# Set the radius of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('radius')] +[Single] +$Radius, +# Set the angle of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('angle')] +[Single] +$Angle, +# Set the period of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('period')] +[Single] +$Period, +# Set the amplitude of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('amplitude')] +[Single] +$Amplitude, +# Set the center_x of OBSZigZagShader +[Alias('center_x')] +[ComponentModel.DefaultBindingProperty('center_x')] +[Single] +$CenterX, +# Set the center_y of OBSZigZagShader +[Alias('center_y')] +[ComponentModel.DefaultBindingProperty('center_y')] +[Single] +$CenterY, +# Set the phase of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('phase')] +[Single] +$Phase, +# Set the animate of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('animate')] +[Int32] +$Animate, +# Set the notes of OBSZigZagShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'ZigZag' +$ShaderNoun = 'OBSZigZagShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +//Created by Radegast Stravinsky for obs-shaderfilter 9/2020 +uniform float radius< + string label = "radius"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 0.0; +uniform float angle< + string label = "angle"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 360.0; + float step = 0.1; +> = 180.0; +uniform float period< + string label = "period"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 0.5; +uniform float amplitude< + string label = "amplitude"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; + +uniform float center_x< + string label = "center x"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.25; +uniform float center_y< + string label = "center y"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 0.5; + float step = 0.001; +> = 0.25; + +uniform float phase< + string label = "phase"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 5.0; + float step = 0.001; +> = 1.0; +uniform int animate< + string label = "animate"; + string widget_type = "select"; + int option_0_value = 0; + string option_0_label = "No"; + int option_1_value = 1; + string option_1_label = "Amplitude"; + int option_2_value = 2; + string option_2_label = "Time"; +> = 0; + + +uniform string notes = "Distorts the screen, creating a rippling effect that moves clockwise and anticlockwise." + + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center = float2(center_x, center_y); + VertData v_out; + v_out.pos = v_in.pos; + float2 hw = uv_size; + float ar = 1. * hw.y/hw.x; + + v_out.uv = 1. * v_in.uv - center; + + center.x /= ar; + v_out.uv.x /= ar; + + float dist = distance(v_out.uv, center); + if (dist < radius) + { + float percent = (radius-dist)/radius; + float theta = percent * percent * + ( + animate == 1 ? + amplitude * sin(elapsed_time) : + amplitude + ) + * sin(percent * percent / period * radians(angle) + (phase + + ( + animate == 2 ? + elapsed_time : + 0 + ))); + + float s = sin(theta); + float c = cos(theta); + v_out.uv = float2(dot(v_out.uv-center, float2(c,-s)), dot(v_out.uv-center, float2(s,c))); + v_out.uv += (2 * center); + + v_out.uv.x *= ar; + + return image.Sample(textureSampler, v_out.uv); + } + else + { + return image.Sample(textureSampler, v_in.uv); + } + +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSZoomBlurShader { + +[Alias('Set-OBSZoomBlurShader','Add-OBSZoomBlurShader')] +param( +# Set the samples of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('samples')] +[Int32] +$Samples, +# Set the magnitude of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('magnitude')] +[Single] +$Magnitude, +# Set the speed_percent of OBSZoomBlurShader +[Alias('speed_percent')] +[ComponentModel.DefaultBindingProperty('speed_percent')] +[Int32] +$SpeedPercent, +# Set the ease of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('ease')] +[Management.Automation.SwitchParameter] +$Ease, +# Set the glitch of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('glitch')] +[Management.Automation.SwitchParameter] +$Glitch, +# Set the notes of OBSZoomBlurShader +[ComponentModel.DefaultBindingProperty('notes')] +[String] +$Notes, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'zoom_blur' +$ShaderNoun = 'OBSZoomBlurShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// zoom blur shader by Charles Fettinger for obs-shaderfilter plugin 3/2019 +// https://github.com/Oncorporation/obs-shaderfilter +// https://github.com/dinfinity/mpc-pixel-shaders/blob/master/PS_Zoom%20Blur.hlsl +//for Media Player Classic HC or BE +//Converted to OpenGL by Q-mii & Exeldro February 18, 2022 +uniform int samples < + string label = "Samples"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 32; +uniform float magnitude< + string label = "Magnitude"; + string widget_type = "slider"; + float minimum = 0.0; + float maximum = 1.0; + float step = 0.001; +> = 0.5; +uniform int speed_percent < + string label = "Speed percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 0; +uniform bool ease; +uniform bool glitch; +uniform string notes< + string widget_type = "info"; +> = "Speed Percent above zero will animate the zoom. Keep samples low to save power"; + +float EaseInOutCircTimer(float t,float b,float c,float d){ + t /= d/2; + if (t < 1) return -c/2 * (sqrt(1 - t*t) - 1) + b; + t -= 2; + return c/2 * (sqrt(1 - t*t) + 1) + b; +} + +float Styler(float t,float b,float c,float d,bool ease) +{ + if (ease) return EaseInOutCircTimer(t,0,c,d); + return t; +} + +float4 mainImage(VertData v_in) : TARGET +{ + float speed = speed_percent * 0.01; + + // circular easing variable + float t = 1.0 + sin(elapsed_time * speed); + float b = 0.0; //start value + float c = 2.0; //change value + float d = 2.0; //duration + + if (glitch) t = clamp(t + ((rand_f *2) - 1), 0.0,2.0); + + b = Styler(t, 0, c, d, ease); + float sample_speed = max(samples * b, 1.0); + + float PI = 3.1415926535897932384626433832795;//acos(-1); + float4 c0 = image.Sample(textureSampler, v_in.uv); + + float xTrans = (v_in.uv.x*2)-1; + float yTrans = 1-(v_in.uv.y*2); + + float angle = atan(yTrans/xTrans) + PI; + if (sign(xTrans) == 1) { + angle+= PI; + } + float radius = sqrt(pow(xTrans,2) + pow(yTrans,2)); + + float2 currentCoord; + float4 accumulatedColor = float4(0,0,0,0); + + float4 currentColor = image.Sample(textureSampler, currentCoord); + accumulatedColor = currentColor; + + accumulatedColor = c0/sample_speed; + for(int i = 1; i< sample_speed; i++) { + float currentRadius ; + // Distance to center dependent + currentRadius = max(0,radius - (radius/1000 * i * magnitude * b)); + + // Continuous; + // currentRadius = max(0,radius - (0.0004 * i)); + + currentCoord.x = (currentRadius * cos(angle)+1.0)/2.0; + currentCoord.y = -1* ((currentRadius * sin(angle)-1.0)/2.0); + + float4 currentColor = image.Sample(textureSampler, currentCoord); + accumulatedColor += currentColor/sample_speed; + + } + + return accumulatedColor; +} + +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSZoomShader { + +[Alias('Set-OBSZoomShader','Add-OBSZoomShader')] +param( +# Set the center_x_percent of OBSZoomShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Int32] +$CenterXPercent, +# Set the center_y_percent of OBSZoomShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Int32] +$CenterYPercent, +# Set the power of OBSZoomShader +[ComponentModel.DefaultBindingProperty('power')] +[Single] +$Power, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'zoom' +$ShaderNoun = 'OBSZoomShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +uniform int center_x_percent< + string label = "center x percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float power< + string label = "power"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 20.0; + float step = 0.001; +> = 1.75; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float2 uv = v_in.uv; + uv.x = (v_in.uv.x - center_pos.x) * power + center_pos.x; + uv.y = (v_in.uv.y - center_pos.y) * power + center_pos.y; + return image.Sample(textureSampler, uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSZoomXYShader { + +[Alias('Set-OBSZoomXYShader','Add-OBSZoomXYShader')] +param( +# Set the center_x_percent of OBSZoomXYShader +[Alias('center_x_percent')] +[ComponentModel.DefaultBindingProperty('center_x_percent')] +[Int32] +$CenterXPercent, +# Set the center_y_percent of OBSZoomXYShader +[Alias('center_y_percent')] +[ComponentModel.DefaultBindingProperty('center_y_percent')] +[Int32] +$CenterYPercent, +# Set the x_power of OBSZoomXYShader +[Alias('x_power')] +[ComponentModel.DefaultBindingProperty('x_power')] +[Single] +$XPower, +# Set the y_power of OBSZoomXYShader +[Alias('y_power')] +[ComponentModel.DefaultBindingProperty('y_power')] +[Single] +$YPower, +# The name of the source. This must be provided when adding an item for the first time +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('SceneItemName')] +[String] +$SourceName, +# The name of the filter. If this is not provided, this will default to the shader name. +[Parameter(ValueFromPipelineByPropertyName)] +[String] +$FilterName, +# The inline value of the shader. This will normally be provided as a default parameter, based off of the name. +[Alias('ShaderContent')] +[String] +$ShaderText, +# If set, will force the recreation of a shader that already exists +[Management.Automation.SwitchParameter] +$Force, +# If set, will pass thru the commands that would be sent to OBS (these can be sent at any time with Send-OBS) +[Management.Automation.SwitchParameter] +$PassThru, +# If set, will not wait for a response from OBS (this will be faster, but will not return anything) +[Management.Automation.SwitchParameter] +$NoResponse, +# If set, use the shader elapsed time, instead of the OBS system elapsed time +[ComponentModel.DefaultBindingProperty('use_shader_elapsed_time')] +[Management.Automation.SwitchParameter] +$UseShaderTime +) + + +process { +$shaderName = 'Zoom_XY' +$ShaderNoun = 'OBSZoomXYShader' +if (-not $psBoundParameters['ShaderText']) { + $psBoundParameters['ShaderText'] = $ShaderText = ' +// Zoom XY Shader + +// A simple twist on the Zoom Shader in https://github.com/exeldro/obs-shaderfilter/ + +// The allow for an independent Horizontal and Vertical Zoom. + +uniform int center_x_percent< + string label = "center x percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform int center_y_percent< + string label = "center y percent"; + string widget_type = "slider"; + int minimum = 0; + int maximum = 100; + int step = 1; +> = 50; +uniform float x_power< + string label = "x power"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 20.0; + float step = 0.001; +> = 1; + +uniform float y_power< + string label = "y power"; + string widget_type = "slider"; + float minimum = 0; + float maximum = 20.0; + float step = 0.001; +> = 1; + +float4 mainImage(VertData v_in) : TARGET +{ + float2 center_pos = float2(center_x_percent * .01, center_y_percent * .01); + float2 uv = v_in.uv; + uv.x = (v_in.uv.x - center_pos.x) * x_power + center_pos.x; + uv.y = (v_in.uv.y - center_pos.y) * y_power + center_pos.y; + return image.Sample(textureSampler, uv); +} +' +} +$MyVerb, $myNoun = $MyInvocation.InvocationName -split '-',2 +if (-not $myNoun) { + $myNoun = $myVerb + $myVerb = 'Get' +} +switch -regex ($myVerb) { + Get { + $FilterNamePattern = "(?>$( + if ($FilterName) { + [Regex]::Escape($FilterName) + } + else { + [Regex]::Escape($ShaderNoun -replace '^OBS' -replace 'Shader$'),[Regex]::Escape($shaderName) -join '|' + } + ))" + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } else { + $obs.Inputs | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern + } + } + 'Remove' { + if ($SourceName) { + Get-OBSInput | + Where-Object InputName -eq $SourceName | + Get-OBSSourceFilterList | + Where-Object FilterName -Match $FilterNamePattern | + Remove-OBSSourceFilter + } + } + '(?>Add|Set)' { + $ShaderSettings = [Ordered]@{} + :nextParameter foreach ($parameterMetadata in $MyInvocation.MyCommand.Parameters[@($psBoundParameters.Keys)]) { + foreach ($parameterAttribute in $parameterMetadata.Attributes) { + if ($parameterAttribute -isnot [ComponentModel.DefaultBindingPropertyAttribute]) { continue } + $ShaderSettings[$parameterAttribute.Name] = $PSBoundParameters[$parameterMetadata.Name] + if ($ShaderSettings[$parameterAttribute.Name] -is [switch]) { + $ShaderSettings[$parameterAttribute.Name] = $ShaderSettings[$parameterAttribute.Name] -as [bool] + } + continue nextParameter + } + } + + if (-not $PSBoundParameters['FilterName']) { + $filterName = $PSBoundParameters['FilterName'] = $shaderName + } + + $ShaderFilterSplat = [Ordered]@{ + ShaderSetting = $ShaderSettings + FilterName = $FilterName + SourceName = $SourceName + } + + foreach ($CarryOnParameter in "PassThru", "NoResponse","Force") { + if ($PSBoundParameters.ContainsKey($CarryOnParameter)) { + $ShaderFilterSplat[$CarryOnParameter] = $PSBoundParameters[$CarryOnParameter] + } + } + + if (-not $script:CachedShaderFilesFromCommand) { + $script:CachedShaderFilesFromCommand = @{} + } + + if ($Home -and -not $script:CachedShaderFilesFromCommand[$shaderName]) { + $MyObsPowerShellPath = Join-Path $home ".obs-powershell" + $ThisShaderPath = Join-Path $MyObsPowerShellPath "$shaderName.shader" + $shaderText | Set-Content -LiteralPath $ThisShaderPath + $script:CachedShaderFilesFromCommand[$shaderName] = Get-Item -LiteralPath $ThisShaderPath + } + if ($script:CachedShaderFilesFromCommand[$shaderName]) { + $ShaderFilterSplat.ShaderFile = $script:CachedShaderFilesFromCommand[$shaderName].FullName + } else { + $ShaderFilterSplat.ShaderText = $shaderText + } + + if ($myVerb -eq 'Add') { + Add-OBSShaderFilter @ShaderFilterSplat + } else { + Set-OBSShaderFilter @ShaderFilterSplat + } + } +} + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBS3DFilter { + + + [Alias('Add-OBS3DFilter')] + param( + # The Field of View + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("fov")] + [double] + $FieldOfView, + + # The Rotation along the X-axis + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("rot_x")] + [double] + $RotationX, + + # The Rotation along the Y-axis + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("rot_y")] + [double] + $RotationY, + + # The Rotation along the Z-axis + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("rot_z")] + [double] + $RotationZ, + + # The Position along the X-axis + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("pos_x")] + [double] + $PositionX, + + # The Position along the Y-axis + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("pos_y")] + [double] + $PositionY, + + # The Position along the Z-axis + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("pos_z")] + [double] + $PositionZ, + + # The scale of the source along the X-axis + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("scale_x")] + [double] + $ScaleX, + + # The scale of the source along the Y-axis + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("scale_y")] + [double] + $ScaleY, + + # If set, will remove a filter if one already exists. + # If this is not provided and the filter already exists, the settings of the filter will be changed. + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSSourceFilter) { + $script:AddOBSSourceFilter = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSSourceFilter','Function') + $script:AddOBSSourceFilter + } else { + $script:AddOBSSourceFilter + } + $IncludeParameter = @() + $ExcludeParameter = 'FilterKind','FilterSettings' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["FilterName"]) { + $filterName = $myParameters["FilterName"] = "3Band3D" + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + } + } + } + + $addSplat = @{ + filterName = $myParameters["FilterName"] + SourceName = $myParameters["SourceName"] + filterKind = "3d_effect_filter" + filterSettings = $myParameterData + NoResponse = $myParameters["NoResponse"] + } + + if ($MyParameters["PassThru"]) { + $addSplat.Passthru = $MyParameters["PassThru"] + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSSourceFilter @addSplat + } else { + $addSplat.Remove('FilterKind') + Set-OBSSourceFilterSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the existing filter. + $existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + # then apply the settings + $existingFilter.Set($addSplat.filterSettings) + # and output them + $existingFilter + # (don't forget to null the result, so we don't show this error) + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # Otherwise, get the input from the filters. + Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + + } + + } +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSColorFilter { + + + [Alias('Add-OBSColorFilter','Add-OBSColorCorrectionFilter','Set-OBSColorCorrectionFilter')] + param( + # The opacity, as a number between 0 and 1. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateRange(0,1)] + [ComponentModel.DefaultBindingProperty("opacity")] + [double] + $Opacity, + + # The brightness, as a number between -1 and 1. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateRange(-1,1)] + [ComponentModel.DefaultBindingProperty("brightness")] + [double] + $Brightness, + + # The constrast, as a number between -4 and 4. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateRange(-4,4)] + [ComponentModel.DefaultBindingProperty("contrast")] + [double] + $Contrast, + + # The gamma correction, as a number between -3 and 3. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateRange(-3,3)] + [ComponentModel.DefaultBindingProperty("gamma")] + [double] + $Gamma, + + # The saturation, as a number between -1 and 5. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateRange(-1,5)] + [ComponentModel.DefaultBindingProperty("saturation")] + [double] + $Saturation, + + # The change in hue, as represented in degrees around a color cicrle + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("hue_shift")] + [Alias('Spin')] + [double] + $Hue, + + # Multiply this color by all pixels within the source. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("color_multiply")] + [string] + $MultiplyColor, + + # Add all this color to all pixels within the source. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("color_add")] + [string] + $AddColor, + + # If set, will remove a filter if one already exists. + # If this is not provided and the filter already exists, the settings of the filter will be changed. + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSSourceFilter) { + $script:AddOBSSourceFilter = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSSourceFilter','Function') + $script:AddOBSSourceFilter + } else { + $script:AddOBSSourceFilter + } + $IncludeParameter = @() + $ExcludeParameter = 'FilterKind','FilterSettings' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + begin { + filter ToOBSColor { + + if ($_ -is [uint32]) { $_ } + elseif ($_ -is [string]) { + if ($_ -match '^\#[a-f0-9]{3,4}$') { + $_ = $_ -replace '[a-f0-9]','$0$0' + } + + if ($_ -match '^#[a-f0-9]{8}$') { + $_ -replace '#','0x' -as [UInt32] + } + elseif ($_ -match '^#[a-f0-9]{6}$') { + $_ -replace '#','0xff' -as [UInt32] + } + } + + } + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["FilterName"]) { + $FilterName = $myParameters["FilterName"] = "ColorCorrection" + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + } + } + } + + if ($myParameterData.color_add) { + $myParameterData.color_add = $myParameterData.color_add | ToOBSColor + } + + if ($myParameterData.color_multiply) { + $myParameterData.color_multiply = $myParameterData.color_multiply | ToOBSColor + } + + + $addSplat = @{ + filterName = $myParameters["FilterName"] + SourceName = $myParameters["SourceName"] + filterKind = "color_filter_v2" + filterSettings = $myParameterData + NoResponse = $myParameters["NoResponse"] + } + + if ($MyParameters["PassThru"]) { + $addSplat.Passthru = $MyParameters["PassThru"] + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSSourceFilter @addSplat + } else { + $addSplat.Remove('FilterKind') + Set-OBSSourceFilterSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + + if ($PassThru) { + return $outputAddedResult + } + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName + # and re-add our result. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + } else { + # Otherwise, get the existing filter. + $existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + # then apply the settings + $existingFilter.Set($addSplat.filterSettings) + # and output them + $existingFilter + # (don't forget to null the result, so we don't show this error) + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # Otherwise, get the input from the filters. + Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + } + + } +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSEqualizerFilter { + + + [Alias('Add-OBSEqualizierFilter','Add-OBS3BandEqualizerFilter','Set-OBS3BandEqualizerFilter')] + param( + # The change in low frequencies. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("low")] + [ValidateRange(-20,20)] + [double] + $Low, + + # The change in mid frequencies. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("mid")] + [ValidateRange(-20,20)] + [double] + $Mid, + + # The change in high frequencies. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("high")] + [ValidateRange(-20,20)] + [double] + $High, + + # If set, will remove a filter if one already exists. + # If this is not provided and the filter already exists, the settings of the filter will be changed. + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSSourceFilter) { + $script:AddOBSSourceFilter = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSSourceFilter','Function') + $script:AddOBSSourceFilter + } else { + $script:AddOBSSourceFilter + } + $IncludeParameter = @() + $ExcludeParameter = 'FilterKind','FilterSettings' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["FilterName"]) { + $filterName = $myParameters["FilterName"] = "3BandEqualizer" + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + } + } + } + + $addSplat = @{ + filterName = $myParameters["FilterName"] + SourceName = $myParameters["SourceName"] + filterKind = "basic_eq_filter" + filterSettings = $myParameterData + } + + if ($MyParameters["PassThru"]) { + $addSplat.Passthru = $MyParameters["PassThru"] + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSSourceFilter @addSplat + } else { + $addSplat.Remove('FilterKind') + Set-OBSSourceFilterSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the existing filter. + $existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + # then apply the settings + $existingFilter.Set($addSplat.filterSettings) + # and output them + $existingFilter + # (don't forget to null the result, so we don't show this error) + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # Otherwise, get the input from the filters. + Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + + } + + } +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSGainFilter { + + + [Alias('Add-OBSGainFilter')] + param( + # The Audio Gain, in decibels. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("db")] + [double] + $Gain, + + # If set, will remove a filter if one already exists. + # If this is not provided and the filter already exists, the settings of the filter will be changed. + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSSourceFilter) { + $script:AddOBSSourceFilter = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSSourceFilter','Function') + $script:AddOBSSourceFilter + } else { + $script:AddOBSSourceFilter + } + $IncludeParameter = @() + $ExcludeParameter = 'FilterKind','FilterSettings' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["FilterName"]) { + $filterName = $myParameters["FilterName"] = "Gain" + } + + $addSplat = @{ + filterName = $myParameters["FilterName"] + SourceName = $myParameters["SourceName"] + filterKind = "gain_filter" + filterSettings = [Ordered]@{db=$Gain} + NoResponse = $myParameters["NoResponse"] + } + + if ($MyParameters["PassThru"]) { + $addSplat.Passthru = $MyParameters["PassThru"] + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSSourceFilter @addSplat + } else { + $addSplat.Remove('FilterKind') + Set-OBSSourceFilterSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the existing filter. + $existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + # then apply the settings + $existingFilter.Set($addSplat.filterSettings) + # and output them + $existingFilter + # (don't forget to null the result, so we don't show this error) + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # Otherwise, get the input from the filters. + Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + + } + + } +} + + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSRenderDelayFilter { + + + [Alias('Add-OBSRenderDelayFilter')] + param( + # The RenderDelay. + [Parameter(ValueFromPipelineByPropertyName)] + [timespan] + $RenderDelay, + + # If set, will remove a filter if one already exists. + # If this is not provided and the filter already exists, the settings of the filter will be changed. + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSSourceFilter) { + $script:AddOBSSourceFilter = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSSourceFilter','Function') + $script:AddOBSSourceFilter + } else { + $script:AddOBSSourceFilter + } + $IncludeParameter = @() + $ExcludeParameter = 'FilterKind','FilterSettings' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["FilterName"]) { + $filterName = $myParameters["FilterName"] = "RenderDelay" + } + + + $myParameterData = [Ordered]@{ + delay_ms = if ($RenderDelay.Ticks -lt 10kb) { + [int]$RenderDelay.Ticks + } else { + [int]$RenderDelay.TotalMilliseconds + } + } + $addSplat = @{ + filterName = $myParameters["FilterName"] + SourceName = $myParameters["SourceName"] + filterKind = "gpu_delay" + filterSettings = $myParameterData + NoResponse = $myParameters["NoResponse"] + } + + if ($MyParameters["PassThru"]) { + $addSplat.Passthru = $MyParameters["PassThru"] + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSSourceFilter @addSplat + } else { + $addSplat.Remove('FilterKind') + Set-OBSSourceFilterSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the existing filter. + $existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + # then apply the settings + $existingFilter.Set($addSplat.filterSettings) + # and output them + $existingFilter + # (don't forget to null the result, so we don't show this error) + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # Otherwise, get the input from the filters. + Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + + } + + } +} + + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSScaleFilter { + + + [Alias('Add-OBSScaleFilter')] + param( + # The Resolution. Can either width x height (e.g. 1920x1080) or an aspect ratio (16:9). + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("resolution")] + [Alias('Scale')] + [string] + $Resolution, + + # The sampling method. It will default to "lanczos". + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("sampling")] + [string] + $Sampling = 'lanczos', + + # If set, will keep the aspect ratio when scaling. + # This is only valid if the sampling method is set to "lanczos". + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("undistort")] + [Alias('Undistort')] + [switch] + $KeepAspectRatio, + + # If set, will remove a filter if one already exists. + # If this is not provided and the filter already exists, the settings of the filter will be changed. + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSSourceFilter) { + $script:AddOBSSourceFilter = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSSourceFilter','Function') + $script:AddOBSSourceFilter + } else { + $script:AddOBSSourceFilter + } + $IncludeParameter = @() + $ExcludeParameter = 'FilterKind','FilterSettings' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["FilterName"]) { + $filterName = $myParameters["FilterName"] = "Scale" + } + + $addSplat = @{ + filterName = $myParameters["FilterName"] + SourceName = $myParameters["SourceName"] + filterKind = "scale_filter" + filterSettings = [Ordered]@{resolution=$Resolution;sampling=$Sampling;undistort=$KeepAspectRatio -as [bool]} + NoResponse = $myParameters["NoResponse"] + } + + if ($MyParameters["PassThru"]) { + $addSplat.Passthru = $MyParameters["PassThru"] + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSSourceFilter @addSplat + } else { + $addSplat.Remove('FilterKind') + Set-OBSSourceFilterSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the existing filter. + $existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + # then apply the settings + $existingFilter.Set($addSplat.filterSettings) + # and output them + $existingFilter + # (don't forget to null the result, so we don't show this error) + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # Otherwise, get the input from the filters. + Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + + } + + } +} + + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSScrollFilter { + + + param( + # The horizontal scroll speed. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("speed_x")] + [Alias('SpeedX', 'Speed_X','HSpeed')] + [double] + $HorizontalSpeed, + + # The vertical scroll speed. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("speed_y")] + [Alias('SpeedY', 'Speed_Y','VSpeed')] + [double] + $VerticalSpeed, + + # If set, will not loop + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("loop")] + [switch] + $NoLoop, + + # If provided, will limit the width. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateRange(-500, 500)] + [ComponentModel.DefaultBindingProperty("cx")] + [Alias('LimitX', 'Limit_CX','WidthLimit')] + [double] + $LimitWidth, + + # If provided, will limit the height. + [Parameter(ValueFromPipelineByPropertyName)] + [ValidateRange(-500, 500)] + [ComponentModel.DefaultBindingProperty("cy")] + [Alias('LimitY', 'Limit_CY','HeightLimit')] + [double] + $LimitHeight, + + # If set, will remove a filter if one already exists. + # If this is not provided and the filter already exists, the settings of the filter will be changed. + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSSourceFilter) { + $script:AddOBSSourceFilter = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSSourceFilter','Function') + $script:AddOBSSourceFilter + } else { + $script:AddOBSSourceFilter + } + $IncludeParameter = @() + $ExcludeParameter = 'FilterKind','FilterSettings' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["FilterName"]) { + $filterName = $myParameters["FilterName"] = "Scroll" + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + } + } + } + + if ($myParameterData["loop"]) { + $myParameterData["loop"] = -not $myParameterData["loop"] + } + if ($myParameterData["cx"]) { + $myParameterData["limit_cx"] = $true + } + if ($myParameterData["cy"]) { + $myParameterData["limit_cy"] = $true + } + + $addSplat = @{ + filterName = $myParameters["FilterName"] + SourceName = $myParameters["SourceName"] + filterKind = "scroll_filter" + filterSettings = $myParameterData + NoResponse = $myParameters["NoResponse"] + } + + if ($MyParameters["PassThru"]) { + $addSplat.Passthru = $MyParameters["PassThru"] + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSSourceFilter @addSplat + } else { + $addSplat.Remove('FilterKind') + Set-OBSSourceFilterSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the existing filter. + $existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + # then apply the settings + $existingFilter.Set($addSplat.filterSettings) + # and output them + $existingFilter + # (don't forget to null the result, so we don't show this error) + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # Otherwise, get the input from the filters. + Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + + } + + } +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSShaderFilter { + + + [Alias('Add-OBSShaderFilter')] + param( + # The text of the shader + [Parameter(ValueFromPipelineByPropertyName)] + [string]$ShaderText, + + # The file path to the shader, or the short file name of the shader. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('ShaderName')] + [string] + $ShaderFile, + + # Any other settings for the shader. + # To see what the name of a shader setting is, change it in the user interface and then get the input's filters. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('ShaderSettings')] + [PSObject] + $ShaderSetting, + + # If set, will remove a filter if one already exists. + # If this is not provided and the filter already exists, the settings of the filter will be changed. + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSSourceFilter) { + $script:AddOBSSourceFilter = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSSourceFilter','Function') + $script:AddOBSSourceFilter + } else { + $script:AddOBSSourceFilter + } + $IncludeParameter = @() + $ExcludeParameter = 'FilterKind','FilterSettings' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["FilterName"]) { + $filterName = $myParameters["FilterName"] = "Shader" + } + + $shaderSettings = [Ordered]@{} + if ($ShaderText) { + $shaderSettings.shader_text = $ShaderText + } + elseif ($ShaderFile) { + if ($ShaderFile -match '[\\/]') { + $shaderSettings.shader_file_name = "$($ExecutionContext.SessionState.Path.GetResolvedPSPathFromPSPath($ShaderFile))" -replace "\\", "/" + } else { + if (-not $script:CachedOBSShaderFilters) { + $script:CachedOBSShaderFilters = + Get-OBS | # Get the OBS object + Select-Object -ExpandProperty Process | # which has a process + Split-Path | Split-Path | Split-Path | # from it's parent path, we go up three levels. + Join-Path -ChildPath data | Join-Path -ChildPath obs-plugins | # then down into plugin data. + Get-ChildItem -Filter obs-shaderfilter | + Get-ChildItem -Filter examples | + Get-ChildItem -File # get all of the files in this directory + + } + + $foundShaderFile = $script:CachedOBSShaderFilters | + Where-Object Name -Like "$shaderFile*" | + Select-Object -First 1 + + if ($foundShaderFile) { + $shaderSettings.shader_file_name = $foundShaderFile.FullName -replace "\\", "/" + } + } + } + + if ($shaderSetting) { + if ($shaderSetting -is [Collections.IDictionary]) { + foreach ($kv in $shaderSetting.GetEnumerator()) { + $shaderSettings[$kv.Key] = $kv.Value + } + } elseif ($shaderSetting -is [psobject]) { + foreach ($prop in $shaderSetting.psobject.properties) { + $shaderSettings[$prop.Name] = $prop.Value + } + } + } + + if ($shaderSettings.shader_file_name) { + $shaderSettings.from_file = $true + } + + + $addSplat = @{ + filterName = $myParameters["FilterName"] + SourceName = $myParameters["SourceName"] + filterKind = "shader_filter" + filterSettings = $shaderSettings + NoResponse = $myParameters["NoResponse"] + } + + if ($MyParameters["PassThru"]) { + $addSplat.Passthru = $MyParameters["PassThru"] + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSSourceFilter @addSplat + } else { + $addSplat.Remove('FilterKind') + Set-OBSSourceFilterSettings @addSplat + } + return + } + + # Add the filter. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the existing filter. + $existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + # then apply the settings + $existingFilter.Set($addSplat.filterSettings) + # and output them + $existingFilter + # (don't forget to null the result, so we don't show this error) + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # Otherwise, get the input from the filters. + Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + + } + + } +} + + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSharpnessFilter { + + + [Alias('Add-OBSSharpnessFilter')] + param( + # The Sharpness. + [Parameter(ValueFromPipelineByPropertyName)] + [ComponentModel.DefaultBindingProperty("sharpness")] + [ValidateRange(0,1)] + [double] + $Sharpness, + + # If set, will remove a filter if one already exists. + # If this is not provided and the filter already exists, the settings of the filter will be changed. + [switch] + $Force + ) + dynamicParam { + $baseCommand = + if (-not $script:AddOBSSourceFilter) { + $script:AddOBSSourceFilter = + $executionContext.SessionState.InvokeCommand.GetCommand('Add-OBSSourceFilter','Function') + $script:AddOBSSourceFilter + } else { + $script:AddOBSSourceFilter + } + $IncludeParameter = @() + $ExcludeParameter = 'FilterKind','FilterSettings' + + + $DynamicParameters = [Management.Automation.RuntimeDefinedParameterDictionary]::new() + :nextInputParameter foreach ($paramName in ([Management.Automation.CommandMetaData]$baseCommand).Parameters.Keys) { + if ($ExcludeParameter) { + foreach ($exclude in $ExcludeParameter) { + if ($paramName -like $exclude) { continue nextInputParameter} + } + } + if ($IncludeParameter) { + $shouldInclude = + foreach ($include in $IncludeParameter) { + if ($paramName -like $include) { $true;break} + } + if (-not $shouldInclude) { continue nextInputParameter } + } + + $DynamicParameters.Add($paramName, [Management.Automation.RuntimeDefinedParameter]::new( + $baseCommand.Parameters[$paramName].Name, + $baseCommand.Parameters[$paramName].ParameterType, + $baseCommand.Parameters[$paramName].Attributes + )) + } + $DynamicParameters + + } + process { + $myParameters = [Ordered]@{} + $PSBoundParameters + + if (-not $myParameters["FilterName"]) { + $filterName = $myParameters["FilterName"] = "Sharpness" + } + + $myParameterData = [Ordered]@{} + foreach ($parameter in $MyInvocation.MyCommand.Parameters.Values) { + + $bindToPropertyName = $null + + foreach ($attribute in $parameter.Attributes) { + if ($attribute -is [ComponentModel.DefaultBindingPropertyAttribute]) { + $bindToPropertyName = $attribute.Name + break + } + } + + if (-not $bindToPropertyName) { continue } + if ($myParameters.Contains($parameter.Name)) { + $myParameterData[$bindToPropertyName] = $myParameters[$parameter.Name] + if ($myParameters[$parameter.Name] -is [switch]) { + $myParameterData[$bindToPropertyName] = $parameter.Name -as [bool] + } + } + } + + $addSplat = @{ + filterName = $myParameters["FilterName"] + SourceName = $myParameters["SourceName"] + filterKind = "Sharpness_filter" + filterSettings = $myParameterData + NoResponse = $myParameters["NoResponse"] + } + + if ($MyParameters["PassThru"]) { + $addSplat.Passthru = $MyParameters["PassThru"] + if ($MyInvocation.InvocationName -like 'Add-*') { + Add-OBSSourceFilter @addSplat + } else { + $addSplat.Remove('FilterKind') + Set-OBSSourceFilterSettings @addSplat + } + return + } + + # Add the input. + $outputAddedResult = Add-OBSSourceFilter @addSplat *>&1 + + # If we got back an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # and that error was saying the source already exists, + if ($outputAddedResult.TargetObject.d.requestStatus.code -eq 601) { + # then check if we use the -Force. + if ($Force) { # If we do, remove the input + Remove-OBSSourceFilter -FilterName $addSplat.FilterName -SourceName $addSplat.SourceName + # and re-add our result. + $outputAddedResult = Add-OBSInput @addSplat *>&1 + } else { + # Otherwise, get the existing filter. + $existingFilter = Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + # then apply the settings + $existingFilter.Set($addSplat.filterSettings) + # and output them + $existingFilter + # (don't forget to null the result, so we don't show this error) + $outputAddedResult = $null + } + } + + # If the output was still an error + if ($outputAddedResult -is [Management.Automation.ErrorRecord]) { + # use $psCmdlet.WriteError so that it shows the error correctly. + $psCmdlet.WriteError($outputAddedResult) + } + + } + # Otherwise, if we had a result + elseif ($outputAddedResult) { + # Otherwise, get the input from the filters. + Get-OBSSourceFilter -SourceName $addSplat.SourceName -FilterName $addSplat.FilterName + + } + + } +} + + + +#.ExternalHelp obs-powershell-Help.xml +function Add-OBSInput { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'CreateInput')] +[Alias('obs.powershell.websocket.CreateInput')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputKind')] +[string] +$InputKind, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputSettings')] +[PSObject] +$InputSettings, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemEnabled')] +[switch] +$SceneItemEnabled, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Add-OBSProfile { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'CreateProfile')] +[Alias('obs.powershell.websocket.CreateProfile')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('profileName')] +[string] +$ProfileName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Add-OBSScene { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'CreateScene')] +[Alias('obs.powershell.websocket.CreateScene')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Add-OBSSceneCollection { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'CreateSceneCollection')] +[Alias('obs.powershell.websocket.CreateSceneCollection')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneCollectionName')] +[string] +$SceneCollectionName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Add-OBSSceneItem { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'CreateSceneItem')] +[Alias('obs.powershell.websocket.CreateSceneItem')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +[Alias('Add-OBSSceneSource')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemEnabled')] +[switch] +$SceneItemEnabled, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Add-OBSSourceFilter { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'CreateSourceFilter')] +[Alias('obs.powershell.websocket.CreateSourceFilter')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterName')] +[string] +$FilterName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterKind')] +[string] +$FilterKind, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterSettings')] +[PSObject] +$FilterSettings, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Copy-OBSSceneItem { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'DuplicateSceneItem')] +[Alias('obs.powershell.websocket.DuplicateSceneItem')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('destinationSceneName')] +[string] +$DestinationSceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('destinationSceneUuid')] +[string] +$DestinationSceneUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCurrentPreviewScene { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetCurrentPreviewScene')] +[Alias('obs.powershell.websocket.GetCurrentPreviewScene')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCurrentProgramScene { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetCurrentProgramScene')] +[Alias('obs.powershell.websocket.GetCurrentProgramScene')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCurrentSceneTransition { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetCurrentSceneTransition')] +[Alias('obs.powershell.websocket.GetCurrentSceneTransition')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSCurrentSceneTransitionCursor { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetCurrentSceneTransitionCursor')] +[Alias('obs.powershell.websocket.GetCurrentSceneTransitionCursor')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGroup { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetGroupList')] +[Alias('obs.powershell.websocket.GetGroupList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSGroupSceneItem { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetGroupSceneItemList')] +[Alias('obs.powershell.websocket.GetGroupSceneItemList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSHotkey { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetHotkeyList')] +[Alias('obs.powershell.websocket.GetHotkeyList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInput { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputList')] +[Alias('obs.powershell.websocket.GetInputList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputKind')] +[string] +$InputKind, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputAudioBalance { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputAudioBalance')] +[Alias('obs.powershell.websocket.GetInputAudioBalance')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputAudioMonitorType { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputAudioMonitorType')] +[Alias('obs.powershell.websocket.GetInputAudioMonitorType')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputAudioSyncOffset { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputAudioSyncOffset')] +[Alias('obs.powershell.websocket.GetInputAudioSyncOffset')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputAudioTracks { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputAudioTracks')] +[Alias('obs.powershell.websocket.GetInputAudioTracks')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputDefaultSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputDefaultSettings')] +[Alias('obs.powershell.websocket.GetInputDefaultSettings')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputKind')] +[string] +$InputKind, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputKind { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputKindList')] +[Alias('obs.powershell.websocket.GetInputKindList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('unversioned')] +[switch] +$Unversioned, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputMute { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputMute')] +[Alias('obs.powershell.websocket.GetInputMute')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputPropertiesListPropertyItems { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputPropertiesListPropertyItems')] +[Alias('obs.powershell.websocket.GetInputPropertiesListPropertyItems')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('propertyName')] +[string] +$PropertyName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputSettings')] +[Alias('obs.powershell.websocket.GetInputSettings')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSInputVolume { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetInputVolume')] +[Alias('obs.powershell.websocket.GetInputVolume')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSLastReplayBufferReplay { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetLastReplayBufferReplay')] +[Alias('obs.powershell.websocket.GetLastReplayBufferReplay')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSMediaInputStatus { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetMediaInputStatus')] +[Alias('obs.powershell.websocket.GetMediaInputStatus')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSMonitor { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetMonitorList')] +[Alias('obs.powershell.websocket.GetMonitorList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSOutput { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetOutputList')] +[Alias('obs.powershell.websocket.GetOutputList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSOutputSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetOutputSettings')] +[Alias('obs.powershell.websocket.GetOutputSettings')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('outputName')] +[string] +$OutputName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSOutputStatus { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetOutputStatus')] +[Alias('obs.powershell.websocket.GetOutputStatus')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('outputName')] +[string] +$OutputName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSPersistentData { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetPersistentData')] +[Alias('obs.powershell.websocket.GetPersistentData')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('realm')] +[string] +$Realm, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('slotName')] +[string] +$SlotName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSProfile { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetProfileList')] +[Alias('obs.powershell.websocket.GetProfileList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSProfileParameter { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetProfileParameter')] +[Alias('obs.powershell.websocket.GetProfileParameter')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('parameterCategory')] +[string] +$ParameterCategory, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('parameterName')] +[string] +$ParameterName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRecordDirectory { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetRecordDirectory')] +[Alias('obs.powershell.websocket.GetRecordDirectory')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSRecordStatus { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetRecordStatus')] +[Alias('obs.powershell.websocket.GetRecordStatus')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSReplayBufferStatus { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetReplayBufferStatus')] +[Alias('obs.powershell.websocket.GetReplayBufferStatus')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSScene { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneList')] +[Alias('obs.powershell.websocket.GetSceneList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneCollection { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneCollectionList')] +[Alias('obs.powershell.websocket.GetSceneCollectionList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneItem { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneItemList')] +[Alias('obs.powershell.websocket.GetSceneItemList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneItemBlendMode { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneItemBlendMode')] +[Alias('obs.powershell.websocket.GetSceneItemBlendMode')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneItemEnabled { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneItemEnabled')] +[Alias('obs.powershell.websocket.GetSceneItemEnabled')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneItemId { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneItemId')] +[Alias('obs.powershell.websocket.GetSceneItemId')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('searchOffset')] +[ValidateRange(-1,[int]::MaxValue)] +[double] +$SearchOffset, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneItemIndex { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneItemIndex')] +[Alias('obs.powershell.websocket.GetSceneItemIndex')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneItemLocked { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneItemLocked')] +[Alias('obs.powershell.websocket.GetSceneItemLocked')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneItemSource { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneItemSource')] +[Alias('obs.powershell.websocket.GetSceneItemSource')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneItemTransform { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneItemTransform')] +[Alias('obs.powershell.websocket.GetSceneItemTransform')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneSceneTransitionOverride { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneSceneTransitionOverride')] +[Alias('obs.powershell.websocket.GetSceneSceneTransitionOverride')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSceneTransition { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSceneTransitionList')] +[Alias('obs.powershell.websocket.GetSceneTransitionList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSourceActive { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSourceActive')] +[Alias('obs.powershell.websocket.GetSourceActive')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSourceFilter { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSourceFilter')] +[Alias('obs.powershell.websocket.GetSourceFilter')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterName')] +[string] +$FilterName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSourceFilterDefaultSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSourceFilterDefaultSettings')] +[Alias('obs.powershell.websocket.GetSourceFilterDefaultSettings')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterKind')] +[string] +$FilterKind, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSourceFilterKind { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSourceFilterKindList')] +[Alias('obs.powershell.websocket.GetSourceFilterKindList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSourceFilterList { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSourceFilterList')] +[Alias('obs.powershell.websocket.GetSourceFilterList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSourceScreenshot { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSourceScreenshot')] +[Alias('obs.powershell.websocket.GetSourceScreenshot')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('imageFormat')] +[string] +$ImageFormat, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('imageWidth')] +[ValidateRange(8,4096)] +[double] +$ImageWidth, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('imageHeight')] +[ValidateRange(8,4096)] +[double] +$ImageHeight, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('imageCompressionQuality')] +[ValidateRange(-1,100)] +[double] +$ImageCompressionQuality, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSSpecialInputs { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetSpecialInputs')] +[Alias('obs.powershell.websocket.GetSpecialInputs')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSStats { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetStats')] +[Alias('obs.powershell.websocket.GetStats')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSStreamServiceSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetStreamServiceSettings')] +[Alias('obs.powershell.websocket.GetStreamServiceSettings')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSStreamStatus { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetStreamStatus')] +[Alias('obs.powershell.websocket.GetStreamStatus')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSStudioModeEnabled { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetStudioModeEnabled')] +[Alias('obs.powershell.websocket.GetStudioModeEnabled')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSTransitionKind { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetTransitionKindList')] +[Alias('obs.powershell.websocket.GetTransitionKindList')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSVersion { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetVersion')] +[Alias('obs.powershell.websocket.GetVersion')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSVideoSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetVideoSettings')] +[Alias('obs.powershell.websocket.GetVideoSettings')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSVirtualCamStatus { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'GetVirtualCamStatus')] +[Alias('obs.powershell.websocket.GetVirtualCamStatus')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Open-OBSInputFiltersDialog { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'OpenInputFiltersDialog')] +[Alias('obs.powershell.websocket.OpenInputFiltersDialog')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Open-OBSInputInteractDialog { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'OpenInputInteractDialog')] +[Alias('obs.powershell.websocket.OpenInputInteractDialog')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Open-OBSInputPropertiesDialog { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'OpenInputPropertiesDialog')] +[Alias('obs.powershell.websocket.OpenInputPropertiesDialog')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Open-OBSSourceProjector { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'OpenSourceProjector')] +[Alias('obs.powershell.websocket.OpenSourceProjector')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('monitorIndex')] +[double] +$MonitorIndex, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('projectorGeometry')] +[string] +$ProjectorGeometry, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Open-OBSVideoMixProjector { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'OpenVideoMixProjector')] +[Alias('obs.powershell.websocket.OpenVideoMixProjector')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('videoMixType')] +[string] +$VideoMixType, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('monitorIndex')] +[double] +$MonitorIndex, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('projectorGeometry')] +[string] +$ProjectorGeometry, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Remove-OBSInput { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'RemoveInput')] +[Alias('obs.powershell.websocket.RemoveInput')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Remove-OBSProfile { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'RemoveProfile')] +[Alias('obs.powershell.websocket.RemoveProfile')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('profileName')] +[string] +$ProfileName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Remove-OBSScene { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'RemoveScene')] +[Alias('obs.powershell.websocket.RemoveScene')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Remove-OBSSceneItem { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'RemoveSceneItem')] +[Alias('obs.powershell.websocket.RemoveSceneItem')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Remove-OBSSourceFilter { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'RemoveSourceFilter')] +[Alias('obs.powershell.websocket.RemoveSourceFilter')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterName')] +[string] +$FilterName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Resume-OBSRecord { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'ResumeRecord')] +[Alias('obs.powershell.websocket.ResumeRecord')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Save-OBSReplayBuffer { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SaveReplayBuffer')] +[Alias('obs.powershell.websocket.SaveReplayBuffer')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Save-OBSSourceScreenshot { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SaveSourceScreenshot')] +[Alias('obs.powershell.websocket.SaveSourceScreenshot')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('imageFormat')] +[string] +$ImageFormat, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('imageFilePath')] +[string] +$ImageFilePath, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('imageWidth')] +[ValidateRange(8,4096)] +[double] +$ImageWidth, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('imageHeight')] +[ValidateRange(8,4096)] +[double] +$ImageHeight, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('imageCompressionQuality')] +[ValidateRange(-1,100)] +[double] +$ImageCompressionQuality, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + + + Get-Item $paramCopy["imageFilePath"] | + Add-Member NoteProperty InputName $paramCopy["SourceName"] -Force -PassThru | + Add-Member NoteProperty SourceName $paramCopy["SourceName"] -Force -PassThru | + Add-Member NoteProperty ImageWidth $paramCopy["ImageWidth"] -Force -PassThru | + Add-Member NoteProperty ImageHeight $paramCopy["ImageHeight"] -Force -PassThru + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSCallVendorRequest { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'CallVendorRequest')] +[Alias('obs.powershell.websocket.CallVendorRequest')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('vendorName')] +[string] +$VendorName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('requestType')] +[string] +$RequestType, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('requestData')] +[PSObject] +$RequestData, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSCustomEvent { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'BroadcastCustomEvent')] +[Alias('obs.powershell.websocket.BroadcastCustomEvent')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('eventData')] +[PSObject] +$EventData, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSOffsetMediaInputCursor { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'OffsetMediaInputCursor')] +[Alias('obs.powershell.websocket.OffsetMediaInputCursor')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('mediaCursorOffset')] +[double] +$MediaCursorOffset, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSPauseRecord { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'PauseRecord')] +[Alias('obs.powershell.websocket.PauseRecord')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSPressInputPropertiesButton { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'PressInputPropertiesButton')] +[Alias('obs.powershell.websocket.PressInputPropertiesButton')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('propertyName')] +[string] +$PropertyName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSSleep { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'Sleep')] +[Alias('obs.powershell.websocket.Sleep')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sleepMillis')] +[ValidateRange(0,50000)] +[double] +$SleepMillis, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sleepFrames')] +[ValidateRange(0,10000)] +[double] +$SleepFrames, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSStreamCaption { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SendStreamCaption')] +[Alias('obs.powershell.websocket.SendStreamCaption')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('captionText')] +[string] +$CaptionText, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSTriggerHotkeyByKeySequence { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'TriggerHotkeyByKeySequence')] +[Alias('obs.powershell.websocket.TriggerHotkeyByKeySequence')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('keyId')] +[string] +$KeyId, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('keyModifiers')] +[PSObject] +$KeyModifiers, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('keyModifiers.shift')] +[switch] +$KeyModifiersshift, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('keyModifiers.control')] +[switch] +$KeyModifierscontrol, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('keyModifiers.alt')] +[switch] +$KeyModifiersalt, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('keyModifiers.command')] +[switch] +$KeyModifierscommand, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSTriggerHotkeyByName { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'TriggerHotkeyByName')] +[Alias('obs.powershell.websocket.TriggerHotkeyByName')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('hotkeyName')] +[string] +$HotkeyName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('contextName')] +[string] +$ContextName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSTriggerMediaInputAction { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'TriggerMediaInputAction')] +[Alias('obs.powershell.websocket.TriggerMediaInputAction')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('mediaAction')] +[string] +$MediaAction, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Send-OBSTriggerStudioModeTransition { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'TriggerStudioModeTransition')] +[Alias('obs.powershell.websocket.TriggerStudioModeTransition')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSCurrentPreviewScene { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetCurrentPreviewScene')] +[Alias('obs.powershell.websocket.SetCurrentPreviewScene')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSCurrentProfile { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetCurrentProfile')] +[Alias('obs.powershell.websocket.SetCurrentProfile')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('profileName')] +[string] +$ProfileName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSCurrentProgramScene { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetCurrentProgramScene')] +[Alias('obs.powershell.websocket.SetCurrentProgramScene')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSCurrentSceneCollection { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetCurrentSceneCollection')] +[Alias('obs.powershell.websocket.SetCurrentSceneCollection')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneCollectionName')] +[string] +$SceneCollectionName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSCurrentSceneTransition { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetCurrentSceneTransition')] +[Alias('obs.powershell.websocket.SetCurrentSceneTransition')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('transitionName')] +[string] +$TransitionName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSCurrentSceneTransitionDuration { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetCurrentSceneTransitionDuration')] +[Alias('obs.powershell.websocket.SetCurrentSceneTransitionDuration')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('transitionDuration')] +[ValidateRange(50,20000)] +[double] +$TransitionDuration, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSCurrentSceneTransitionSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetCurrentSceneTransitionSettings')] +[Alias('obs.powershell.websocket.SetCurrentSceneTransitionSettings')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('transitionSettings')] +[PSObject] +$TransitionSettings, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('overlay')] +[switch] +$Overlay, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSInputAudioBalance { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetInputAudioBalance')] +[Alias('obs.powershell.websocket.SetInputAudioBalance')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputAudioBalance')] +[ValidateRange(0,1)] +[double] +$InputAudioBalance, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSInputAudioMonitorType { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetInputAudioMonitorType')] +[Alias('obs.powershell.websocket.SetInputAudioMonitorType')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('monitorType')] +[string] +$MonitorType, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSInputAudioSyncOffset { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetInputAudioSyncOffset')] +[Alias('obs.powershell.websocket.SetInputAudioSyncOffset')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputAudioSyncOffset')] +[ValidateRange(-950,20000)] +[double] +$InputAudioSyncOffset, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSInputAudioTracks { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetInputAudioTracks')] +[Alias('obs.powershell.websocket.SetInputAudioTracks')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputAudioTracks')] +[PSObject] +$InputAudioTracks, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSInputMute { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetInputMute')] +[Alias('obs.powershell.websocket.SetInputMute')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputMuted')] +[switch] +$InputMuted, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSInputName { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetInputName')] +[Alias('obs.powershell.websocket.SetInputName')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('newInputName')] +[string] +$NewInputName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSInputSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetInputSettings')] +[Alias('obs.powershell.websocket.SetInputSettings')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputSettings')] +[PSObject] +$InputSettings, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('overlay')] +[switch] +$Overlay, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSInputVolume { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetInputVolume')] +[Alias('obs.powershell.websocket.SetInputVolume')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputVolumeMul')] +[ValidateRange(0,20)] +[double] +$InputVolumeMul, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputVolumeDb')] +[ValidateRange(-100,26)] +[double] +$InputVolumeDb, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSMediaInputCursor { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetMediaInputCursor')] +[Alias('obs.powershell.websocket.SetMediaInputCursor')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('mediaCursor')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$MediaCursor, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSOutputSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetOutputSettings')] +[Alias('obs.powershell.websocket.SetOutputSettings')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('outputName')] +[string] +$OutputName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('outputSettings')] +[PSObject] +$OutputSettings, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSPersistentData { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetPersistentData')] +[Alias('obs.powershell.websocket.SetPersistentData')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('realm')] +[string] +$Realm, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('slotName')] +[string] +$SlotName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('slotValue')] +[PSObject] +$SlotValue, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSProfileParameter { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetProfileParameter')] +[Alias('obs.powershell.websocket.SetProfileParameter')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('parameterCategory')] +[string] +$ParameterCategory, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('parameterName')] +[string] +$ParameterName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('parameterValue')] +[string] +$ParameterValue, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSRecordDirectory { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetRecordDirectory')] +[Alias('obs.powershell.websocket.SetRecordDirectory')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('recordDirectory')] +[string] +$RecordDirectory, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSceneItemBlendMode { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSceneItemBlendMode')] +[Alias('obs.powershell.websocket.SetSceneItemBlendMode')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemBlendMode')] +[string] +$SceneItemBlendMode, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSceneItemEnabled { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSceneItemEnabled')] +[Alias('obs.powershell.websocket.SetSceneItemEnabled')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemEnabled')] +[switch] +$SceneItemEnabled, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSceneItemIndex { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSceneItemIndex')] +[Alias('obs.powershell.websocket.SetSceneItemIndex')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemIndex')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemIndex, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSceneItemLocked { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSceneItemLocked')] +[Alias('obs.powershell.websocket.SetSceneItemLocked')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemLocked')] +[switch] +$SceneItemLocked, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSceneItemTransform { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSceneItemTransform')] +[Alias('obs.powershell.websocket.SetSceneItemTransform')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemId')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$SceneItemId, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneItemTransform')] +[PSObject] +$SceneItemTransform, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSceneName { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSceneName')] +[Alias('obs.powershell.websocket.SetSceneName')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('newSceneName')] +[string] +$NewSceneName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSceneSceneTransitionOverride { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSceneSceneTransitionOverride')] +[Alias('obs.powershell.websocket.SetSceneSceneTransitionOverride')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneName')] +[string] +$SceneName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sceneUuid')] +[string] +$SceneUuid, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('transitionName')] +[string] +$TransitionName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('transitionDuration')] +[ValidateRange(50,20000)] +[double] +$TransitionDuration, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSourceFilterEnabled { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSourceFilterEnabled')] +[Alias('obs.powershell.websocket.SetSourceFilterEnabled')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterName')] +[string] +$FilterName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterEnabled')] +[switch] +$FilterEnabled, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSourceFilterIndex { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSourceFilterIndex')] +[Alias('obs.powershell.websocket.SetSourceFilterIndex')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterName')] +[string] +$FilterName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterIndex')] +[ValidateRange(0,[int]::MaxValue)] +[double] +$FilterIndex, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSourceFilterName { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSourceFilterName')] +[Alias('obs.powershell.websocket.SetSourceFilterName')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterName')] +[string] +$FilterName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('newFilterName')] +[string] +$NewFilterName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSSourceFilterSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetSourceFilterSettings')] +[Alias('obs.powershell.websocket.SetSourceFilterSettings')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceName')] +[string] +$SourceName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('sourceUuid')] +[string] +$SourceUuid, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterName')] +[string] +$FilterName, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('filterSettings')] +[PSObject] +$FilterSettings, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('overlay')] +[switch] +$Overlay, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSStreamServiceSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetStreamServiceSettings')] +[Alias('obs.powershell.websocket.SetStreamServiceSettings')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('streamServiceType')] +[string] +$StreamServiceType, + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('streamServiceSettings')] +[PSObject] +$StreamServiceSettings, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSStudioModeEnabled { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetStudioModeEnabled')] +[Alias('obs.powershell.websocket.SetStudioModeEnabled')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('studioModeEnabled')] +[switch] +$StudioModeEnabled, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSTBarPosition { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetTBarPosition')] +[Alias('obs.powershell.websocket.SetTBarPosition')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('position')] +[ValidateRange(0,1)] +[double] +$Position, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('release')] +[switch] +$Release, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Set-OBSVideoSettings { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'SetVideoSettings')] +[Alias('obs.powershell.websocket.SetVideoSettings')] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('fpsNumerator')] +[ValidateRange(1,[int]::MaxValue)] +[double] +$FpsNumerator, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('fpsDenominator')] +[ValidateRange(1,[int]::MaxValue)] +[double] +$FpsDenominator, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('baseWidth')] +[ValidateRange(1,4096)] +[double] +$BaseWidth, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('baseHeight')] +[ValidateRange(1,4096)] +[double] +$BaseHeight, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('outputWidth')] +[ValidateRange(1,4096)] +[double] +$OutputWidth, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('outputHeight')] +[ValidateRange(1,4096)] +[double] +$OutputHeight, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Start-OBSOutput { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StartOutput')] +[Alias('obs.powershell.websocket.StartOutput')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('outputName')] +[string] +$OutputName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Start-OBSRecord { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StartRecord')] +[Alias('obs.powershell.websocket.StartRecord')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Start-OBSReplayBuffer { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StartReplayBuffer')] +[Alias('obs.powershell.websocket.StartReplayBuffer')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Start-OBSStream { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StartStream')] +[Alias('obs.powershell.websocket.StartStream')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Start-OBSVirtualCam { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StartVirtualCam')] +[Alias('obs.powershell.websocket.StartVirtualCam')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Stop-OBSOutput { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StopOutput')] +[Alias('obs.powershell.websocket.StopOutput')] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('outputName')] +[string] +$OutputName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Stop-OBSRecord { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StopRecord')] +[Alias('obs.powershell.websocket.StopRecord')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Stop-OBSReplayBuffer { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StopReplayBuffer')] +[Alias('obs.powershell.websocket.StopReplayBuffer')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Stop-OBSStream { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StopStream')] +[Alias('obs.powershell.websocket.StopStream')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Stop-OBSVirtualCam { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'StopVirtualCam')] +[Alias('obs.powershell.websocket.StopVirtualCam')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Switch-OBSInputMute { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'ToggleInputMute')] +[Alias('obs.powershell.websocket.ToggleInputMute')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputName')] +[string] +$InputName, + +[Parameter(ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('inputUuid')] +[string] +$InputUuid, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Switch-OBSOutput { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'ToggleOutput')] +[Alias('obs.powershell.websocket.ToggleOutput')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( + +[Parameter(Mandatory,ValueFromPipelineByPropertyName)] +[ComponentModel.DefaultBindingProperty('outputName')] +[string] +$OutputName, +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Switch-OBSRecord { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'ToggleRecord')] +[Alias('obs.powershell.websocket.ToggleRecord')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Switch-OBSRecordPause { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'ToggleRecordPause')] +[Alias('obs.powershell.websocket.ToggleRecordPause')] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Switch-OBSReplayBuffer { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'ToggleReplayBuffer')] +[Alias('obs.powershell.websocket.ToggleReplayBuffer')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Switch-OBSStream { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'ToggleStream')] +[Alias('obs.powershell.websocket.ToggleStream')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Switch-OBSVirtualCam { + + +[Reflection.AssemblyMetadata('OBS.WebSocket.RequestType', 'ToggleVirtualCam')] +[Alias('obs.powershell.websocket.ToggleVirtualCam')] +[Reflection.AssemblyMetadata('OBS.WebSocket.ExpectingResponse', $true)] +param( +# If set, will return the information that would otherwise be sent to OBS. +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('OutputRequest','OutputInput')] +[switch] +$PassThru, +# If set, will not attempt to receive a response from OBS. +# This can increase performance, and also silently ignore critical errors +[Parameter(ValueFromPipelineByPropertyName)] +[Alias('NoReceive','IgnoreResponse','IgnoreReceive','DoNotReceiveResponse')] +[switch] +$NoResponse +) + + +process { + + + # Create a copy of the parameters (that are part of the payload) + $paramCopy = [Ordered]@{} + # get a reference to this command + $myCmd = $MyInvocation.MyCommand + + # Keep track of how many requests we have done of a given type + # (this makes creating RequestIDs easy) + if (-not $script:ObsRequestsCounts) { + $script:ObsRequestsCounts = @{} + } + + # Set my requestType to blank + $myRequestType = '' + # and indicate we are not expecting a response + $responseExpected = $false + # Then walk over this commands' attributes, + foreach ($attr in $myCmd.ScriptBlock.Attributes) { + if ($attr -is [Reflection.AssemblyMetadataAttribute]) { + if ($attr.Key -eq 'OBS.WebSocket.RequestType') { + $myRequestType = $attr.Value # set the requestType, + } + elseif ($attr.Key -eq 'OBS.WebSocket.ExpectingResponse') { + # and determine if we are expecting a response. + $responseExpected = + if ($attr.Value -eq 'false') { + $false + } else { $true } + } + } + } + + # Walk over each parameter + :nextParam foreach ($keyValue in $PSBoundParameters.GetEnumerator()) { + # and walk over each of it's attributes to see if it part of the payload + foreach ($attr in $myCmd.Parameters[$keyValue.Key].Attributes) { + # If the parameter is bound to part of the payload + if ($attr -is [ComponentModel.DefaultBindingPropertyAttribute]) { + # copy it into our payload dicitionary. + $paramCopy[$attr.Name] = $keyValue.Value + # (don't forget to turn switches into booleans) + if ($paramCopy[$attr.Name] -is [switch]) { + $paramCopy[$attr.Name] = [bool]$paramCopy[$attr.Name] + } + if ($attr.Name -like '*path') { + $paramCopy[$attr.Name] = + "$($ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($paramCopy[$attr.Name]))" + } + continue nextParam + } + } + } + + # and make a request ID from that. + $myRequestId = "$myRequestType.$([Guid]::newGuid())" + + # Construct the payload object + $requestPayload = [Ordered]@{ + # It must include a request ID + requestId = $myRequestId + # request type + requestType = $myRequestType + # and optional data + requestData = $paramCopy + } + + if ($PassThru) { + [PSCustomObject]$requestPayload + } else { + [PSCustomObject]$requestPayload | + Send-OBS -NoResponse:$NoResponse + } + +} + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Get-OBSEffect +{ + + param( + # The name of the effect. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('EffectName')] + [string] + $Name + ) + + begin { + if (-not $script:OBSFX) { + $script:OBSFX = [Ordered]@{} + } + } + + process { + + if (-not $Name) { + $script:OBSFX.Values + } elseif ($script:OBSFX[$name]) { + $script:OBSFX[$name] + } + } +} +#.ExternalHelp obs-powershell-Help.xml +function Import-OBSEffect { + + + param( + # The source location of the effect. + # This can be a string, file, directory, command, or module. + [Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)] + [Alias( + 'FromPath', + 'FromModule', + 'FromScript', + 'FromFunction', + 'FullName', + 'Path', + 'Source' + )] + [ValidateScript({ + $validTypeList = [System.String],[System.IO.FileInfo],[System.IO.DirectoryInfo],[System.Management.Automation.CommandInfo],[System.Management.Automation.PSModuleInfo] + + $thisType = $_.GetType() + $IsTypeOk = + $(@( foreach ($validType in $validTypeList) { + if ($_ -as $validType) { + $true;break + } + })) + + if (-not $isTypeOk) { + throw "Unexpected type '$(@($thisType)[0])'. Must be 'string','System.IO.FileInfo','System.IO.DirectoryInfo','System.Management.Automation.CommandInfo','psmoduleinfo'." + } + return $true + })] + + $From + ) + + begin { + if (-not $script:OBSFX) { + $script:OBSFX = [Ordered]@{} + } + + $newEffects = @() + $obsEffectsPattern = [Regex]::new(' + (?> + ^OBS.(?>fx|effects?)\p{P} + | + [\p{P}-[-]]OBS\.(?>fx|effects?)$ + | + \p{P}OBS.(?>fx|effects?)\.(?>ps1|json)$ + ) + ','IgnoreCase,IgnorePatternWhitespace') + } + + process { + # Since -From can be many things, but a metric has to be a command, + # the purpose of this function is to essentially resolve many things to a command, + # and then cache that command. + + # If -From was a string + if ($From -is [string]) { + # It could be a module, so check those first. + :ResolveFromString do { + foreach ($loadedModule in @(Get-Module)) { + # If we find the module, don't try to resolve -From as a path + if ($loadedModule.Name -eq $from) { + # (just set -From again and let the function continue) + $from = $fromModule = $loadedModule;break ResolveFromString + } + + } + # If we think from was a path + $resolvedPath = $ExecutionContext.SessionState.Path.GetResolvedPSPathFromPSPath($from) + # attempt to resolve it + if ($resolvedPath) { + $from = Get-Item -LiteralPath $resolvedPath + } + } while ($false) + } + + # If -From is a module + if ($from -is [Management.Automation.PSModuleInfo]) { + # recursively call ourselves with all matching commands + @($from.ExportedCommands.Values) -match $obsEffectsPattern | + Import-OBSEffect + # then, make -From a directory + if ($from.Path) { + $from = Get-Item ($from.Path | Split-Path) -ErrorAction SilentlyContinue + } + } + + # If -From is a directory + if ($from -is [IO.DirectoryInfo]) { + $FromDirectory = $from + # recursively call ourselves with all matching scripts + Get-ChildItem -LiteralPath $from.FullName -Recurse -File | + Where-Object Name -match '\.obs\.(?>fx|effects?).(?>ps1|json)$' | + Import-OBSEffect + return + } + + # If -From is a file + if ($from -is [IO.FileInfo]) { + # and it matches the naming convention + if ($from.Name -notmatch '\.obs\.(?>fx|effects?).(?>ps1|json)$') { return } + # make -From a command. + $from = $ExecutionContext.SessionState.InvokeCommand.GetCommand($from.FullName, 'ExternalScript,Application') + } + + # If -From is a command + if ($from -is [Management.Automation.CommandInfo]) { + # decorate the command + if ($from.pstypenames -notcontains 'OBS.PowerShell.Effect') { + $from.pstypenames.insert(0,'OBS.PowerShell.Effect') + } + + if ($from -is [Management.Automation.ApplicationInfo]) { + $effectName = $from.Name -replace '\.obs\.(?>fx|effects?).(?>ps1|json)$' + $newEffect = [PSCustomObject][Ordered]@{ + PSTypeName = 'OBS.PowerShell.Effect' + Messages = Get-Content -Raw -Path $From.Source | ConvertFrom-Json + EffectName = $effectName + TypeName = $TypeName + } + $script:OBSFX[$effectName] = $newEffect + $newEffects += $newEffect + $newEffect + } else { + if ($from.pstypenames -notcontains 'OBS.PowerShell.Effect.Command') { + $from.pstypenames.insert(0,'OBS.PowerShell.Effect.Command') + } + # and add it to our list of new metrics + $newEffects+= $from + $script:OBSFX[$from.EffectName] = $from + $from + } + } + } + + + +} + + +#.ExternalHelp obs-powershell-Help.xml +function Remove-OBSEffect +{ + + param( + # The name of the effect. + [Parameter(Mandatory,ValueFromPipelineByPropertyName)] + [Alias('Name')] + [string] + $EffectName + ) + + begin { + if (-not $script:OBSFX) { + $script:OBSFX = [Ordered]@{} + } + } + + process { + if ($script:OBSFX[$name]) { + $script:OBSFX.Stop() + $script:OBSFX.Remove($name) + } + } +} + +#.ExternalHelp obs-powershell-Help.xml +function Start-OBSEffect +{ + + [CmdletBinding(PositionalBinding=$false)] + param( + # The name of the effect. + [ArgumentCompleter({ + param ( $commandName, + $parameterName, + $wordToComplete, + $commandAst, + $fakeBoundParameters ) + $effectNames = @(Get-OBSEffect| + Select-Object -Unique -ExpandProperty EffectName) + if ($wordToComplete) { + $toComplete = $wordToComplete -replace "^'" -replace "'$" + return @($effectNames -like "$toComplete*" -replace '^', "'" -replace '$',"'") + } else { + return @($effectNames -replace '^', "'" -replace '$',"'") + } + })] + [Parameter(Mandatory)] + [string[]] + $EffectName, + + # The duration of the effect. + # If provided, all effects should use this duration. + # If not provided, each effect should use it's own duration. + [Timespan] + $Duration, + + # The parameters passed to the effect. + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('EffectParameters')] + [Collections.IDictionary] + $EffectParameter = @{}, + + # The arguments passed to the effect. + [Parameter(ValueFromRemainingArguments)] + [Alias('EffectArguments')] + [PSObject[]] + $EffectArgument = @(), + + # If provided, will step thru running + [Parameter(ValueFromPipelineByPropertyName)] + [Alias('ticks')] + [int] + $Step, + + # The SceneItemID. If this is provided, the effect will be given a target. + [Parameter(ValueFromPipelineByPropertyName)] + [int] + $SceneItemID, + + # The SceneName. If this is provided with a -SceneItemID or -SourceName, the effect will be given a target. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $SceneName, + + # The Filter Name. If this is provided with a -SourceName, the effect will be given a target. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $FilterName, + + # The Source Name. If this is provided with a -FitlerName -or -SceneName, the effect will be given a target. + [Parameter(ValueFromPipelineByPropertyName)] + [string] + $SourceName, + + # If set, will loop the effect. + [switch] + $Loop, + + # If provided, will loop the effect a number of times. + [int] + $LoopCount, + + # If set, will bounce the effect (flip it / reverse it) + [switch] + $Bounce, + + # If set, will reverse an effect. + [switch] + $Reverse + ) + + process { + foreach ($NameOfEffect in $EffectName) { + $obsEffect = Get-OBSEffect -EffectName $NameOfEffect + + if (-not $obsEffect) { + Write-Warning "No Effect named '$NameOfEffect'" + continue + } + + if ($LoopCount) { + $obsEffect | Add-Member -MemberType NoteProperty LoopCount $LoopCount -Force + } + + if ($loop -or $Bounce) { + $obsEffect | Add-Member -MemberType NoteProperty Mode "$(if ($Bounce) {"Bounce"})$(if ($loop) {"Loop"})" -Force + if (-not $LoopCount) { + $obsEffect | Add-Member -MemberType NoteProperty LoopCount -1 -Force + } + } else { + $obsEffect | Add-Member -MemberType NoteProperty Mode "Once" -Force + } + + if ($Reverse) { + $obsEffect.Reversed = $true + } + + if ($obsEffect -isnot [Management.Automation.CommandInfo]) { + if ($step -and $obsEffect.Messages) { + $obsEffect.Step($step) + continue + } + + $obsEffect.Start() + + } else { + if ($step -and $obsEffect.Messages) { + $obsEffect.Step($step) + continue + } + + if (-not $this) { + if ($_.pstypenames -like '*.GetSourceFilter*') { + $this = $_ + } elseif ($FilterName -and $SourceName) { + $this = Get-OBSSourceFilter -SourceName $SourceName -FilterName $FilterName + } + + if ($_.pstypenames -like '*.GetSceneItem*') { + $this = $_ + } elseif ($SceneName -and ($SceneItemID -or $SourceName)) { + $this = + foreach ($sceneItem in Get-OBSSceneItem -SceneName $SceneName) { + if ($SceneItemID -and $sceneItem.SceneItemID -eq $SceneItemID) { + $sceneItem;break + } + elseif ($SceneName -and $sceneItem.SceneName -eq $SceneName) { + $sceneItem;break + } + } + } + } + + if ($Duration -and $obsEffect.Parameters.Duration) { + $EffectParameter.Duration = $Duration + } + + $obsEffectOutput = . $obsEffect @EffectParameter @EffectArgument + if ($obsEffectOutput) { + $obsEffect | Add-Member NoteProperty Messages $obsEffectOutput -Force + if ($step) { + $obsEffect.Step($step) + } else { + $obsEffect.Start() + } + } + } + $obsEffect + } + + + } +} +#.ExternalHelp obs-powershell-Help.xml +function Stop-OBSEffect +{ + + param( + # The name of the effect. + [Parameter(Mandatory,ValueFromPipelineByPropertyName)] + [string] + $EffectName) + + process { + $obsEffect = Get-OBSEffect -EffectName $EffectName + + if (-not $obsEffect) { return } + + $obsEffect | Add-Member -MemberType NoteProperty Mode 'Stopped' -Force + } +} \ No newline at end of file diff --git a/docs/Add-OBS3BandEqualizerFilter.md b/docs/Add-OBS3BandEqualizerFilter.md index d85e58239..50fa44f21 100644 --- a/docs/Add-OBS3BandEqualizerFilter.md +++ b/docs/Add-OBS3BandEqualizerFilter.md @@ -1,93 +1,49 @@ Set-OBSEqualizerFilter ---------------------- - - - ### Synopsis Sets a Equalizer filter. - - --- - ### Description Adds or Changes a 3-band Equalizer Filter on an OBS Input. - - --- - ### Parameters #### **Low** - The change in low frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Mid** - The change in mid frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **High** - The change in high frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSEqualizerFilter [[-Low] ] [[-Mid] ] [[-High] ] [-Force] [] diff --git a/docs/Add-OBS3DFilter.md b/docs/Add-OBS3DFilter.md index 47006f4d3..217ea6216 100644 --- a/docs/Add-OBS3DFilter.md +++ b/docs/Add-OBS3DFilter.md @@ -1,184 +1,92 @@ Set-OBS3DFilter --------------- - - - ### Synopsis Sets an OBS 3D Filter. - - --- - ### Description Adds or Changes a 3D Filter on an OBS Input. This requires the [3D Effect](https://github.com/exeldro/obs-3d-effect). - - --- - ### Parameters #### **FieldOfView** - The Field of View - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **RotationX** - The Rotation along the X-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **RotationY** - The Rotation along the Y-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **RotationZ** - The Rotation along the Z-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |4 |true (ByPropertyName)| - - #### **PositionX** - The Position along the X-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |5 |true (ByPropertyName)| - - #### **PositionY** - The Position along the Y-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |6 |true (ByPropertyName)| - - #### **PositionZ** - The Position along the Z-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |7 |true (ByPropertyName)| - - #### **ScaleX** - The scale of the source along the X-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |8 |true (ByPropertyName)| - - #### **ScaleY** - The scale of the source along the Y-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |9 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBS3DFilter [[-FieldOfView] ] [[-RotationX] ] [[-RotationY] ] [[-RotationZ] ] [[-PositionX] ] [[-PositionY] ] [[-PositionZ] ] [[-ScaleX] ] [[-ScaleY] ] [-Force] [] diff --git a/docs/Add-OBS3dSwapTransitionShader.md b/docs/Add-OBS3dSwapTransitionShader.md new file mode 100644 index 000000000..7e003b128 --- /dev/null +++ b/docs/Add-OBS3dSwapTransitionShader.md @@ -0,0 +1,119 @@ +Get-OBS3dSwapTransitionShader +----------------------------- + +### Synopsis +Get-OBS3dSwapTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-Reflection] ] [[-Perspective] ] [[-Depth] ] [[-BackgroundColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BackgroundColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |background_color| + +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **Depth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Perspective** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Reflection** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBS3dSwapTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-Reflection] ] [[-Perspective] ] [[-Depth] ] [[-BackgroundColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSAddShader.md b/docs/Add-OBSAddShader.md new file mode 100644 index 000000000..3273079cd --- /dev/null +++ b/docs/Add-OBSAddShader.md @@ -0,0 +1,77 @@ +Get-OBSAddShader +---------------- + +### Synopsis +Get-OBSAddShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OtherImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |other_image| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAddShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSAlphaBorderShader.md b/docs/Add-OBSAlphaBorderShader.md new file mode 100644 index 000000000..7670315ad --- /dev/null +++ b/docs/Add-OBSAlphaBorderShader.md @@ -0,0 +1,89 @@ +Get-OBSAlphaBorderShader +------------------------ + +### Synopsis +Get-OBSAlphaBorderShader [[-BorderColor] ] [[-BorderThickness] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAlphaBorderShader [[-BorderColor] ] [[-BorderThickness] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSAlphaGamingBentCameraShader.md b/docs/Add-OBSAlphaGamingBentCameraShader.md new file mode 100644 index 000000000..761886161 --- /dev/null +++ b/docs/Add-OBSAlphaGamingBentCameraShader.md @@ -0,0 +1,131 @@ +Get-OBSAlphaGamingBentCameraShader +---------------------------------- + +### Synopsis +Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LeftFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_flip_shadow| + +#### **LeftFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_flip_width| + +#### **LeftSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_side_shadow| + +#### **LeftSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |left_side_size| + +#### **LeftSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_side_width| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RightFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_flip_shadow| + +#### **RightFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_flip_width| + +#### **RightSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_side_shadow| + +#### **RightSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |right_side_size| + +#### **RightSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_side_width| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSAnimatedPathShader.md b/docs/Add-OBSAnimatedPathShader.md new file mode 100644 index 000000000..c2855cb1c --- /dev/null +++ b/docs/Add-OBSAnimatedPathShader.md @@ -0,0 +1,131 @@ +Get-OBSAnimatedPathShader +------------------------- + +### Synopsis +Get-OBSAnimatedPathShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-SpeedPercent] ] [[-PathMap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PathMap** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[String]`|false |named |False |path_map| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **Reverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAnimatedPathShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-SpeedPercent] ] [[-PathMap] ] [-Reverse ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSAnimatedTextureShader.md b/docs/Add-OBSAnimatedTextureShader.md new file mode 100644 index 000000000..3eba62697 --- /dev/null +++ b/docs/Add-OBSAnimatedTextureShader.md @@ -0,0 +1,209 @@ +Get-OBSAnimatedTextureShader +---------------------------- + +### Synopsis +Get-OBSAnimatedTextureShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-AnimationImage] ] [[-ColorizationImage] ] [[-PolarAngle] ] [[-PolarHeight] ] [[-SpeedHorizontalPercent] ] [[-SpeedVerticalPercent] ] [[-TintSpeedHorizontalPercent] ] [[-TintSpeedVerticalPercent] ] [[-Alpha] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Bounce] [-CenterAnimation] [-PolarAnimation] [-UseAnimationImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Alpha** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AnimationImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[String]`|false |named |False |Animation_Image| + +#### **Bounce** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CenterAnimation** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |center_animation| + +#### **ColorizationImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------------| +|`[String]`|false |named |False |Colorization_Image| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PolarAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |polar_angle| + +#### **PolarAnimation** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[Switch]`|false |named |False |polar_animation| + +#### **PolarHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |polar_height| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **Reverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedHorizontalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------------| +|`[Float]`|false |named |False |speed_horizontal_percent| + +#### **SpeedVerticalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |speed_vertical_percent| + +#### **TintSpeedHorizontalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |tint_speed_horizontal_percent| + +#### **TintSpeedVerticalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------------| +|`[Float]`|false |named |False |tint_speed_vertical_percent| + +#### **UseAnimationImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------------| +|`[Switch]`|false |named |False |Use_Animation_Image_Color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAnimatedTextureShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-AnimationImage] ] [[-ColorizationImage] ] [-Reverse ] [-Bounce ] [-CenterAnimation ] [-PolarAnimation ] [[-PolarAngle] ] [[-PolarHeight] ] [[-SpeedHorizontalPercent] ] [[-SpeedVerticalPercent] ] [[-TintSpeedHorizontalPercent] ] [[-TintSpeedVerticalPercent] ] [[-Alpha] ] [-UseAnimationImageColor ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSAsciiShader.md b/docs/Add-OBSAsciiShader.md new file mode 100644 index 000000000..fb5b5cfa9 --- /dev/null +++ b/docs/Add-OBSAsciiShader.md @@ -0,0 +1,101 @@ +Get-OBSAsciiShader +------------------ + +### Synopsis +Get-OBSAsciiShader [[-Scale] ] [[-BaseColor] ] [[-CharacterSet] ] [[-Note] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Monochrome] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BaseColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |base_color| + +#### **CharacterSet** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |character_set| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Monochrome** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Note** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAsciiShader [[-Scale] ] [[-BaseColor] ] [-Monochrome ] [[-CharacterSet] ] [[-Note] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSAspectRatioShader.md b/docs/Add-OBSAspectRatioShader.md new file mode 100644 index 000000000..06e75861e --- /dev/null +++ b/docs/Add-OBSAspectRatioShader.md @@ -0,0 +1,131 @@ +Get-OBSAspectRatioShader +------------------------ + +### Synopsis +Get-OBSAspectRatioShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAspectRatioShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSAudioOutputSource.md b/docs/Add-OBSAudioOutputSource.md index f3e8e01a1..28579f10e 100644 --- a/docs/Add-OBSAudioOutputSource.md +++ b/docs/Add-OBSAudioOutputSource.md @@ -1,121 +1,72 @@ Set-OBSAudioOutputSource ------------------------ - - - ### Synopsis Adds or sets an audio output source - - --- - ### Description Adds or sets an audio output source in OBS. This captures the audio that is being sent to an output device. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Add-OBSAudioOutputSource ``` +> EXAMPLE 2 -#### EXAMPLE 2 ```PowerShell Set-OBSAudioOutputSource -AudioDevice Speakers ``` - - --- - ### Parameters #### **AudioDevice** - The name of the audio device. This name or device ID of the audio device that should be captured. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------| |`[String]`|false |1 |true (ByPropertyName)|ItemValue
ItemName
DeviceID| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |2 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "AudioOutput$($AudioDevice)" will be the input source name. - - - - - -|Type |Required|Position|PipelineInput |Aliases | -|----------|--------|--------|---------------------|---------| -|`[String]`|false |3 |true (ByPropertyName)|InputName| - - +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |3 |true (ByPropertyName)|InputName
SourceName| #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Notes This command currently only supports capturing default audio on Windows. To add support for other operating systems, file an issue or open a pull request. - - --- - ### Syntax ```PowerShell Set-OBSAudioOutputSource [[-AudioDevice] ] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Add-OBSBackgroundRemovalShader.md b/docs/Add-OBSBackgroundRemovalShader.md new file mode 100644 index 000000000..a49d8ebfe --- /dev/null +++ b/docs/Add-OBSBackgroundRemovalShader.md @@ -0,0 +1,161 @@ +Get-OBSBackgroundRemovalShader +------------------------------ + +### Synopsis +Get-OBSBackgroundRemovalShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-Target] ] [[-Color] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-Convert709to601] [-Convert601to709] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Convert601to709** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Convert_601to709| + +#### **Convert709to601** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Convert_709to601| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Invert** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Target** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBackgroundRemovalShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-Target] ] [[-Color] ] [[-Opacity] ] [-Invert ] [-Convert709to601 ] [-Convert601to709 ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSBlendOpacityShader.md b/docs/Add-OBSBlendOpacityShader.md new file mode 100644 index 000000000..57f3bbaba --- /dev/null +++ b/docs/Add-OBSBlendOpacityShader.md @@ -0,0 +1,125 @@ +Get-OBSBlendOpacityShader +------------------------- + +### Synopsis +Get-OBSBlendOpacityShader [[-RotationOffset] ] [[-OpacityStartPercent] ] [[-OpacityEndPercent] ] [[-Spread] ] [[-Speed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OpacityEndPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------------| +|`[Float]`|false |named |False |Opacity_End_Percent| + +#### **OpacityStartPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |Opacity_Start_Percent| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Rotational** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RotationOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Rotation_Offset| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Spread** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBlendOpacityShader [-Vertical ] [-Rotational ] [[-RotationOffset] ] [[-OpacityStartPercent] ] [[-OpacityEndPercent] ] [[-Spread] ] [[-Speed] ] [-ApplyToAlphaLayer ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSBlinkShader.md b/docs/Add-OBSBlinkShader.md new file mode 100644 index 000000000..4c2ef4b14 --- /dev/null +++ b/docs/Add-OBSBlinkShader.md @@ -0,0 +1,77 @@ +Get-OBSBlinkShader +------------------ + +### Synopsis +Get-OBSBlinkShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBlinkShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSBloomShader.md b/docs/Add-OBSBloomShader.md new file mode 100644 index 000000000..9508b71d4 --- /dev/null +++ b/docs/Add-OBSBloomShader.md @@ -0,0 +1,95 @@ +Get-OBSBloomShader +------------------ + +### Synopsis +Get-OBSBloomShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AmpFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AngleSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |Angle_Steps| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RadiusSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Radius_Steps| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBloomShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSBorderShader.md b/docs/Add-OBSBorderShader.md new file mode 100644 index 000000000..1a0c697e1 --- /dev/null +++ b/docs/Add-OBSBorderShader.md @@ -0,0 +1,77 @@ +Get-OBSBorderShader +------------------- + +### Synopsis +Get-OBSBorderShader [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBorderShader [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSBoxBlurShader.md b/docs/Add-OBSBoxBlurShader.md new file mode 100644 index 000000000..1de90563b --- /dev/null +++ b/docs/Add-OBSBoxBlurShader.md @@ -0,0 +1,101 @@ +Get-OBSBoxBlurShader +-------------------- + +### Synopsis +Get-OBSBoxBlurShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MaskBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Mask_Bottom| + +#### **MaskLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Mask_Left| + +#### **MaskRight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Mask_Right| + +#### **MaskTop** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Mask_Top| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBoxBlurShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSBrowserSource.md b/docs/Add-OBSBrowserSource.md index e79e8496f..5c94662b2 100644 --- a/docs/Add-OBSBrowserSource.md +++ b/docs/Add-OBSBrowserSource.md @@ -1,214 +1,112 @@ Set-OBSBrowserSource -------------------- - - - ### Synopsis Sets a browser source - - --- - ### Description Adds or changes a browser source in OBS. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSBrowserSource -Uri https://pssvg.start-automating.com/Examples/Stars.svg ``` - - --- - ### Parameters #### **Uri** - The uri or file path to display. If the uri points to a local file, this will be preferred - - - - - |Type |Required|Position|PipelineInput |Aliases | |-------|--------|--------|---------------------|-----------------------------------------------| |`[Uri]`|false |1 |true (ByPropertyName)|Url
Href
Path
FilePath
FullName| - - #### **Width** - The width of the browser source. If none is provided, this will be the output width of the video settings. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |2 |true (ByPropertyName)| - - #### **Height** - The width of the browser source. If none is provided, this will be the output height of the video settings. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |3 |true (ByPropertyName)| - - #### **CSS** - The css style used to render the browser page. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |4 |true (ByPropertyName)| - - #### **ShutdownWhenHidden** - If set, the browser source will shutdown when it is hidden - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **RestartWhenActived** - If set, the browser source will restart when it is activated. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **RerouteAudio** - If set, audio from the browser source will be rerouted into OBS. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FramesPerSecond** - If provided, the browser source will render at a custom frame rate. - - - - - |Type |Required|Position|PipelineInput |Aliases| |---------|--------|--------|---------------------|-------| |`[Int32]`|false |5 |true (ByPropertyName)|FPS | - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |6 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - -|Type |Required|Position|PipelineInput | -|----------|--------|--------|---------------------| -|`[String]`|false |7 |true (ByPropertyName)| - - +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |7 |true (ByPropertyName)|InputName
SourceName| #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSBrowserSource [[-Uri] ] [[-Width] ] [[-Height] ] [[-CSS] ] [-ShutdownWhenHidden] [-RestartWhenActived] [-RerouteAudio] [[-FramesPerSecond] ] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Add-OBSBulgePinchShader.md b/docs/Add-OBSBulgePinchShader.md new file mode 100644 index 000000000..a0c99f99e --- /dev/null +++ b/docs/Add-OBSBulgePinchShader.md @@ -0,0 +1,107 @@ +Get-OBSBulgePinchShader +----------------------- + +### Synopsis +Get-OBSBulgePinchShader [[-Radius] ] [[-Magnitude] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Magnitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBulgePinchShader [[-Radius] ] [[-Magnitude] ] [[-CenterX] ] [[-CenterY] ] [-Animate ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSBurnShader.md b/docs/Add-OBSBurnShader.md new file mode 100644 index 000000000..db2f92fb7 --- /dev/null +++ b/docs/Add-OBSBurnShader.md @@ -0,0 +1,137 @@ +Get-OBSBurnShader +----------------- + +### Synopsis +Get-OBSBurnShader [[-BurnGradient] ] [[-Speed] ] [[-GradientAdjust] ] [[-DissolveValue] ] [[-SmokeHorizonalSpeed] ] [[-SmokeVerticalSpeed] ] [[-Iterations] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-ApplySmoke] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Animated** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ApplySmoke** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |Apply_Smoke| + +#### **ApplyToChannel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Apply_to_Channel| + +#### **BurnGradient** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |Burn_Gradient| + +#### **DissolveValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Dissolve_Value| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientAdjust** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Gradient_Adjust| + +#### **Iterations** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SmokeHorizonalSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |Smoke_Horizonal_Speed| + +#### **SmokeVerticalSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |Smoke_Vertical_Speed| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBurnShader [[-BurnGradient] ] [[-Speed] ] [[-GradientAdjust] ] [[-DissolveValue] ] [-Animated ] [-ApplyToChannel ] [-ApplySmoke ] [[-SmokeHorizonalSpeed] ] [[-SmokeVerticalSpeed] ] [[-Iterations] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSCartoonShader.md b/docs/Add-OBSCartoonShader.md new file mode 100644 index 000000000..14b56e4cb --- /dev/null +++ b/docs/Add-OBSCartoonShader.md @@ -0,0 +1,143 @@ +Get-OBSCartoonShader +-------------------- + +### Synopsis +Get-OBSCartoonShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-HueSteps] ] [[-ValueSteps] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HueSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |hue_steps| + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ValueSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |value_steps| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCartoonShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-HueSteps] ] [[-ValueSteps] ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSCellShadedShader.md b/docs/Add-OBSCellShadedShader.md new file mode 100644 index 000000000..004a4eeca --- /dev/null +++ b/docs/Add-OBSCellShadedShader.md @@ -0,0 +1,95 @@ +Get-OBSCellShadedShader +----------------------- + +### Synopsis +Get-OBSCellShadedShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AmpFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AngleSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |Angle_Steps| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RadiusSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Radius_Steps| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCellShadedShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSChromaUVDistortionShader.md b/docs/Add-OBSChromaUVDistortionShader.md new file mode 100644 index 000000000..036fe326d --- /dev/null +++ b/docs/Add-OBSChromaUVDistortionShader.md @@ -0,0 +1,89 @@ +Get-OBSChromaUVDistortionShader +------------------------------- + +### Synopsis +Get-OBSChromaUVDistortionShader [[-Distortion] ] [[-Amplitude] ] [[-Chroma] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Amplitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Chroma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Distortion** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSChromaUVDistortionShader [[-Distortion] ] [[-Amplitude] ] [[-Chroma] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSChromaticAberrationShader.md b/docs/Add-OBSChromaticAberrationShader.md new file mode 100644 index 000000000..16ec8a6c1 --- /dev/null +++ b/docs/Add-OBSChromaticAberrationShader.md @@ -0,0 +1,119 @@ +Get-OBSChromaticAberrationShader +-------------------------------- + +### Synopsis +Get-OBSChromaticAberrationShader [[-Power] ] [[-Gamma] ] [[-NumIter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DistortRadial] [-DistortBarrel] [-OffsetSpectrumYcgco] [-OffsetSpectrumYuv] [-UseRandom] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DistortBarrel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |distort_barrel| + +#### **DistortRadial** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |distort_radial| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Gamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NumIter** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------| +|`[Int]`|false |named |False |num_iter| + +#### **OffsetSpectrumYcgco** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------------| +|`[Switch]`|false |named |False |offset_spectrum_ycgco| + +#### **OffsetSpectrumYuv** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |offset_spectrum_yuv| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseRandom** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |use_random| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSChromaticAberrationShader [[-Power] ] [[-Gamma] ] [[-NumIter] ] [-DistortRadial ] [-DistortBarrel ] [-OffsetSpectrumYcgco ] [-OffsetSpectrumYuv ] [-UseRandom ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSCircleMaskFilterShader.md b/docs/Add-OBSCircleMaskFilterShader.md new file mode 100644 index 000000000..510c1b8cc --- /dev/null +++ b/docs/Add-OBSCircleMaskFilterShader.md @@ -0,0 +1,107 @@ +Get-OBSCircleMaskFilterShader +----------------------------- + +### Synopsis +Get-OBSCircleMaskFilterShader [[-Radius] ] [[-CircleOffsetX] ] [[-CircleOffsetY] ] [[-SourceOffsetX] ] [[-SourceOffsetY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Antialiasing] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Antialiasing** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CircleOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Circle_Offset_X| + +#### **CircleOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Circle_Offset_Y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SourceOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Source_Offset_X| + +#### **SourceOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Source_Offset_Y| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCircleMaskFilterShader [[-Radius] ] [[-CircleOffsetX] ] [[-CircleOffsetY] ] [[-SourceOffsetX] ] [[-SourceOffsetY] ] [-Antialiasing ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSClockAnalogShader.md b/docs/Add-OBSClockAnalogShader.md new file mode 100644 index 000000000..2cf894bac --- /dev/null +++ b/docs/Add-OBSClockAnalogShader.md @@ -0,0 +1,137 @@ +Get-OBSClockAnalogShader +------------------------ + +### Synopsis +Get-OBSClockAnalogShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-HourHandleColor] ] [[-MinuteHandleColor] ] [[-SecondHandleColor] ] [[-OutlineColor] ] [[-TopLineColor] ] [[-BackgroundColor] ] [[-TimeOffsetHours] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BackgroundColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|----------------| +|`[System.Single[]]`|false |named |False |background_color| + +#### **CurrentTimeHour** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |current_time_hour| + +#### **CurrentTimeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_min| + +#### **CurrentTimeMs** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |current_time_ms| + +#### **CurrentTimeSec** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_sec| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HourHandleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |hour_handle_color| + +#### **MinuteHandleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-------------------| +|`[System.Single[]]`|false |named |False |minute_handle_color| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OutlineColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-------------| +|`[System.Single[]]`|false |named |False |outline_color| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SecondHandleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-------------------| +|`[System.Single[]]`|false |named |False |second_handle_color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeOffsetHours** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |time_offset_hours| + +#### **TopLineColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------------| +|`[System.Single[]]`|false |named |False |top_line_color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSClockAnalogShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-HourHandleColor] ] [[-MinuteHandleColor] ] [[-SecondHandleColor] ] [[-OutlineColor] ] [[-TopLineColor] ] [[-BackgroundColor] ] [[-TimeOffsetHours] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSClockDigitalLedShader.md b/docs/Add-OBSClockDigitalLedShader.md new file mode 100644 index 000000000..5c31ba02b --- /dev/null +++ b/docs/Add-OBSClockDigitalLedShader.md @@ -0,0 +1,131 @@ +Get-OBSClockDigitalLedShader +---------------------------- + +### Synopsis +Get-OBSClockDigitalLedShader [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-LedColor] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowMatrix] [-ShowOff] [-Ampm] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Ampm** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CurrentTimeHour** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |current_time_hour| + +#### **CurrentTimeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_min| + +#### **CurrentTimeSec** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_sec| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LedColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetHours** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **OffsetSeconds** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShowMatrix** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShowOff** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeMode** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSClockDigitalLedShader [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [-ShowMatrix ] [-ShowOff ] [-Ampm ] [[-LedColor] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSClockDigitalNixieShader.md b/docs/Add-OBSClockDigitalNixieShader.md new file mode 100644 index 000000000..5af84a4da --- /dev/null +++ b/docs/Add-OBSClockDigitalNixieShader.md @@ -0,0 +1,143 @@ +Get-OBSClockDigitalNixieShader +------------------------------ + +### Synopsis +Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-Corecolor] ] [[-Halocolor] ] [[-Flarecolor] ] [[-Anodecolor] ] [[-Anodehighlightscolor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Anodecolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Anodehighlightscolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Corecolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **CurrentTimeHour** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |current_time_hour| + +#### **CurrentTimeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_min| + +#### **CurrentTimeMs** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |current_time_ms| + +#### **CurrentTimeSec** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_sec| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Flarecolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Halocolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetHours** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **OffsetSeconds** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeMode** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-Corecolor] ] [[-Halocolor] ] [[-Flarecolor] ] [[-Anodecolor] ] [[-Anodehighlightscolor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSColorCorrectionFilter.md b/docs/Add-OBSColorCorrectionFilter.md index f802f0fdd..5bec94587 100644 --- a/docs/Add-OBSColorCorrectionFilter.md +++ b/docs/Add-OBSColorCorrectionFilter.md @@ -1,17 +1,11 @@ Set-OBSColorFilter ------------------ - - - ### Synopsis Sets a color filter - - --- - ### Description Adds or Changes a Color Correction Filter on an OBS Input. @@ -25,165 +19,85 @@ This allows you to: * Multiply pixels by a color * Add a color to all pixels - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri .\Assets\obs-powershell-animated-icon.svg | Set-OBSColorFilter -Opacity .5 ``` - - --- - ### Parameters #### **Opacity** - The opacity, as a number between 0 and 1. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Brightness** - The brightness, as a number between -1 and 1. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **Contrast** - The constrast, as a number between -4 and 4. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **Gamma** - The gamma correction, as a number between -3 and 3. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |4 |true (ByPropertyName)| - - #### **Saturation** - The saturation, as a number between -1 and 5. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |5 |true (ByPropertyName)| - - #### **Hue** - The change in hue, as represented in degrees around a color cicrle - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Double]`|false |6 |true (ByPropertyName)|Spin | - - #### **MultiplyColor** - Multiply this color by all pixels within the source. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |7 |true (ByPropertyName)| - - #### **AddColor** - Add all this color to all pixels within the source. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |8 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSColorFilter [[-Opacity] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Saturation] ] [[-Hue] ] [[-MultiplyColor] ] [[-AddColor] ] [-Force] [] diff --git a/docs/Add-OBSColorDepthShader.md b/docs/Add-OBSColorDepthShader.md new file mode 100644 index 000000000..7a2c10ffb --- /dev/null +++ b/docs/Add-OBSColorDepthShader.md @@ -0,0 +1,83 @@ +Get-OBSColorDepthShader +----------------------- + +### Synopsis +Get-OBSColorDepthShader [[-ColorDepth] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ColorDepth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixelSize** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSColorDepthShader [[-ColorDepth] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSColorFilter.md b/docs/Add-OBSColorFilter.md index f802f0fdd..5bec94587 100644 --- a/docs/Add-OBSColorFilter.md +++ b/docs/Add-OBSColorFilter.md @@ -1,17 +1,11 @@ Set-OBSColorFilter ------------------ - - - ### Synopsis Sets a color filter - - --- - ### Description Adds or Changes a Color Correction Filter on an OBS Input. @@ -25,165 +19,85 @@ This allows you to: * Multiply pixels by a color * Add a color to all pixels - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri .\Assets\obs-powershell-animated-icon.svg | Set-OBSColorFilter -Opacity .5 ``` - - --- - ### Parameters #### **Opacity** - The opacity, as a number between 0 and 1. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Brightness** - The brightness, as a number between -1 and 1. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **Contrast** - The constrast, as a number between -4 and 4. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **Gamma** - The gamma correction, as a number between -3 and 3. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |4 |true (ByPropertyName)| - - #### **Saturation** - The saturation, as a number between -1 and 5. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |5 |true (ByPropertyName)| - - #### **Hue** - The change in hue, as represented in degrees around a color cicrle - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Double]`|false |6 |true (ByPropertyName)|Spin | - - #### **MultiplyColor** - Multiply this color by all pixels within the source. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |7 |true (ByPropertyName)| - - #### **AddColor** - Add all this color to all pixels within the source. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |8 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSColorFilter [[-Opacity] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Saturation] ] [[-Hue] ] [[-MultiplyColor] ] [[-AddColor] ] [-Force] [] diff --git a/docs/Add-OBSColorGradeFilterShader.md b/docs/Add-OBSColorGradeFilterShader.md new file mode 100644 index 000000000..c6a05c9a1 --- /dev/null +++ b/docs/Add-OBSColorGradeFilterShader.md @@ -0,0 +1,101 @@ +Get-OBSColorGradeFilterShader +----------------------------- + +### Synopsis +Get-OBSColorGradeFilterShader [[-Notes] ] [[-Lut] ] [[-LutAmountPercent] ] [[-LutScalePercent] ] [[-LutOffsetPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Lut** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LutAmountPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------| +|`[Int]`|false |named |False |lut_amount_percent| + +#### **LutOffsetPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------| +|`[Int]`|false |named |False |lut_offset_percent| + +#### **LutScalePercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |lut_scale_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSColorGradeFilterShader [[-Notes] ] [[-Lut] ] [[-LutAmountPercent] ] [[-LutScalePercent] ] [[-LutOffsetPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSColorSource.md b/docs/Add-OBSColorSource.md index 2843dd802..d1f7065f0 100644 --- a/docs/Add-OBSColorSource.md +++ b/docs/Add-OBSColorSource.md @@ -1,105 +1,57 @@ Set-OBSColorSource ------------------ - - - ### Synopsis Adds a color source - - --- - ### Description Adds a color source to OBS. This displays a single 32-bit color (RGBA). - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Parameters #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |1 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |2 |true (ByPropertyName)|InputName| - - #### **Color** - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSColorSource [[-Scene] ] [[-Name] ] [[-Color] ] [-Force] [] diff --git a/docs/Add-OBSCornerPinShader.md b/docs/Add-OBSCornerPinShader.md new file mode 100644 index 000000000..6fc77671d --- /dev/null +++ b/docs/Add-OBSCornerPinShader.md @@ -0,0 +1,125 @@ +Get-OBSCornerPinShader +---------------------- + +### Synopsis +Get-OBSCornerPinShader [[-TopLeftX] ] [[-TopLeftY] ] [[-TopRightX] ] [[-TopRightY] ] [[-BottomLeftX] ] [[-BottomLeftY] ] [[-BottomRightX] ] [[-BottomRightY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AntialiasEdges] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AntialiasEdges** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[Switch]`|false |named |False |Antialias_Edges| + +#### **BottomLeftX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Bottom_Left_X| + +#### **BottomLeftY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Bottom_Left_Y| + +#### **BottomRightX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Bottom_Right_X| + +#### **BottomRightY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Bottom_Right_Y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TopLeftX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Top_Left_X| + +#### **TopLeftY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Top_Left_Y| + +#### **TopRightX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Top_Right_X| + +#### **TopRightY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Top_Right_Y| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCornerPinShader [-AntialiasEdges ] [[-TopLeftX] ] [[-TopLeftY] ] [[-TopRightX] ] [[-TopRightY] ] [[-BottomLeftX] ] [[-BottomLeftY] ] [[-BottomRightX] ] [[-BottomRightY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSCrtCurvatureShader.md b/docs/Add-OBSCrtCurvatureShader.md new file mode 100644 index 000000000..ab0280728 --- /dev/null +++ b/docs/Add-OBSCrtCurvatureShader.md @@ -0,0 +1,89 @@ +Get-OBSCrtCurvatureShader +------------------------- + +### Synopsis +Get-OBSCrtCurvatureShader [[-Strength] ] [[-Border] ] [[-Feathering] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Border** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Feathering** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCrtCurvatureShader [[-Strength] ] [[-Border] ] [[-Feathering] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSCurveShader.md b/docs/Add-OBSCurveShader.md new file mode 100644 index 000000000..b2adf5321 --- /dev/null +++ b/docs/Add-OBSCurveShader.md @@ -0,0 +1,89 @@ +Get-OBSCurveShader +------------------ + +### Synopsis +Get-OBSCurveShader [[-Strength] ] [[-Scale] ] [[-CurveColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CurveColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |curve_color| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCurveShader [[-Strength] ] [[-Scale] ] [[-CurveColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSCutRectPerCornerShader.md b/docs/Add-OBSCutRectPerCornerShader.md new file mode 100644 index 000000000..2afa0f284 --- /dev/null +++ b/docs/Add-OBSCutRectPerCornerShader.md @@ -0,0 +1,125 @@ +Get-OBSCutRectPerCornerShader +----------------------------- + +### Synopsis +Get-OBSCutRectPerCornerShader [[-CornerTl] ] [[-CornerTr] ] [[-CornerBr] ] [[-CornerBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerBl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_bl| + +#### **CornerBr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_br| + +#### **CornerTl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_tl| + +#### **CornerTr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_tr| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCutRectPerCornerShader [[-CornerTl] ] [[-CornerTr] ] [[-CornerBr] ] [[-CornerBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSCylinderShader.md b/docs/Add-OBSCylinderShader.md new file mode 100644 index 000000000..873c78048 --- /dev/null +++ b/docs/Add-OBSCylinderShader.md @@ -0,0 +1,83 @@ +Get-OBSCylinderShader +--------------------- + +### Synopsis +Get-OBSCylinderShader [[-CylinderFactor] ] [[-BackgroundCut] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BackgroundCut** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |background_cut| + +#### **CylinderFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |cylinder_factor| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCylinderShader [[-CylinderFactor] ] [[-BackgroundCut] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDarkenShader.md b/docs/Add-OBSDarkenShader.md new file mode 100644 index 000000000..0d45d9a78 --- /dev/null +++ b/docs/Add-OBSDarkenShader.md @@ -0,0 +1,89 @@ +Get-OBSDarkenShader +------------------- + +### Synopsis +Get-OBSDarkenShader [[-OpacityPercentage] ] [[-FillPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FillPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Fill_Percentage| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OpacityPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |Opacity_Percentage| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDarkenShader [[-OpacityPercentage] ] [[-FillPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDeadPixelFixerShader.md b/docs/Add-OBSDeadPixelFixerShader.md new file mode 100644 index 000000000..7a0e34a40 --- /dev/null +++ b/docs/Add-OBSDeadPixelFixerShader.md @@ -0,0 +1,83 @@ +Get-OBSDeadPixelFixerShader +--------------------------- + +### Synopsis +Get-OBSDeadPixelFixerShader [[-DeadPixelX] ] [[-DeadPixelY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DeadPixelX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Dead_Pixel_X| + +#### **DeadPixelY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Dead_Pixel_Y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDeadPixelFixerShader [[-DeadPixelX] ] [[-DeadPixelY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDensitySatHueShader.md b/docs/Add-OBSDensitySatHueShader.md new file mode 100644 index 000000000..a30556382 --- /dev/null +++ b/docs/Add-OBSDensitySatHueShader.md @@ -0,0 +1,197 @@ +Get-OBSDensitySatHueShader +-------------------------- + +### Synopsis +Get-OBSDensitySatHueShader [[-Notes] ] [[-DensityR] ] [[-SaturationR] ] [[-HueShiftR] ] [[-DensityY] ] [[-SaturationY] ] [[-HueShiftY] ] [[-DensityG] ] [[-SaturationG] ] [[-HueShiftG] ] [[-DensityC] ] [[-SaturationC] ] [[-HueShiftC] ] [[-DensityB] ] [[-SaturationB] ] [[-HueShiftB] ] [[-DensityM] ] [[-SaturationM] ] [[-HueShiftM] ] [[-GlobalDensity] ] [[-GlobalSaturation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DensityB** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_b| + +#### **DensityC** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_c| + +#### **DensityG** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_g| + +#### **DensityM** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_m| + +#### **DensityR** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_r| + +#### **DensityY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlobalDensity** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |global_density| + +#### **GlobalSaturation** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |global_saturation| + +#### **HueShiftB** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_b| + +#### **HueShiftC** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_c| + +#### **HueShiftG** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_g| + +#### **HueShiftM** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_m| + +#### **HueShiftR** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_r| + +#### **HueShiftY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_y| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SaturationB** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_b| + +#### **SaturationC** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_c| + +#### **SaturationG** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_g| + +#### **SaturationM** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_m| + +#### **SaturationR** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_r| + +#### **SaturationY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_y| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDensitySatHueShader [[-Notes] ] [[-DensityR] ] [[-SaturationR] ] [[-HueShiftR] ] [[-DensityY] ] [[-SaturationY] ] [[-HueShiftY] ] [[-DensityG] ] [[-SaturationG] ] [[-HueShiftG] ] [[-DensityC] ] [[-SaturationC] ] [[-HueShiftC] ] [[-DensityB] ] [[-SaturationB] ] [[-HueShiftB] ] [[-DensityM] ] [[-SaturationM] ] [[-HueShiftM] ] [[-GlobalDensity] ] [[-GlobalSaturation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDiffuseTransitionShader.md b/docs/Add-OBSDiffuseTransitionShader.md new file mode 100644 index 000000000..75675e21b --- /dev/null +++ b/docs/Add-OBSDiffuseTransitionShader.md @@ -0,0 +1,101 @@ +Get-OBSDiffuseTransitionShader +------------------------------ + +### Synopsis +Get-OBSDiffuseTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-NumSamples] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NumSamples** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |num_samples| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDiffuseTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-NumSamples] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDigitalRainShader.md b/docs/Add-OBSDigitalRainShader.md new file mode 100644 index 000000000..7260531c5 --- /dev/null +++ b/docs/Add-OBSDigitalRainShader.md @@ -0,0 +1,107 @@ +Get-OBSDigitalRainShader +------------------------ + +### Synopsis +Get-OBSDigitalRainShader [[-Font] ] [[-Noise] ] [[-BaseColor] ] [[-RainSpeed] ] [[-CharSpeed] ] [[-GlowContrast] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BaseColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |base_color| + +#### **CharSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |char_speed| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Font** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlowContrast** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |glow_contrast| + +#### **Noise** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RainSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |rain_speed| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDigitalRainShader [[-Font] ] [[-Noise] ] [[-BaseColor] ] [[-RainSpeed] ] [[-CharSpeed] ] [[-GlowContrast] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDisplaySource.md b/docs/Add-OBSDisplaySource.md index 903898e90..7cc9aa3b9 100644 --- a/docs/Add-OBSDisplaySource.md +++ b/docs/Add-OBSDisplaySource.md @@ -1,129 +1,75 @@ Set-OBSDisplaySource -------------------- - - - ### Synopsis Adds a display source - - --- - ### Description Adds a display source to OBS. This captures the contents of the display. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Add-OBSDisplaySource # Adds a display source of the primary monitor ``` +> EXAMPLE 2 -#### EXAMPLE 2 ```PowerShell Add-OBSDisplaySource -Display 2 # Adds a display source of the second monitor ``` - - --- - ### Parameters #### **Monitor** - The monitor number. This the number of the monitor you would like to capture. - - - - - |Type |Required|Position|PipelineInput |Aliases | |---------|--------|--------|---------------------|-------------------------------------------| |`[Int32]`|false |1 |true (ByPropertyName)|MonitorNumber
Display
DisplayNumber| - - #### **CaptureCursor** - If set, will capture the cursor. This will be set by default. If explicitly set to false, the cursor will not be captured. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |2 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |3 |true (ByPropertyName)|InputName| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSDisplaySource [[-Monitor] ] [-CaptureCursor] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Add-OBSDivideRotateShader.md b/docs/Add-OBSDivideRotateShader.md new file mode 100644 index 000000000..38615db21 --- /dev/null +++ b/docs/Add-OBSDivideRotateShader.md @@ -0,0 +1,101 @@ +Get-OBSDivideRotateShader +------------------------- + +### Synopsis +Get-OBSDivideRotateShader [[-IChannel0] ] [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |alpha_percentage| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **IChannel0** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |speed_percentage| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDivideRotateShader [[-IChannel0] ] [[-SpeedPercentage] ] [[-AlphaPercentage] ] [-ApplyToAlphaLayer ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDoodleShader.md b/docs/Add-OBSDoodleShader.md new file mode 100644 index 000000000..9727fc2fe --- /dev/null +++ b/docs/Add-OBSDoodleShader.md @@ -0,0 +1,137 @@ +Get-OBSDoodleShader +------------------- + +### Synopsis +Get-OBSDoodleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-DoodleScalePercent] ] [[-SnapPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DoodleScalePercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |Doodle_Scale_Percent| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SnapPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |Snap_Percent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDoodleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-DoodleScalePercent] ] [[-SnapPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDrawingsShader.md b/docs/Add-OBSDrawingsShader.md new file mode 100644 index 000000000..825061a5e --- /dev/null +++ b/docs/Add-OBSDrawingsShader.md @@ -0,0 +1,83 @@ +Get-OBSDrawingsShader +--------------------- + +### Synopsis +Get-OBSDrawingsShader [[-AngleNum] ] [[-SampNum] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AngleNum** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SampNum** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDrawingsShader [[-AngleNum] ] [[-SampNum] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDropShadowShader.md b/docs/Add-OBSDropShadowShader.md new file mode 100644 index 000000000..70e474ccf --- /dev/null +++ b/docs/Add-OBSDropShadowShader.md @@ -0,0 +1,107 @@ +Get-OBSDropShadowShader +----------------------- + +### Synopsis +Get-OBSDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-Notes] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **IsAlphaPremultiplied** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------------| +|`[Switch]`|false |named |False |is_alpha_premultiplied| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShadowBlurSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |shadow_blur_size| + +#### **ShadowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |shadow_color| + +#### **ShadowOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_x| + +#### **ShadowOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_y| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-Notes] ] [[-ShadowColor] ] [-IsAlphaPremultiplied ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDrunkShader.md b/docs/Add-OBSDrunkShader.md new file mode 100644 index 000000000..7a27a5548 --- /dev/null +++ b/docs/Add-OBSDrunkShader.md @@ -0,0 +1,137 @@ +Get-OBSDrunkShader +------------------ + +### Synopsis +Get-OBSDrunkShader [[-ColorMatrix] ] [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeedPercent] ] [[-GlowColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **Blur** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |glow_color| + +#### **GlowPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |glow_percent| + +#### **MaxBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |max_brightness| + +#### **MinBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |min_brightness| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------------| +|`[Int]`|false |named |False |pulse_speed_percent| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDrunkShader [[-ColorMatrix] ] [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeedPercent] ] [-ApplyToAlphaLayer ] [[-GlowColor] ] [-Ease ] [-Glitch ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSDynamicMaskShader.md b/docs/Add-OBSDynamicMaskShader.md new file mode 100644 index 000000000..895c8d20a --- /dev/null +++ b/docs/Add-OBSDynamicMaskShader.md @@ -0,0 +1,221 @@ +Get-OBSDynamicMaskShader +------------------------ + +### Synopsis +Get-OBSDynamicMaskShader [[-InputSource] ] [[-RedBaseValue] ] [[-RedRedInputValue] ] [[-RedGreenInputValue] ] [[-RedBlueInputValue] ] [[-RedAlphaInputValue] ] [[-RedMultiplier] ] [[-GreenBaseValue] ] [[-GreenRedInputValue] ] [[-GreenGreenInputValue] ] [[-GreenBlueInputValue] ] [[-GreenAlphaInputValue] ] [[-GreenMultiplier] ] [[-BlueBaseValue] ] [[-BlueRedInputValue] ] [[-BlueGreenInputValue] ] [[-BlueBlueInputValue] ] [[-BlueAlphaInputValue] ] [[-BlueMultiplier] ] [[-AlphaBaseValue] ] [[-AlphaRedInputValue] ] [[-AlphaGreenInputValue] ] [[-AlphaBlueInputValue] ] [[-AlphaAlphaInputValue] ] [[-AlphaMultiplier] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |alpha_alpha_input_value| + +#### **AlphaBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |alpha_base_value| + +#### **AlphaBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |alpha_blue_input_value| + +#### **AlphaGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |alpha_green_input_value| + +#### **AlphaMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |alpha_multiplier| + +#### **AlphaRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |alpha_red_input_value| + +#### **BlueAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |blue_alpha_input_value| + +#### **BlueBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |blue_base_value| + +#### **BlueBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |blue_blue_input_value| + +#### **BlueGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |blue_green_input_value| + +#### **BlueMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |blue_multiplier| + +#### **BlueRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |blue_red_input_value| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GreenAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |green_alpha_input_value| + +#### **GreenBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |green_base_value| + +#### **GreenBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |green_blue_input_value| + +#### **GreenGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |green_green_input_value| + +#### **GreenMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |green_multiplier| + +#### **GreenRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |green_red_input_value| + +#### **InputSource** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |input_source| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RedAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |red_alpha_input_value| + +#### **RedBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |red_base_value| + +#### **RedBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |red_blue_input_value| + +#### **RedGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |red_green_input_value| + +#### **RedMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |red_multiplier| + +#### **RedRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------------| +|`[Float]`|false |named |False |red_red_input_value| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDynamicMaskShader [[-InputSource] ] [[-RedBaseValue] ] [[-RedRedInputValue] ] [[-RedGreenInputValue] ] [[-RedBlueInputValue] ] [[-RedAlphaInputValue] ] [[-RedMultiplier] ] [[-GreenBaseValue] ] [[-GreenRedInputValue] ] [[-GreenGreenInputValue] ] [[-GreenBlueInputValue] ] [[-GreenAlphaInputValue] ] [[-GreenMultiplier] ] [[-BlueBaseValue] ] [[-BlueRedInputValue] ] [[-BlueGreenInputValue] ] [[-BlueBlueInputValue] ] [[-BlueAlphaInputValue] ] [[-BlueMultiplier] ] [[-AlphaBaseValue] ] [[-AlphaRedInputValue] ] [[-AlphaGreenInputValue] ] [[-AlphaBlueInputValue] ] [[-AlphaAlphaInputValue] ] [[-AlphaMultiplier] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSEdgeDetectionShader.md b/docs/Add-OBSEdgeDetectionShader.md new file mode 100644 index 000000000..8be8a6643 --- /dev/null +++ b/docs/Add-OBSEdgeDetectionShader.md @@ -0,0 +1,137 @@ +Get-OBSEdgeDetectionShader +-------------------------- + +### Synopsis +Get-OBSEdgeDetectionShader [[-Sensitivity] ] [[-EdgeColor] ] [[-NonEdgeColor] ] [[-AlphaLevel] ] [[-RandF] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertEdge] [-EdgeMultiply] [-NonEdgeMultiply] [-AlphaChannel] [-AlphaInvert] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaChannel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |alpha_channel| + +#### **AlphaInvert** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |alpha_invert| + +#### **AlphaLevel** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |alpha_level| + +#### **EdgeColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |edge_color| + +#### **EdgeMultiply** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |edge_multiply| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertEdge** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |invert_edge| + +#### **NonEdgeColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[String]`|false |named |False |non_edge_color| + +#### **NonEdgeMultiply** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |non_edge_multiply| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **Sensitivity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEdgeDetectionShader [[-Sensitivity] ] [-InvertEdge ] [[-EdgeColor] ] [-EdgeMultiply ] [[-NonEdgeColor] ] [-NonEdgeMultiply ] [-AlphaChannel ] [[-AlphaLevel] ] [-AlphaInvert ] [[-RandF] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSEmbersShader.md b/docs/Add-OBSEmbersShader.md new file mode 100644 index 000000000..b20dd9715 --- /dev/null +++ b/docs/Add-OBSEmbersShader.md @@ -0,0 +1,203 @@ +Get-OBSEmbersShader +------------------- + +### Synopsis +Get-OBSEmbersShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-AnimationSpeed] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-MovementSpeedPercent] ] [[-LayersCount] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **AnimationSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Animation_Speed| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LayersCount** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Layers_Count| + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MovementDirectionHorizontal** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |Movement_Direction_Horizontal| + +#### **MovementDirectionVertical** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------------| +|`[Float]`|false |named |False |Movement_Direction_Vertical| + +#### **MovementSpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------------| +|`[Int]`|false |named |False |Movement_Speed_Percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEmbersShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-AnimationSpeed] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-MovementSpeedPercent] ] [[-LayersCount] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-AlphaPercentage] ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSEmbossColorShader.md b/docs/Add-OBSEmbossColorShader.md new file mode 100644 index 000000000..2094b0100 --- /dev/null +++ b/docs/Add-OBSEmbossColorShader.md @@ -0,0 +1,107 @@ +Get-OBSEmbossColorShader +------------------------ + +### Synopsis +Get-OBSEmbossColorShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-UpDownPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AmpFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AngleSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |Angle_Steps| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RadiusSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Radius_Steps| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UpDownPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Up_Down_Percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEmbossColorShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-UpDownPercent] ] [-ApplyToAlphaLayer ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSEmbossShader.md b/docs/Add-OBSEmbossShader.md new file mode 100644 index 000000000..b054d901f --- /dev/null +++ b/docs/Add-OBSEmbossShader.md @@ -0,0 +1,83 @@ +Get-OBSEmbossShader +------------------- + +### Synopsis +Get-OBSEmbossShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-UseColor] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[Switch]`|false |named |False |Use_Color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEmbossShader [-UseColor ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSEqualizierFilter.md b/docs/Add-OBSEqualizierFilter.md index d85e58239..50fa44f21 100644 --- a/docs/Add-OBSEqualizierFilter.md +++ b/docs/Add-OBSEqualizierFilter.md @@ -1,93 +1,49 @@ Set-OBSEqualizerFilter ---------------------- - - - ### Synopsis Sets a Equalizer filter. - - --- - ### Description Adds or Changes a 3-band Equalizer Filter on an OBS Input. - - --- - ### Parameters #### **Low** - The change in low frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Mid** - The change in mid frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **High** - The change in high frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSEqualizerFilter [[-Low] ] [[-Mid] ] [[-High] ] [-Force] [] diff --git a/docs/Add-OBSExeldroBentCameraShader.md b/docs/Add-OBSExeldroBentCameraShader.md new file mode 100644 index 000000000..d38ae0a1d --- /dev/null +++ b/docs/Add-OBSExeldroBentCameraShader.md @@ -0,0 +1,131 @@ +Get-OBSExeldroBentCameraShader +------------------------------ + +### Synopsis +Get-OBSExeldroBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LeftFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_flip_shadow| + +#### **LeftFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_flip_width| + +#### **LeftSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_side_shadow| + +#### **LeftSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |left_side_size| + +#### **LeftSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_side_width| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RightFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_flip_shadow| + +#### **RightFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_flip_width| + +#### **RightSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_side_shadow| + +#### **RightSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |right_side_size| + +#### **RightSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_side_width| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSExeldroBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFFMpegSource.md b/docs/Add-OBSFFMpegSource.md index 71c0dd2c6..feebd1e73 100644 --- a/docs/Add-OBSFFMpegSource.md +++ b/docs/Add-OBSFFMpegSource.md @@ -1,216 +1,115 @@ Set-OBSMediaSource ------------------ - - - ### Synopsis Adds a media source - - --- - ### Description Adds a media source to OBS. - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSMediaSource -FilePath My.mp4 ``` - - --- - ### Parameters #### **FilePath** - The path to the media file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-------------------------------------| -|`[String]`|true |1 |true (ByPropertyName)|FullName
LocalFile
local_file| - - +|`[String]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file| #### **CloseWhenInactive** - If set, the source will close when it is inactive. By default, this will be set to true. To explicitly set it to false, use -CloseWhenInactive:$false - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Loop** - If set, the source will automatically restart. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Switch]`|false |named |true (ByPropertyName)|Looping| - - #### **UseHardwareDecoding** - If set, will use hardware decoding, if available. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|HardwareDecoding
hw_decode| - - #### **ClearOnMediaEnd** - If set, will clear the output on the end of the media. If this is set to false, the media will freeze on the last frame. This is set to true by default. To explicitly set to false, use -ClearMediaEnd:$false - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|ClearOnEnd
NoFreezeFrameOnEnd| - - #### **FFMpegOption** - Any FFMpeg demuxer options. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|--------------------------------| |`[String]`|false |2 |true (ByPropertyName)|FFMpegOptions
FFMpeg_Options| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |4 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FitToScreen** - If set, will fit the input to the screen. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell -Set-OBSMediaSource [-FilePath] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +Set-OBSMediaSource [[-FilePath] ] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] ``` diff --git a/docs/Add-OBSFadeTransitionShader.md b/docs/Add-OBSFadeTransitionShader.md new file mode 100644 index 000000000..9ac586e6c --- /dev/null +++ b/docs/Add-OBSFadeTransitionShader.md @@ -0,0 +1,95 @@ +Get-OBSFadeTransitionShader +--------------------------- + +### Synopsis +Get-OBSFadeTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFadeTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFillColorGradientShader.md b/docs/Add-OBSFillColorGradientShader.md new file mode 100644 index 000000000..9b821e72f --- /dev/null +++ b/docs/Add-OBSFillColorGradientShader.md @@ -0,0 +1,101 @@ +Get-OBSFillColorGradientShader +------------------------------ + +### Synopsis +Get-OBSFillColorGradientShader [[-Fill] ] [[-GradientWidth] ] [[-GradientOffset] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Gradient_Offset| + +#### **GradientWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Gradient_Width| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorGradientShader [[-Fill] ] [[-GradientWidth] ] [[-GradientOffset] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFillColorLinearShader.md b/docs/Add-OBSFillColorLinearShader.md new file mode 100644 index 000000000..7f2c04005 --- /dev/null +++ b/docs/Add-OBSFillColorLinearShader.md @@ -0,0 +1,89 @@ +Get-OBSFillColorLinearShader +---------------------------- + +### Synopsis +Get-OBSFillColorLinearShader [[-Fill] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorLinearShader [[-Fill] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFillColorRadialDegreesShader.md b/docs/Add-OBSFillColorRadialDegreesShader.md new file mode 100644 index 000000000..c57d04d7d --- /dev/null +++ b/docs/Add-OBSFillColorRadialDegreesShader.md @@ -0,0 +1,107 @@ +Get-OBSFillColorRadialDegreesShader +----------------------------------- + +### Synopsis +Get-OBSFillColorRadialDegreesShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_X| + +#### **OffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_Y| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Start_Angle| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorRadialDegreesShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFillColorRadialPercentageShader.md b/docs/Add-OBSFillColorRadialPercentageShader.md new file mode 100644 index 000000000..8dfd505bf --- /dev/null +++ b/docs/Add-OBSFillColorRadialPercentageShader.md @@ -0,0 +1,107 @@ +Get-OBSFillColorRadialPercentageShader +-------------------------------------- + +### Synopsis +Get-OBSFillColorRadialPercentageShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_X| + +#### **OffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_Y| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Start_Angle| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorRadialPercentageShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFilterTemplateShader.md b/docs/Add-OBSFilterTemplateShader.md new file mode 100644 index 000000000..2763f7e3f --- /dev/null +++ b/docs/Add-OBSFilterTemplateShader.md @@ -0,0 +1,149 @@ +Get-OBSFilterTemplateShader +--------------------------- + +### Synopsis +Get-OBSFilterTemplateShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFilterTemplateShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFire3Shader.md b/docs/Add-OBSFire3Shader.md new file mode 100644 index 000000000..2515dc6ac --- /dev/null +++ b/docs/Add-OBSFire3Shader.md @@ -0,0 +1,239 @@ +Get-OBSFire3Shader +------------------ + +### Synopsis +Get-OBSFire3Shader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-AlphaPercentage] ] [[-Speed] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-FlameSize] ] [[-SparkGridHeight] ] [[-FlameModifier] ] [[-FlameTongueSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-FullWidth] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FlameModifier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Flame_Modifier| + +#### **FlameSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Flame_Size| + +#### **FlameTongueSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |Flame_Tongue_Size| + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FullWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |Full_Width| + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Invert** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MovementDirectionHorizontal** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |Movement_Direction_Horizontal| + +#### **MovementDirectionVertical** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------------| +|`[Float]`|false |named |False |Movement_Direction_Vertical| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SparkGridHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |Spark_Grid_Height| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFire3Shader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-AlphaPercentage] ] [[-Speed] ] [-Invert ] [[-LumaMin] ] [[-LumaMinSmooth] ] [-ApplyToImage ] [-ReplaceImageColor ] [[-ColorToReplace] ] [-ApplyToSpecificColor ] [-FullWidth ] [[-FlameSize] ] [[-SparkGridHeight] ] [[-FlameModifier] ] [[-FlameTongueSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFireShader.md b/docs/Add-OBSFireShader.md new file mode 100644 index 000000000..99ce788bb --- /dev/null +++ b/docs/Add-OBSFireShader.md @@ -0,0 +1,143 @@ +Get-OBSFireShader +----------------- + +### Synopsis +Get-OBSFireShader [[-AlphaPercentage] ] [[-Speed] ] [[-FlameSize] ] [[-FireType] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FireType** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |Fire_Type| + +#### **FlameSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------| +|`[Int]`|false |named |False |Flame_Size| + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Invert** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFireShader [[-AlphaPercentage] ] [[-Speed] ] [[-FlameSize] ] [[-FireType] ] [-Invert ] [[-LumaMin] ] [[-LumaMinSmooth] ] [-ApplyToImage ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFireworks2Shader.md b/docs/Add-OBSFireworks2Shader.md new file mode 100644 index 000000000..54c300c8e --- /dev/null +++ b/docs/Add-OBSFireworks2Shader.md @@ -0,0 +1,77 @@ +Get-OBSFireworks2Shader +----------------------- + +### Synopsis +Get-OBSFireworks2Shader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFireworks2Shader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFireworksShader.md b/docs/Add-OBSFireworksShader.md new file mode 100644 index 000000000..79ddd0309 --- /dev/null +++ b/docs/Add-OBSFireworksShader.md @@ -0,0 +1,89 @@ +Get-OBSFireworksShader +---------------------- + +### Synopsis +Get-OBSFireworksShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowFlash] [-ShowStars] [-UseTransparancy] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShowFlash** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |show_flash| + +#### **ShowStars** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |show_stars| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UseTransparancy** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |use_transparancy| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFireworksShader [-ShowFlash ] [-ShowStars ] [-UseTransparancy ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFisheyeShader.md b/docs/Add-OBSFisheyeShader.md new file mode 100644 index 000000000..ca4f154b9 --- /dev/null +++ b/docs/Add-OBSFisheyeShader.md @@ -0,0 +1,89 @@ +Get-OBSFisheyeShader +-------------------- + +### Synopsis +Get-OBSFisheyeShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFisheyeShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFisheyeXyShader.md b/docs/Add-OBSFisheyeXyShader.md new file mode 100644 index 000000000..eebe2d2e3 --- /dev/null +++ b/docs/Add-OBSFisheyeXyShader.md @@ -0,0 +1,95 @@ +Get-OBSFisheyeXyShader +---------------------- + +### Synopsis +Get-OBSFisheyeXyShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-PowerX] ] [[-PowerY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PowerX** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |power_x| + +#### **PowerY** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |power_y| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFisheyeXyShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-PowerX] ] [[-PowerY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFlipShader.md b/docs/Add-OBSFlipShader.md new file mode 100644 index 000000000..2ab91e53a --- /dev/null +++ b/docs/Add-OBSFlipShader.md @@ -0,0 +1,83 @@ +Get-OBSFlipShader +----------------- + +### Synopsis +Get-OBSFlipShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Horizontal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFlipShader [-Horizontal ] [-Vertical ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSFrostedGlassShader.md b/docs/Add-OBSFrostedGlassShader.md new file mode 100644 index 000000000..9ec703727 --- /dev/null +++ b/docs/Add-OBSFrostedGlassShader.md @@ -0,0 +1,119 @@ +Get-OBSFrostedGlassShader +------------------------- + +### Synopsis +Get-OBSFrostedGlassShader [[-AlphaPercent] ] [[-Amount] ] [[-Scale] ] [[-BorderOffset] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Alpha_Percent| + +#### **Amount** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |Border_Color| + +#### **BorderOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Border_Offset| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HorizontalBorder** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |Horizontal_Border| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFrostedGlassShader [[-AlphaPercent] ] [[-Amount] ] [[-Scale] ] [-Animate ] [-HorizontalBorder ] [[-BorderOffset] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGainFilter.md b/docs/Add-OBSGainFilter.md index 135986a0d..276404d4c 100644 --- a/docs/Add-OBSGainFilter.md +++ b/docs/Add-OBSGainFilter.md @@ -1,76 +1,46 @@ Set-OBSGainFilter ----------------- - - - ### Synopsis Sets a Gain filter. - - --- - ### Description Adds or Changes a Gain Filter on an OBS Input. This allows you to make the audio louder or softer. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | Set-OBSGainFilter -Gain 1.1 # Gains Audio by 1.1 decibels ``` - - --- - ### Parameters #### **Gain** - The Audio Gain, in decibels. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSGainFilter [[-Gain] ] [-Force] [] diff --git a/docs/Add-OBSGammaCorrectionShader.md b/docs/Add-OBSGammaCorrectionShader.md new file mode 100644 index 000000000..33c7bd29d --- /dev/null +++ b/docs/Add-OBSGammaCorrectionShader.md @@ -0,0 +1,95 @@ +Get-OBSGammaCorrectionShader +---------------------------- + +### Synopsis +Get-OBSGammaCorrectionShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blue** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Green** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Red** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGammaCorrectionShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGaussianBlurAdvancedShader.md b/docs/Add-OBSGaussianBlurAdvancedShader.md new file mode 100644 index 000000000..cafaf8c34 --- /dev/null +++ b/docs/Add-OBSGaussianBlurAdvancedShader.md @@ -0,0 +1,113 @@ +Get-OBSGaussianBlurAdvancedShader +--------------------------------- + +### Synopsis +Get-OBSGaussianBlurAdvancedShader [[-Directions] ] [[-Quality] ] [[-Size] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Directions** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MaskBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Mask_Bottom| + +#### **MaskLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Mask_Left| + +#### **MaskRight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Mask_Right| + +#### **MaskTop** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Mask_Top| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Quality** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **Size** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianBlurAdvancedShader [[-Directions] ] [[-Quality] ] [[-Size] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGaussianBlurShader.md b/docs/Add-OBSGaussianBlurShader.md new file mode 100644 index 000000000..fbe664236 --- /dev/null +++ b/docs/Add-OBSGaussianBlurShader.md @@ -0,0 +1,155 @@ +Get-OBSGaussianBlurShader +------------------------- + +### Synopsis +Get-OBSGaussianBlurShader [[-ViewProj] ] [[-Image] ] [[-ImageSize] ] [[-ImageTexel] ] [[-URadius] ] [[-UDiameter] ] [[-UTexelDelta] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-Kernel] ] [[-KernelTexel] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **ImageSize** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **ImageTexel** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Kernel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **KernelTexel** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixelSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |pixel_size| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UDiameter** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------| +|`[Int]`|false |named |False |u_diameter| + +#### **URadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------| +|`[Int]`|false |named |False |u_radius| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UTexelDelta** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|------------| +|`[System.Single[]]`|false |named |False |u_texelDelta| + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianBlurShader [[-ViewProj] ] [[-Image] ] [[-ImageSize] ] [[-ImageTexel] ] [[-URadius] ] [[-UDiameter] ] [[-UTexelDelta] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-Kernel] ] [[-KernelTexel] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGaussianBlurSimpleShader.md b/docs/Add-OBSGaussianBlurSimpleShader.md new file mode 100644 index 000000000..08cf58d9d --- /dev/null +++ b/docs/Add-OBSGaussianBlurSimpleShader.md @@ -0,0 +1,101 @@ +Get-OBSGaussianBlurSimpleShader +------------------------------- + +### Synopsis +Get-OBSGaussianBlurSimpleShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MaskBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Mask_Bottom| + +#### **MaskLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Mask_Left| + +#### **MaskRight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Mask_Right| + +#### **MaskTop** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Mask_Top| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianBlurSimpleShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGaussianExampleShader.md b/docs/Add-OBSGaussianExampleShader.md new file mode 100644 index 000000000..7fe2a9fc9 --- /dev/null +++ b/docs/Add-OBSGaussianExampleShader.md @@ -0,0 +1,149 @@ +Get-OBSGaussianExampleShader +---------------------------- + +### Synopsis +Get-OBSGaussianExampleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-InitialImage] ] [[-BeforeImage] ] [[-AfterImage] ] [[-TextColor] ] [[-MaxDistance] ] [[-Exp] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AfterImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |after_image| + +#### **BeforeImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |before_image| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **Exp** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **InitialImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |initial_image| + +#### **MaxDistance** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |max_distance| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TextColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |text_color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianExampleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-InitialImage] ] [[-BeforeImage] ] [[-AfterImage] ] [[-TextColor] ] [[-MaxDistance] ] [[-Exp] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGaussianSimpleShader.md b/docs/Add-OBSGaussianSimpleShader.md new file mode 100644 index 000000000..a79364813 --- /dev/null +++ b/docs/Add-OBSGaussianSimpleShader.md @@ -0,0 +1,155 @@ +Get-OBSGaussianSimpleShader +--------------------------- + +### Synopsis +Get-OBSGaussianSimpleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Samples] ] [[-LOD] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **LOD** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **Samples** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianSimpleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Samples] ] [[-LOD] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGbCameraShader.md b/docs/Add-OBSGbCameraShader.md new file mode 100644 index 000000000..00d602a6b --- /dev/null +++ b/docs/Add-OBSGbCameraShader.md @@ -0,0 +1,131 @@ +Get-OBSGbCameraShader +--------------------- + +### Synopsis +Get-OBSGbCameraShader [[-PixelSize] ] [[-DitherFactor] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Color1] ] [[-Color2] ] [[-Color3] ] [[-Color4] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AlternativeBayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlternativeBayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |alternative_bayer| + +#### **Brightness** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Color1** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_1| + +#### **Color2** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_2| + +#### **Color3** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_3| + +#### **Color4** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_4| + +#### **Contrast** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **DitherFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |dither_factor| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Gamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixelSize** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGbCameraShader [[-PixelSize] ] [[-DitherFactor] ] [-AlternativeBayer ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Color1] ] [[-Color2] ] [[-Color3] ] [[-Color4] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGlassShader.md b/docs/Add-OBSGlassShader.md new file mode 100644 index 000000000..a9e640b0a --- /dev/null +++ b/docs/Add-OBSGlassShader.md @@ -0,0 +1,131 @@ +Get-OBSGlassShader +------------------ + +### Synopsis +Get-OBSGlassShader [[-AlphaPercent] ] [[-OffsetAmount] ] [[-XSize] ] [[-YSize] ] [[-ReflectionOffset] ] [[-BorderOffset] ] [[-BorderColor] ] [[-GlassColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Alpha_Percent| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |Border_Color| + +#### **BorderOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Border_Offset| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlassColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |Glass_Color| + +#### **HorizontalBorder** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |Horizontal_Border| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OffsetAmount** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Offset_Amount| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReflectionOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |Reflection_Offset| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **XSize** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **YSize** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlassShader [[-AlphaPercent] ] [[-OffsetAmount] ] [[-XSize] ] [[-YSize] ] [[-ReflectionOffset] ] [-HorizontalBorder ] [[-BorderOffset] ] [[-BorderColor] ] [[-GlassColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGlitchAnalogShader.md b/docs/Add-OBSGlitchAnalogShader.md new file mode 100644 index 000000000..a2d4886f8 --- /dev/null +++ b/docs/Add-OBSGlitchAnalogShader.md @@ -0,0 +1,161 @@ +Get-OBSGlitchAnalogShader +------------------------- + +### Synopsis +Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] ] [[-ScanLineJitterThresholdPercent] ] [[-VerticalJumpAmount] ] [[-VerticalSpeed] ] [[-HorizontalShake] ] [[-ColorDriftAmount] ] [[-ColorDriftSpeed] ] [[-PulseSpeedPercent] ] [[-AlphaPercent] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateColors] [-ApplyToAlphaLayer] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |alpha_percent| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorDriftAmount** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |color_drift_amount| + +#### **ColorDriftSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |color_drift_speed| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HorizontalShake** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |horizontal_shake| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------------| +|`[Int]`|false |named |False |pulse_speed_percent| + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **RotateColors** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |rotate_colors| + +#### **ScanLineJitterDisplacement** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |scan_line_jitter_displacement| + +#### **ScanLineJitterThresholdPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------------------------| +|`[Int]`|false |named |False |scan_line_jitter_threshold_percent| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VerticalJumpAmount** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |vertical_jump_amount| + +#### **VerticalSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |vertical_speed| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] ] [[-ScanLineJitterThresholdPercent] ] [[-VerticalJumpAmount] ] [[-VerticalSpeed] ] [[-HorizontalShake] ] [[-ColorDriftAmount] ] [[-ColorDriftSpeed] ] [[-PulseSpeedPercent] ] [[-AlphaPercent] ] [-RotateColors ] [-ApplyToAlphaLayer ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGlitchShader.md b/docs/Add-OBSGlitchShader.md new file mode 100644 index 000000000..9bd5cfbb6 --- /dev/null +++ b/docs/Add-OBSGlitchShader.md @@ -0,0 +1,83 @@ +Get-OBSGlitchShader +------------------- + +### Synopsis +Get-OBSGlitchShader [[-AMT] ] [[-SPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AMT** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SPEED** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlitchShader [[-AMT] ] [[-SPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGlowShader.md b/docs/Add-OBSGlowShader.md new file mode 100644 index 000000000..46c7373c1 --- /dev/null +++ b/docs/Add-OBSGlowShader.md @@ -0,0 +1,113 @@ +Get-OBSGlowShader +----------------- + +### Synopsis +Get-OBSGlowShader [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blur** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlowPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |glow_percent| + +#### **MaxBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |max_brightness| + +#### **MinBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |min_brightness| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |pulse_speed| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlowShader [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeed] ] [-Ease ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSGradientShader.md b/docs/Add-OBSGradientShader.md new file mode 100644 index 000000000..a4c8f01cf --- /dev/null +++ b/docs/Add-OBSGradientShader.md @@ -0,0 +1,179 @@ +Get-OBSGradientShader +--------------------- + +### Synopsis +Get-OBSGradientShader [[-StartColor] ] [[-StartStep] ] [[-MiddleColor] ] [[-MiddleStep] ] [[-EndColor] ] [[-EndStep] ] [[-AlphaPercent] ] [[-PulseSpeed] ] [[-ColorToReplace] ] [[-GradientCenterWidthPercentage] ] [[-GradientCenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-RotateColors] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |alpha_percent| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **EndColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |end_color| + +#### **EndStep** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |end_step| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientCenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------------------| +|`[Int]`|false |named |False |gradient_center_height_percentage| + +#### **GradientCenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------------------------| +|`[Int]`|false |named |False |gradient_center_width_percentage| + +#### **Horizontal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MiddleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |middle_color| + +#### **MiddleStep** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |middle_step| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |pulse_speed| + +#### **RotateColors** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |rotate_colors| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |start_color| + +#### **StartStep** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |start_step| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGradientShader [[-StartColor] ] [[-StartStep] ] [[-MiddleColor] ] [[-MiddleStep] ] [[-EndColor] ] [[-EndStep] ] [[-AlphaPercent] ] [[-PulseSpeed] ] [-Ease ] [-RotateColors ] [-ApplyToAlphaLayer ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [-Horizontal ] [-Vertical ] [[-GradientCenterWidthPercentage] ] [[-GradientCenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSHalftoneShader.md b/docs/Add-OBSHalftoneShader.md new file mode 100644 index 000000000..f9b030f89 --- /dev/null +++ b/docs/Add-OBSHalftoneShader.md @@ -0,0 +1,77 @@ +Get-OBSHalftoneShader +--------------------- + +### Synopsis +Get-OBSHalftoneShader [[-Threshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Threshold** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHalftoneShader [[-Threshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSHeatWaveSimpleShader.md b/docs/Add-OBSHeatWaveSimpleShader.md new file mode 100644 index 000000000..9c3daead6 --- /dev/null +++ b/docs/Add-OBSHeatWaveSimpleShader.md @@ -0,0 +1,95 @@ +Get-OBSHeatWaveSimpleShader +--------------------------- + +### Synopsis +Get-OBSHeatWaveSimpleShader [[-Rate] ] [[-Strength] ] [[-Distortion] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Distortion** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Rate** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHeatWaveSimpleShader [[-Rate] ] [[-Strength] ] [[-Distortion] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSHexagonShader.md b/docs/Add-OBSHexagonShader.md new file mode 100644 index 000000000..b33cac6d6 --- /dev/null +++ b/docs/Add-OBSHexagonShader.md @@ -0,0 +1,155 @@ +Get-OBSHexagonShader +-------------------- + +### Synopsis +Get-OBSHexagonShader [[-HexColor] ] [[-AlphaPercent] ] [[-Quantity] ] [[-BorderWidth] ] [[-SpeedPercent] ] [[-DistortX] ] [[-DistortY] ] [[-OffsetX] ] [[-OffsetY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Blend] [-Equilateral] [-ZoomAnimate] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |Alpha_Percent| + +#### **Blend** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **BorderWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Border_Width| + +#### **DistortX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Distort_X| + +#### **DistortY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Distort_Y| + +#### **Equilateral** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HexColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |Hex_Color| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_X| + +#### **OffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_Y| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Quantity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |Speed_Percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ZoomAnimate** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Zoom_Animate| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHexagonShader [[-HexColor] ] [[-AlphaPercent] ] [[-Quantity] ] [[-BorderWidth] ] [-Blend ] [-Equilateral ] [-ZoomAnimate ] [[-SpeedPercent] ] [-Glitch ] [[-DistortX] ] [[-DistortY] ] [[-OffsetX] ] [[-OffsetY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSHslHsvSaturationShader.md b/docs/Add-OBSHslHsvSaturationShader.md new file mode 100644 index 000000000..3abdab852 --- /dev/null +++ b/docs/Add-OBSHslHsvSaturationShader.md @@ -0,0 +1,101 @@ +Get-OBSHslHsvSaturationShader +----------------------------- + +### Synopsis +Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] ] [[-HslGamma] ] [[-HsvSaturationFactor] ] [[-HsvGamma] ] [[-AdjustmentOrder] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AdjustmentOrder** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HslGamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **HslSaturationFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **HsvGamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **HsvSaturationFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] ] [[-HslGamma] ] [[-HsvSaturationFactor] ] [[-HsvGamma] ] [[-AdjustmentOrder] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSHueRotatonShader.md b/docs/Add-OBSHueRotatonShader.md new file mode 100644 index 000000000..24140b07f --- /dev/null +++ b/docs/Add-OBSHueRotatonShader.md @@ -0,0 +1,83 @@ +Get-OBSHueRotatonShader +----------------------- + +### Synopsis +Get-OBSHueRotatonShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HueOverride] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HueOverride** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Hue_Override| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHueRotatonShader [[-Speed] ] [-HueOverride ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSInput.md b/docs/Add-OBSInput.md index f8906181f..880b6f2b4 100644 --- a/docs/Add-OBSInput.md +++ b/docs/Add-OBSInput.md @@ -1,152 +1,85 @@ Add-OBSInput ------------ - - - ### Synopsis Add-OBSInput : CreateInput - - --- - ### Description Creates a new input, adding it as a scene item to the specified scene. - Add-OBSInput calls the OBS WebSocket with a request of type CreateInput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createinput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createinput) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to add the input to as a scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to add the input to as a scene item +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputName** - Name of the new input to created - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **InputKind** - The kind of input to be created - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **InputSettings** - Settings object to initialize the input with - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|false |4 |true (ByPropertyName)| - - +|`[PSObject]`|false |5 |true (ByPropertyName)| #### **SceneItemEnabled** - Whether to set the created scene item to enabled or disabled - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Add-OBSInput [-SceneName] [-InputName] [-InputKind] [[-InputSettings] ] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] +Add-OBSInput [[-SceneName] ] [[-SceneUuid] ] [-InputName] [-InputKind] [[-InputSettings] ] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Add-OBSIntensityScopeShader.md b/docs/Add-OBSIntensityScopeShader.md new file mode 100644 index 000000000..392da7346 --- /dev/null +++ b/docs/Add-OBSIntensityScopeShader.md @@ -0,0 +1,83 @@ +Get-OBSIntensityScopeShader +--------------------------- + +### Synopsis +Get-OBSIntensityScopeShader [[-Gain] ] [[-Blend] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blend** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Gain** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSIntensityScopeShader [[-Gain] ] [[-Blend] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSInvertLumaShader.md b/docs/Add-OBSInvertLumaShader.md new file mode 100644 index 000000000..14e1b743a --- /dev/null +++ b/docs/Add-OBSInvertLumaShader.md @@ -0,0 +1,95 @@ +Get-OBSInvertLumaShader +----------------------- + +### Synopsis +Get-OBSInvertLumaShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertColor] [-InvertLuma] [-GammaCorrection] [-TestRamp] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GammaCorrection** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Gamma_Correction| + +#### **InvertColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Invert_Color| + +#### **InvertLuma** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |Invert_Luma| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TestRamp** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[Switch]`|false |named |False |Test_Ramp| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSInvertLumaShader [-InvertColor ] [-InvertLuma ] [-GammaCorrection ] [-TestRamp ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSLuminance2Shader.md b/docs/Add-OBSLuminance2Shader.md new file mode 100644 index 000000000..1b3afb79b --- /dev/null +++ b/docs/Add-OBSLuminance2Shader.md @@ -0,0 +1,119 @@ +Get-OBSLuminance2Shader +----------------------- + +### Synopsis +Get-OBSLuminance2Shader [[-Color] ] [[-LumaMax] ] [[-LumaMin] ] [[-LumaMaxSmooth] ] [[-LumaMinSmooth] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertAlphaChannel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertImageColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LumaMax** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMaxSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSLuminance2Shader [[-Color] ] [[-LumaMax] ] [[-LumaMin] ] [[-LumaMaxSmooth] ] [[-LumaMinSmooth] ] [-InvertImageColor ] [-InvertAlphaChannel ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSLuminanceAlphaShader.md b/docs/Add-OBSLuminanceAlphaShader.md new file mode 100644 index 000000000..ef0f0d526 --- /dev/null +++ b/docs/Add-OBSLuminanceAlphaShader.md @@ -0,0 +1,155 @@ +Get-OBSLuminanceAlphaShader +--------------------------- + +### Synopsis +Get-OBSLuminanceAlphaShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ColorMatrix] ] [[-Color] ] [[-MulVal] ] [[-AddVal] ] [[-Level] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AddVal** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |add_val| + +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **InvertAlphaChannel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Level** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MulVal** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |mul_val| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSLuminanceAlphaShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ColorMatrix] ] [[-Color] ] [[-MulVal] ] [[-AddVal] ] [[-Level] ] [-InvertAlphaChannel ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSLuminanceShader.md b/docs/Add-OBSLuminanceShader.md new file mode 100644 index 000000000..16e34f312 --- /dev/null +++ b/docs/Add-OBSLuminanceShader.md @@ -0,0 +1,101 @@ +Get-OBSLuminanceShader +---------------------- + +### Synopsis +Get-OBSLuminanceShader [[-Color] ] [[-Level] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertAlphaChannel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertImageColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Level** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSLuminanceShader [[-Color] ] [[-Level] ] [-InvertImageColor ] [-InvertAlphaChannel ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSMarkdownSource.md b/docs/Add-OBSMarkdownSource.md new file mode 100644 index 000000000..2d0f0314d --- /dev/null +++ b/docs/Add-OBSMarkdownSource.md @@ -0,0 +1,75 @@ +Set-OBSMarkdownSource +--------------------- + +### Synopsis +Sets a markdown source + +--- + +### Description + +Adds or changes a markdown source in OBS. + +--- + +### Parameters +#### **Markdown** +The markdown text, or the path to a markdown file + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |1 |true (ByPropertyName)| + +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |3 |true (ByPropertyName)| + +#### **CSS** +The css style used to render the markdown. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSMarkdownSource [[-Markdown] ] [[-Width] ] [[-Height] ] [[-CSS] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Add-OBSMatrixShader.md b/docs/Add-OBSMatrixShader.md new file mode 100644 index 000000000..373688964 --- /dev/null +++ b/docs/Add-OBSMatrixShader.md @@ -0,0 +1,185 @@ +Get-OBSMatrixShader +------------------- + +### Synopsis +Get-OBSMatrixShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Mouse] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-Ratio] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertDirection] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **InvertDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Invert_Direction| + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Mouse** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **Ratio** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSMatrixShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Mouse] ] [-InvertDirection ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-Ratio] ] [[-AlphaPercentage] ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSMediaSource.md b/docs/Add-OBSMediaSource.md index 71c0dd2c6..feebd1e73 100644 --- a/docs/Add-OBSMediaSource.md +++ b/docs/Add-OBSMediaSource.md @@ -1,216 +1,115 @@ Set-OBSMediaSource ------------------ - - - ### Synopsis Adds a media source - - --- - ### Description Adds a media source to OBS. - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSMediaSource -FilePath My.mp4 ``` - - --- - ### Parameters #### **FilePath** - The path to the media file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-------------------------------------| -|`[String]`|true |1 |true (ByPropertyName)|FullName
LocalFile
local_file| - - +|`[String]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file| #### **CloseWhenInactive** - If set, the source will close when it is inactive. By default, this will be set to true. To explicitly set it to false, use -CloseWhenInactive:$false - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Loop** - If set, the source will automatically restart. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Switch]`|false |named |true (ByPropertyName)|Looping| - - #### **UseHardwareDecoding** - If set, will use hardware decoding, if available. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|HardwareDecoding
hw_decode| - - #### **ClearOnMediaEnd** - If set, will clear the output on the end of the media. If this is set to false, the media will freeze on the last frame. This is set to true by default. To explicitly set to false, use -ClearMediaEnd:$false - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|ClearOnEnd
NoFreezeFrameOnEnd| - - #### **FFMpegOption** - Any FFMpeg demuxer options. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|--------------------------------| |`[String]`|false |2 |true (ByPropertyName)|FFMpegOptions
FFMpeg_Options| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |4 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FitToScreen** - If set, will fit the input to the screen. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell -Set-OBSMediaSource [-FilePath] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +Set-OBSMediaSource [[-FilePath] ] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] ``` diff --git a/docs/Add-OBSMonitorSource.md b/docs/Add-OBSMonitorSource.md index 903898e90..7cc9aa3b9 100644 --- a/docs/Add-OBSMonitorSource.md +++ b/docs/Add-OBSMonitorSource.md @@ -1,129 +1,75 @@ Set-OBSDisplaySource -------------------- - - - ### Synopsis Adds a display source - - --- - ### Description Adds a display source to OBS. This captures the contents of the display. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Add-OBSDisplaySource # Adds a display source of the primary monitor ``` +> EXAMPLE 2 -#### EXAMPLE 2 ```PowerShell Add-OBSDisplaySource -Display 2 # Adds a display source of the second monitor ``` - - --- - ### Parameters #### **Monitor** - The monitor number. This the number of the monitor you would like to capture. - - - - - |Type |Required|Position|PipelineInput |Aliases | |---------|--------|--------|---------------------|-------------------------------------------| |`[Int32]`|false |1 |true (ByPropertyName)|MonitorNumber
Display
DisplayNumber| - - #### **CaptureCursor** - If set, will capture the cursor. This will be set by default. If explicitly set to false, the cursor will not be captured. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |2 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |3 |true (ByPropertyName)|InputName| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSDisplaySource [[-Monitor] ] [-CaptureCursor] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Add-OBSMultiplyShader.md b/docs/Add-OBSMultiplyShader.md new file mode 100644 index 000000000..76e066219 --- /dev/null +++ b/docs/Add-OBSMultiplyShader.md @@ -0,0 +1,77 @@ +Get-OBSMultiplyShader +--------------------- + +### Synopsis +Get-OBSMultiplyShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OtherImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |other_image| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSMultiplyShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSNightSkyShader.md b/docs/Add-OBSNightSkyShader.md new file mode 100644 index 000000000..d088124c6 --- /dev/null +++ b/docs/Add-OBSNightSkyShader.md @@ -0,0 +1,179 @@ +Get-OBSNightSkyShader +--------------------- + +### Synopsis +Get-OBSNightSkyShader [[-Speed] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-AlphaPercentage] ] [[-NumberStars] ] [[-SKYCOLOR] ] [[-STARCOLOR] ] [[-LIGHTSKY] ] [[-SKYLIGHTNESS] ] [[-MOONCOLOR] ] [[-MoonSize] ] [[-MoonBumpSize] ] [[-MoonPositionX] ] [[-MoonPositionY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IncludeClouds] [-IncludeMoon] [-ApplyToImage] [-ReplaceImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **CenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------------| +|`[Int]`|false |named |False |center_height_percentage| + +#### **CenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------------| +|`[Int]`|false |named |False |center_width_percentage| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **IncludeClouds** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Include_Clouds| + +#### **IncludeMoon** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Include_Moon| + +#### **LIGHTSKY** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |LIGHT_SKY| + +#### **MoonBumpSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |moon_bump_size| + +#### **MOONCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |MOON_COLOR| + +#### **MoonPositionX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Moon_Position_x| + +#### **MoonPositionY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Moon_Position_y| + +#### **MoonSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |moon_size| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NumberStars** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |number_stars| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SKYCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |SKY_COLOR| + +#### **SKYLIGHTNESS** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |SKY_LIGHTNESS| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **STARCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |STAR_COLOR| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSNightSkyShader [[-Speed] ] [-IncludeClouds ] [-IncludeMoon ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-AlphaPercentage] ] [-ApplyToImage ] [-ReplaceImageColor ] [[-NumberStars] ] [[-SKYCOLOR] ] [[-STARCOLOR] ] [[-LIGHTSKY] ] [[-SKYLIGHTNESS] ] [[-MOONCOLOR] ] [[-MoonSize] ] [[-MoonBumpSize] ] [[-MoonPositionX] ] [[-MoonPositionY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSOpacityShader.md b/docs/Add-OBSOpacityShader.md new file mode 100644 index 000000000..950b992be --- /dev/null +++ b/docs/Add-OBSOpacityShader.md @@ -0,0 +1,77 @@ +Get-OBSOpacityShader +-------------------- + +### Synopsis +Get-OBSOpacityShader [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSOpacityShader [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSPagePeelShader.md b/docs/Add-OBSPagePeelShader.md new file mode 100644 index 000000000..5797684b3 --- /dev/null +++ b/docs/Add-OBSPagePeelShader.md @@ -0,0 +1,83 @@ +Get-OBSPagePeelShader +--------------------- + +### Synopsis +Get-OBSPagePeelShader [[-Speed] ] [[-Position] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Position** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPagePeelShader [[-Speed] ] [[-Position] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSPagePeelTransitionShader.md b/docs/Add-OBSPagePeelTransitionShader.md new file mode 100644 index 000000000..04b597945 --- /dev/null +++ b/docs/Add-OBSPagePeelTransitionShader.md @@ -0,0 +1,107 @@ +Get-OBSPagePeelTransitionShader +------------------------------- + +### Synopsis +Get-OBSPagePeelTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-PageColor] ] [[-PageTransparency] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |page_color| + +#### **PageTransparency** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |page_transparency| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPagePeelTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-PageColor] ] [[-PageTransparency] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSPerlinNoiseShader.md b/docs/Add-OBSPerlinNoiseShader.md new file mode 100644 index 000000000..2ed65cd01 --- /dev/null +++ b/docs/Add-OBSPerlinNoiseShader.md @@ -0,0 +1,137 @@ +Get-OBSPerlinNoiseShader +------------------------ + +### Synopsis +Get-OBSPerlinNoiseShader [[-Speed] ] [[-SpeedHorizonal] ] [[-SpeedVertical] ] [[-Iterations] ] [[-WhiteNoise] ] [[-BlackNoise] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-Inverted] [-Multiply] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Animated** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ApplyToChannel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |apply_to_channel| + +#### **BlackNoise** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |black_noise| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Inverted** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Iterations** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **Multiply** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **SpeedHorizonal** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |speed_horizonal| + +#### **SpeedVertical** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |speed_vertical| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **WhiteNoise** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |white_noise| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPerlinNoiseShader [[-Speed] ] [-Animated ] [-ApplyToChannel ] [-Inverted ] [-Multiply ] [[-SpeedHorizonal] ] [[-SpeedVertical] ] [[-Iterations] ] [[-WhiteNoise] ] [[-BlackNoise] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSPieChartShader.md b/docs/Add-OBSPieChartShader.md new file mode 100644 index 000000000..f052dd633 --- /dev/null +++ b/docs/Add-OBSPieChartShader.md @@ -0,0 +1,215 @@ +Get-OBSPieChartShader +--------------------- + +### Synopsis +Get-OBSPieChartShader [[-InnerRadius] ] [[-OuterRadius] ] [[-StartAngle] ] [[-Total] ] [[-Part1] ] [[-Color1] ] [[-Part2] ] [[-Color2] ] [[-Part3] ] [[-Color3] ] [[-Part4] ] [[-Color4] ] [[-Part5] ] [[-Color5] ] [[-Part6] ] [[-Color6] ] [[-Part7] ] [[-Color7] ] [[-Part8] ] [[-Color8] ] [[-Part9] ] [[-Color9] ] [[-Part10] ] [[-Color10] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color1** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_1| + +#### **Color10** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[String]`|false |named |False |color_10| + +#### **Color2** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_2| + +#### **Color3** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_3| + +#### **Color4** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_4| + +#### **Color5** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_5| + +#### **Color6** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_6| + +#### **Color7** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_7| + +#### **Color8** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_8| + +#### **Color9** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_9| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InnerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |inner_radius| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OuterRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |outer_radius| + +#### **Part1** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_1 | + +#### **Part10** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_10| + +#### **Part2** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_2 | + +#### **Part3** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_3 | + +#### **Part4** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_4 | + +#### **Part5** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_5 | + +#### **Part6** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_6 | + +#### **Part7** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_7 | + +#### **Part8** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_8 | + +#### **Part9** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_9 | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |start_angle| + +#### **Total** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPieChartShader [[-InnerRadius] ] [[-OuterRadius] ] [[-StartAngle] ] [[-Total] ] [[-Part1] ] [[-Color1] ] [[-Part2] ] [[-Color2] ] [[-Part3] ] [[-Color3] ] [[-Part4] ] [[-Color4] ] [[-Part5] ] [[-Color5] ] [[-Part6] ] [[-Color6] ] [[-Part7] ] [[-Color7] ] [[-Part8] ] [[-Color8] ] [[-Part9] ] [[-Color9] ] [[-Part10] ] [[-Color10] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSPixelationShader.md b/docs/Add-OBSPixelationShader.md new file mode 100644 index 000000000..ecf125657 --- /dev/null +++ b/docs/Add-OBSPixelationShader.md @@ -0,0 +1,89 @@ +Get-OBSPixelationShader +----------------------- + +### Synopsis +Get-OBSPixelationShader [[-TargetWidth] ] [[-TargetHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TargetHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Target_Height| + +#### **TargetWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |Target_Width| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPixelationShader [[-TargetWidth] ] [[-TargetHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSPixelationTransitionShader.md b/docs/Add-OBSPixelationTransitionShader.md new file mode 100644 index 000000000..3fb035b18 --- /dev/null +++ b/docs/Add-OBSPixelationTransitionShader.md @@ -0,0 +1,101 @@ +Get-OBSPixelationTransitionShader +--------------------------------- + +### Synopsis +Get-OBSPixelationTransitionShader [[-TransitionTime] ] [[-Power] ] [[-CenterX] ] [[-CenterY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPixelationTransitionShader [[-TransitionTime] ] [-ConvertLinear ] [[-Power] ] [[-CenterX] ] [[-CenterY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSPlaylistSource.md b/docs/Add-OBSPlaylistSource.md index 94fb049a5..c5cf3acb8 100644 --- a/docs/Add-OBSPlaylistSource.md +++ b/docs/Add-OBSPlaylistSource.md @@ -1,230 +1,121 @@ Set-OBSVLCSource ---------------- - - - ### Synopsis Adds a VLC playlist source - - --- - ### Description Adds or sets VLC playlist sources to OBS. VLC must be installed for this to work. - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory ``` - - --- - ### Parameters #### **FilePath** - The path to the media file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |------------|--------|--------|---------------------|--------------------------------------------------| -|`[String[]]`|true |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| - - +|`[String[]]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| #### **Select** - What to select in the playlist. If a number is provided, this will select an index. If a string is provided, this will select the whole name or last part of a name, accepting wildcards. If an `[IO.FileInfo]` is provided, this will be the exact file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|--------------------------| |`[Object]`|false |2 |true (ByPropertyName)|SelectIndex
SelectName| - - #### **Shuffle** - If set, will shuffle the playlist - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Loop** - If set, the playlist will loop. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Switch]`|false |named |true (ByPropertyName)|Looping| - - #### **Subtitle** - If set, will show subtitles, if available. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------| |`[Switch]`|false |named |true (ByPropertyName)|ShowSubtitles
Subtitles| - - #### **AudioTrack** - The selected audio track number. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |3 |true (ByPropertyName)| - - #### **SubtitleTrack** - The selected subtitle track number. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |4 |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |5 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |6 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FitToScreen** - If set, will fit the input to the screen. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell -Set-OBSVLCSource [-FilePath] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +Set-OBSVLCSource [[-FilePath] ] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] ``` diff --git a/docs/Add-OBSPolarShader.md b/docs/Add-OBSPolarShader.md new file mode 100644 index 000000000..5897d8ac8 --- /dev/null +++ b/docs/Add-OBSPolarShader.md @@ -0,0 +1,113 @@ +Get-OBSPolarShader +------------------ + +### Synopsis +Get-OBSPolarShader [[-CenterX] ] [[-CenterY] ] [[-PointY] ] [[-Rotate] ] [[-Repeat] ] [[-Scale] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Flip] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Flip** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PointY** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |point_y| + +#### **Repeat** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Rotate** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPolarShader [[-CenterX] ] [[-CenterY] ] [[-PointY] ] [-Flip ] [[-Rotate] ] [[-Repeat] ] [[-Scale] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSProfile.md b/docs/Add-OBSProfile.md index 07234bf23..7a7ff8b3a 100644 --- a/docs/Add-OBSProfile.md +++ b/docs/Add-OBSProfile.md @@ -1,91 +1,49 @@ Add-OBSProfile -------------- - - - ### Synopsis Add-OBSProfile : CreateProfile - - --- - ### Description Creates a new profile, switching to it in the process - Add-OBSProfile calls the OBS WebSocket with a request of type CreateProfile. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createprofile](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createprofile) - - - - --- - ### Parameters #### **ProfileName** - Name for the new profile - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Add-OBSProfile [-ProfileName] [-PassThru] [-NoResponse] [] diff --git a/docs/Add-OBSPulseShader.md b/docs/Add-OBSPulseShader.md new file mode 100644 index 000000000..235344156 --- /dev/null +++ b/docs/Add-OBSPulseShader.md @@ -0,0 +1,137 @@ +Get-OBSPulseShader +------------------ + +### Synopsis +Get-OBSPulseShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **MaxGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |max_growth_pixels| + +#### **MinGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |min_growth_pixels| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPulseShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRGBAPercentShader.md b/docs/Add-OBSRGBAPercentShader.md new file mode 100644 index 000000000..470f8a426 --- /dev/null +++ b/docs/Add-OBSRGBAPercentShader.md @@ -0,0 +1,95 @@ +Get-OBSRGBAPercentShader +------------------------ + +### Synopsis +Get-OBSRGBAPercentShader [[-RedPercent] ] [[-GreenPercent] ] [[-BluePercent] ] [[-AlphaPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BluePercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GreenPercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RedPercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRGBAPercentShader [[-RedPercent] ] [[-GreenPercent] ] [[-BluePercent] ] [[-AlphaPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRGSSAAShader.md b/docs/Add-OBSRGSSAAShader.md new file mode 100644 index 000000000..bed002782 --- /dev/null +++ b/docs/Add-OBSRGSSAAShader.md @@ -0,0 +1,89 @@ +Get-OBSRGSSAAShader +------------------- + +### Synopsis +Get-OBSRGSSAAShader [[-ColorSigma] ] [[-SpatialSigma] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ColorSigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpatialSigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRGSSAAShader [[-ColorSigma] ] [[-SpatialSigma] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRainWindowShader.md b/docs/Add-OBSRainWindowShader.md new file mode 100644 index 000000000..57f5b044c --- /dev/null +++ b/docs/Add-OBSRainWindowShader.md @@ -0,0 +1,107 @@ +Get-OBSRainWindowShader +----------------------- + +### Synopsis +Get-OBSRainWindowShader [[-Size] ] [[-BlurSize] ] [[-TrailStrength] ] [[-TrailColor] ] [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DebugShader] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BlurSize** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **DebugShader** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **Size** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **TrailColor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |trail_color| + +#### **TrailStrength** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |trail_strength| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRainWindowShader [[-Size] ] [[-BlurSize] ] [[-TrailStrength] ] [[-TrailColor] ] [[-Speed] ] [-DebugShader ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRainbowShader.md b/docs/Add-OBSRainbowShader.md new file mode 100644 index 000000000..36220daae --- /dev/null +++ b/docs/Add-OBSRainbowShader.md @@ -0,0 +1,149 @@ +Get-OBSRainbowShader +-------------------- + +### Synopsis +Get-OBSRainbowShader [[-Saturation] ] [[-Luminosity] ] [[-Spread] ] [[-Speed] ] [[-AlphaPercentage] ] [[-RotationOffset] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Luminosity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **Rotational** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RotationOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Rotation_Offset| + +#### **Saturation** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Spread** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRainbowShader [[-Saturation] ] [[-Luminosity] ] [[-Spread] ] [[-Speed] ] [[-AlphaPercentage] ] [-Vertical ] [-Rotational ] [[-RotationOffset] ] [-ApplyToImage ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRectangularDropShadowShader.md b/docs/Add-OBSRectangularDropShadowShader.md new file mode 100644 index 000000000..a583748d5 --- /dev/null +++ b/docs/Add-OBSRectangularDropShadowShader.md @@ -0,0 +1,95 @@ +Get-OBSRectangularDropShadowShader +---------------------------------- + +### Synopsis +Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShadowBlurSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |shadow_blur_size| + +#### **ShadowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |shadow_color| + +#### **ShadowOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_x| + +#### **ShadowOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_y| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSReflectShader.md b/docs/Add-OBSReflectShader.md new file mode 100644 index 000000000..0c8c374d2 --- /dev/null +++ b/docs/Add-OBSReflectShader.md @@ -0,0 +1,95 @@ +Get-OBSReflectShader +-------------------- + +### Synopsis +Get-OBSReflectShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Horizontal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSReflectShader [-Horizontal ] [-Vertical ] [[-CenterXPercent] ] [[-CenterYPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRemovePartialPixelsShader.md b/docs/Add-OBSRemovePartialPixelsShader.md new file mode 100644 index 000000000..95bacf4d8 --- /dev/null +++ b/docs/Add-OBSRemovePartialPixelsShader.md @@ -0,0 +1,83 @@ +Get-OBSRemovePartialPixelsShader +-------------------------------- + +### Synopsis +Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MinimumAlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------| +|`[Int]`|false |named |False |minimum_alpha_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRenderDelayFilter.md b/docs/Add-OBSRenderDelayFilter.md index 4510cee58..03c9231c6 100644 --- a/docs/Add-OBSRenderDelayFilter.md +++ b/docs/Add-OBSRenderDelayFilter.md @@ -1,76 +1,46 @@ Set-OBSRenderDelayFilter ------------------------ - - - ### Synopsis Sets a RenderDelay filter. - - --- - ### Description Adds or Changes a RenderDelay Filter on an OBS Input. This changes the RenderDelay of an image. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | Set-OBSRenderDelayFilter -RenderDelay .75 ``` - - --- - ### Parameters #### **RenderDelay** - The RenderDelay. - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[TimeSpan]`|false |1 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSRenderDelayFilter [[-RenderDelay] ] [-Force] [] diff --git a/docs/Add-OBSRepeatShader.md b/docs/Add-OBSRepeatShader.md new file mode 100644 index 000000000..d65e1f118 --- /dev/null +++ b/docs/Add-OBSRepeatShader.md @@ -0,0 +1,155 @@ +Get-OBSRepeatShader +------------------- + +### Synopsis +Get-OBSRepeatShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Alpha] ] [[-Copies] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Alpha** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **ColorRangeMax** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_max| + +#### **ColorRangeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_min| + +#### **Copies** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRepeatShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Alpha] ] [[-Copies] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRepeatTextureShader.md b/docs/Add-OBSRepeatTextureShader.md new file mode 100644 index 000000000..e1eb176c7 --- /dev/null +++ b/docs/Add-OBSRepeatTextureShader.md @@ -0,0 +1,167 @@ +Get-OBSRepeatTextureShader +-------------------------- + +### Synopsis +Get-OBSRepeatTextureShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-TexImage] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Blend] ] [[-Copies] ] [[-Notes] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |alpha_percentage| + +#### **Blend** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **ColorRangeMax** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_max| + +#### **ColorRangeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_min| + +#### **Copies** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TexImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |tex_image| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRepeatTextureShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-TexImage] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Blend] ] [[-Copies] ] [[-Notes] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRgbColorWheelShader.md b/docs/Add-OBSRgbColorWheelShader.md new file mode 100644 index 000000000..92f676011 --- /dev/null +++ b/docs/Add-OBSRgbColorWheelShader.md @@ -0,0 +1,125 @@ +Get-OBSRgbColorWheelShader +-------------------------- + +### Synopsis +Get-OBSRgbColorWheelShader [[-Speed] ] [[-ColorDepth] ] [[-ColorToReplace] ] [[-AlphaPercentage] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **CenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------------| +|`[Int]`|false |named |False |center_height_percentage| + +#### **CenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------------| +|`[Int]`|false |named |False |center_width_percentage| + +#### **ColorDepth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |color_depth| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRgbColorWheelShader [[-Speed] ] [[-ColorDepth] ] [-ApplyToImage ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-AlphaPercentage] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRgbSplitShader.md b/docs/Add-OBSRgbSplitShader.md new file mode 100644 index 000000000..1ccf4fceb --- /dev/null +++ b/docs/Add-OBSRgbSplitShader.md @@ -0,0 +1,107 @@ +Get-OBSRgbSplitShader +--------------------- + +### Synopsis +Get-OBSRgbSplitShader [[-Redx] ] [[-Redy] ] [[-Greenx] ] [[-Greeny] ] [[-Bluex] ] [[-Bluey] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Bluex** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Bluey** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Greenx** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Greeny** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Redx** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Redy** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRgbSplitShader [[-Redx] ] [[-Redy] ] [[-Greenx] ] [[-Greeny] ] [[-Bluex] ] [[-Bluey] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRgbvisibilityShader.md b/docs/Add-OBSRgbvisibilityShader.md new file mode 100644 index 000000000..83716a07b --- /dev/null +++ b/docs/Add-OBSRgbvisibilityShader.md @@ -0,0 +1,113 @@ +Get-OBSRgbvisibilityShader +-------------------------- + +### Synopsis +Get-OBSRgbvisibilityShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-RedVisibility] ] [[-GreenVisibility] ] [[-BlueVisibility] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blue** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BlueVisibility** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Green** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **GreenVisibility** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Red** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **RedVisibility** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRgbvisibilityShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-RedVisibility] ] [[-GreenVisibility] ] [[-BlueVisibility] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRippleShader.md b/docs/Add-OBSRippleShader.md new file mode 100644 index 000000000..d2ae46e4a --- /dev/null +++ b/docs/Add-OBSRippleShader.md @@ -0,0 +1,101 @@ +Get-OBSRippleShader +------------------- + +### Synopsis +Get-OBSRippleShader [[-DistanceFactor] ] [[-TimeFactor] ] [[-PowerFactor] ] [[-CenterPosX] ] [[-CenterPosY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterPosX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |center_pos_x| + +#### **CenterPosY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |center_pos_y| + +#### **DistanceFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |distance_factor| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PowerFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |power_factor| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |time_factor| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRippleShader [[-DistanceFactor] ] [[-TimeFactor] ] [[-PowerFactor] ] [[-CenterPosX] ] [[-CenterPosY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRotatingSourceShader.md b/docs/Add-OBSRotatingSourceShader.md new file mode 100644 index 000000000..263f7faf1 --- /dev/null +++ b/docs/Add-OBSRotatingSourceShader.md @@ -0,0 +1,107 @@ +Get-OBSRotatingSourceShader +--------------------------- + +### Synopsis +Get-OBSRotatingSourceShader [[-SpinSpeed] ] [[-Rotation] ] [[-Zoomin] ] [[-XCenter] ] [[-YCenter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-KeepAspectratio] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **KeepAspectratio** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |keep_aspectratio| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Rotation** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpinSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |spin_speed| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **XCenter** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |x_center| + +#### **YCenter** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |y_center| + +#### **Zoomin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRotatingSourceShader [[-SpinSpeed] ] [[-Rotation] ] [[-Zoomin] ] [-KeepAspectratio ] [[-XCenter] ] [[-YCenter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRotatoeShader.md b/docs/Add-OBSRotatoeShader.md new file mode 100644 index 000000000..689971ec5 --- /dev/null +++ b/docs/Add-OBSRotatoeShader.md @@ -0,0 +1,185 @@ +Get-OBSRotatoeShader +-------------------- + +### Synopsis +Get-OBSRotatoeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-SpeedPercent] ] [[-AxisX] ] [[-AxisY] ] [[-AxisZ] ] [[-AngleDegrees] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateTransform] [-RotatePixels] [-RotateColors] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AngleDegrees** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Angle_Degrees| + +#### **AxisX** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |Axis_X | + +#### **AxisY** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |Axis_Y | + +#### **AxisZ** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |Axis_Z | + +#### **CenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------------| +|`[Int]`|false |named |False |center_height_percentage| + +#### **CenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------------| +|`[Int]`|false |named |False |center_width_percentage| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RotateColors** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |Rotate_Colors| + +#### **RotatePixels** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |Rotate_Pixels| + +#### **RotateTransform** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Rotate_Transform| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRotatoeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-SpeedPercent] ] [[-AxisX] ] [[-AxisY] ] [[-AxisZ] ] [[-AngleDegrees] ] [-RotateTransform ] [-RotatePixels ] [-RotateColors ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRoundedRect2Shader.md b/docs/Add-OBSRoundedRect2Shader.md new file mode 100644 index 000000000..0e83e6f59 --- /dev/null +++ b/docs/Add-OBSRoundedRect2Shader.md @@ -0,0 +1,113 @@ +Get-OBSRoundedRect2Shader +------------------------- + +### Synopsis +Get-OBSRoundedRect2Shader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-FasterScan] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FasterScan** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |faster_scan| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRect2Shader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [-FasterScan ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRoundedRectPerCornerShader.md b/docs/Add-OBSRoundedRectPerCornerShader.md new file mode 100644 index 000000000..96e2b3661 --- /dev/null +++ b/docs/Add-OBSRoundedRectPerCornerShader.md @@ -0,0 +1,125 @@ +Get-OBSRoundedRectPerCornerShader +--------------------------------- + +### Synopsis +Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] ] [[-CornerRadiusTr] ] [[-CornerRadiusBr] ] [[-CornerRadiusBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadiusBl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_bl| + +#### **CornerRadiusBr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_br| + +#### **CornerRadiusTl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_tl| + +#### **CornerRadiusTr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_tr| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] ] [[-CornerRadiusTr] ] [[-CornerRadiusBr] ] [[-CornerRadiusBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRoundedRectPerSideShader.md b/docs/Add-OBSRoundedRectPerSideShader.md new file mode 100644 index 000000000..e86e8cbc7 --- /dev/null +++ b/docs/Add-OBSRoundedRectPerSideShader.md @@ -0,0 +1,125 @@ +Get-OBSRoundedRectPerSideShader +------------------------------- + +### Synopsis +Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] ] [[-CornerRadiusLeft] ] [[-CornerRadiusTop] ] [[-CornerRadiusRight] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadiusBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------------| +|`[Int]`|false |named |False |corner_radius_bottom| + +#### **CornerRadiusLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------| +|`[Int]`|false |named |False |corner_radius_left| + +#### **CornerRadiusRight** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------------| +|`[Int]`|false |named |False |corner_radius_right| + +#### **CornerRadiusTop** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |corner_radius_top| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] ] [[-CornerRadiusLeft] ] [[-CornerRadiusTop] ] [[-CornerRadiusRight] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRoundedRectShader.md b/docs/Add-OBSRoundedRectShader.md new file mode 100644 index 000000000..a0c93c93b --- /dev/null +++ b/docs/Add-OBSRoundedRectShader.md @@ -0,0 +1,89 @@ +Get-OBSRoundedRectShader +------------------------ + +### Synopsis +Get-OBSRoundedRectShader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRectShader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRoundedStrokeGradientShader.md b/docs/Add-OBSRoundedStrokeGradientShader.md new file mode 100644 index 000000000..23e412682 --- /dev/null +++ b/docs/Add-OBSRoundedStrokeGradientShader.md @@ -0,0 +1,125 @@ +Get-OBSRoundedStrokeGradientShader +---------------------------------- + +### Synopsis +Get-OBSRoundedStrokeGradientShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-RotationSpeed] ] [[-BorderColorL] ] [[-BorderColorR] ] [[-CenterWidth] ] [[-CenterHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColorL** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |border_colorL| + +#### **BorderColorR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |border_colorR| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CenterHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |center_height| + +#### **CenterWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |center_width| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MinimumAlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------| +|`[Int]`|false |named |False |minimum_alpha_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RotationSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |rotation_speed| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedStrokeGradientShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-RotationSpeed] ] [[-BorderColorL] ] [[-BorderColorR] ] [[-CenterWidth] ] [[-CenterHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSRoundedStrokeShader.md b/docs/Add-OBSRoundedStrokeShader.md new file mode 100644 index 000000000..9a6b1f54c --- /dev/null +++ b/docs/Add-OBSRoundedStrokeShader.md @@ -0,0 +1,101 @@ +Get-OBSRoundedStrokeShader +-------------------------- + +### Synopsis +Get-OBSRoundedStrokeShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MinimumAlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------| +|`[Int]`|false |named |False |minimum_alpha_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedStrokeShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSScaleFilter.md b/docs/Add-OBSScaleFilter.md index 668faabe3..11bcf868f 100644 --- a/docs/Add-OBSScaleFilter.md +++ b/docs/Add-OBSScaleFilter.md @@ -1,107 +1,61 @@ Set-OBSScaleFilter ------------------ - - - ### Synopsis Sets a Scale filter. - - --- - ### Description Adds or Changes a Scale Filter on an OBS Input. This allows you to resize the image source. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | Set-OBSScaleFilter -Resolution "16:9" ``` - - --- - ### Parameters #### **Resolution** - The Resolution. Can either width x height (e.g. 1920x1080) or an aspect ratio (16:9). - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[String]`|false |1 |true (ByPropertyName)|Scale | - - #### **Sampling** - The sampling method. It will default to "lanczos". - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |2 |true (ByPropertyName)| - - #### **KeepAspectRatio** - If set, will keep the aspect ratio when scaling. This is only valid if the sampling method is set to "lanczos". - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[Switch]`|false |named |true (ByPropertyName)|Undistort| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSScaleFilter [[-Resolution] ] [[-Sampling] ] [-KeepAspectRatio] [-Force] [] diff --git a/docs/Add-OBSScanLineShader.md b/docs/Add-OBSScanLineShader.md new file mode 100644 index 000000000..2dc371b5d --- /dev/null +++ b/docs/Add-OBSScanLineShader.md @@ -0,0 +1,125 @@ +Get-OBSScanLineShader +--------------------- + +### Synopsis +Get-OBSScanLineShader [[-Speed] ] [[-Angle] ] [[-Floor] ] [[-Period] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Lengthwise] [-Animate] [-Shift] [-Boost] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Angle** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Boost** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Floor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Lengthwise** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Period** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **Shift** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSScanLineShader [-Lengthwise ] [-Animate ] [[-Speed] ] [[-Angle] ] [-Shift ] [-Boost ] [[-Floor] ] [[-Period] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSScene.md b/docs/Add-OBSScene.md index 9cc37d711..5d09a9f9b 100644 --- a/docs/Add-OBSScene.md +++ b/docs/Add-OBSScene.md @@ -1,91 +1,49 @@ Add-OBSScene ------------ - - - ### Synopsis Add-OBSScene : CreateScene - - --- - ### Description Creates a new scene in OBS. - Add-OBSScene calls the OBS WebSocket with a request of type CreateScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscene) - - - - --- - ### Parameters #### **SceneName** - Name for the new scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Add-OBSScene [-SceneName] [-PassThru] [-NoResponse] [] diff --git a/docs/Add-OBSSceneCollection.md b/docs/Add-OBSSceneCollection.md index 9eeca7b14..75942e358 100644 --- a/docs/Add-OBSSceneCollection.md +++ b/docs/Add-OBSSceneCollection.md @@ -1,93 +1,51 @@ Add-OBSSceneCollection ---------------------- - - - ### Synopsis Add-OBSSceneCollection : CreateSceneCollection - - --- - ### Description Creates a new scene collection, switching to it in the process. Note: This will block until the collection has finished changing. - Add-OBSSceneCollection calls the OBS WebSocket with a request of type CreateSceneCollection. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscenecollection](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscenecollection) - - - - --- - ### Parameters #### **SceneCollectionName** - Name for the new scene collection - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Add-OBSSceneCollection [-SceneCollectionName] [-PassThru] [-NoResponse] [] diff --git a/docs/Add-OBSSceneItem.md b/docs/Add-OBSSceneItem.md index ed0ef7d9c..0100dc14f 100644 --- a/docs/Add-OBSSceneItem.md +++ b/docs/Add-OBSSceneItem.md @@ -1,124 +1,80 @@ Add-OBSSceneItem ---------------- - - - ### Synopsis Add-OBSSceneItem : CreateSceneItem - - --- - ### Description Creates a new scene item using a source. Scenes only - Add-OBSSceneItem calls the OBS WebSocket with a request of type CreateSceneItem. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to create the new item in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to create the new item in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SourceName** - Name of the source to add to the scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| +|`[String]`|false |3 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to add to the scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| #### **SceneItemEnabled** - Enable state to apply to the scene item on creation - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Add-OBSSceneItem [-SceneName] [-SourceName] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] +Add-OBSSceneItem [[-SceneName] ] [[-SceneUuid] ] [[-SourceName] ] [[-SourceUuid] ] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Add-OBSSceneSource.md b/docs/Add-OBSSceneSource.md index ed0ef7d9c..0100dc14f 100644 --- a/docs/Add-OBSSceneSource.md +++ b/docs/Add-OBSSceneSource.md @@ -1,124 +1,80 @@ Add-OBSSceneItem ---------------- - - - ### Synopsis Add-OBSSceneItem : CreateSceneItem - - --- - ### Description Creates a new scene item using a source. Scenes only - Add-OBSSceneItem calls the OBS WebSocket with a request of type CreateSceneItem. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to create the new item in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to create the new item in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SourceName** - Name of the source to add to the scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| +|`[String]`|false |3 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to add to the scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| #### **SceneItemEnabled** - Enable state to apply to the scene item on creation - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Add-OBSSceneItem [-SceneName] [-SourceName] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] +Add-OBSSceneItem [[-SceneName] ] [[-SceneUuid] ] [[-SourceName] ] [[-SourceUuid] ] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Add-OBSSeascapeShader.md b/docs/Add-OBSSeascapeShader.md new file mode 100644 index 000000000..671c6c0d6 --- /dev/null +++ b/docs/Add-OBSSeascapeShader.md @@ -0,0 +1,125 @@ +Get-OBSSeascapeShader +--------------------- + +### Synopsis +Get-OBSSeascapeShader [[-SEAHEIGHT] ] [[-SEACHOPPY] ] [[-SEASPEED] ] [[-SEAFREQ] ] [[-SEABASE] ] [[-SEAWATERCOLOR] ] [[-CAMERASPEED] ] [[-CAMERATURNSPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AA] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AA** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CAMERASPEED** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |CAMERA_SPEED| + +#### **CAMERATURNSPEED** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |CAMERA_TURN_SPEED| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SEABASE** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[String]`|false |named |False |SEA_BASE| + +#### **SEACHOPPY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |SEA_CHOPPY| + +#### **SEAFREQ** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |SEA_FREQ| + +#### **SEAHEIGHT** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |SEA_HEIGHT| + +#### **SEASPEED** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |SEA_SPEED| + +#### **SEAWATERCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[String]`|false |named |False |SEA_WATER_COLOR| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSeascapeShader [-AA ] [[-SEAHEIGHT] ] [[-SEACHOPPY] ] [[-SEASPEED] ] [[-SEAFREQ] ] [[-SEABASE] ] [[-SEAWATERCOLOR] ] [[-CAMERASPEED] ] [[-CAMERATURNSPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSeasickShader.md b/docs/Add-OBSSeasickShader.md new file mode 100644 index 000000000..09ebefc32 --- /dev/null +++ b/docs/Add-OBSSeasickShader.md @@ -0,0 +1,101 @@ +Get-OBSSeasickShader +-------------------- + +### Synopsis +Get-OBSSeasickShader [[-Notes] ] [[-Amplitude] ] [[-Speed] ] [[-Frequency] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Amplitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Frequency** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSeasickShader [[-Notes] ] [[-Amplitude] ] [[-Speed] ] [[-Frequency] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSelectiveColorShader.md b/docs/Add-OBSSelectiveColorShader.md new file mode 100644 index 000000000..7dcfc66a1 --- /dev/null +++ b/docs/Add-OBSSelectiveColorShader.md @@ -0,0 +1,137 @@ +Get-OBSSelectiveColorShader +--------------------------- + +### Synopsis +Get-OBSSelectiveColorShader [[-CutoffRed] ] [[-CutoffGreen] ] [[-CutoffBlue] ] [[-CutoffYellow] ] [[-AcceptanceAmplifier] ] [[-Notes] ] [[-BackgroundType] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowRed] [-ShowGreen] [-ShowBlue] [-ShowYellow] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AcceptanceAmplifier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |acceptance_Amplifier| + +#### **BackgroundType** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |background_type| + +#### **CutoffBlue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |cutoff_Blue| + +#### **CutoffGreen** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |cutoff_Green| + +#### **CutoffRed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |cutoff_Red| + +#### **CutoffYellow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |cutoff_Yellow| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShowBlue** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[Switch]`|false |named |False |show_Blue| + +#### **ShowGreen** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |show_Green| + +#### **ShowRed** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[Switch]`|false |named |False |show_Red| + +#### **ShowYellow** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |show_Yellow| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSelectiveColorShader [[-CutoffRed] ] [[-CutoffGreen] ] [[-CutoffBlue] ] [[-CutoffYellow] ] [[-AcceptanceAmplifier] ] [-ShowRed ] [-ShowGreen ] [-ShowBlue ] [-ShowYellow ] [[-Notes] ] [[-BackgroundType] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSShaderFilter.md b/docs/Add-OBSShaderFilter.md index 83ebad520..b9e71b640 100644 --- a/docs/Add-OBSShaderFilter.md +++ b/docs/Add-OBSShaderFilter.md @@ -1,110 +1,86 @@ Set-OBSShaderFilter ------------------- - - - ### Synopsis Sets a Shader filter. - - --- - ### Description Adds or Changes a Shader Filter on an OBS Input. This requires that the [OBS Shader Filter](https://github.com/exeldro/obs-shaderfilter) is installed. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell 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 2 +```PowerShell +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 3 +```PowerShell +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 + } +``` --- - ### Parameters #### **ShaderText** - The text of the shader - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |1 |true (ByPropertyName)| - - #### **ShaderFile** - The file path to the shader, or the short file name of the shader. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|----------| |`[String]`|false |2 |true (ByPropertyName)|ShaderName| - - #### **ShaderSetting** - Any other settings for the shader. To see what the name of a shader setting is, change it in the user interface and then get the input's filters. - - - - - |Type |Required|Position|PipelineInput |Aliases | |------------|--------|--------|---------------------|--------------| |`[PSObject]`|false |3 |true (ByPropertyName)|ShaderSettings| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSShaderFilter [[-ShaderText] ] [[-ShaderFile] ] [[-ShaderSetting] ] [-Force] [] diff --git a/docs/Add-OBSShakeShader.md b/docs/Add-OBSShakeShader.md new file mode 100644 index 000000000..c6932f1e5 --- /dev/null +++ b/docs/Add-OBSShakeShader.md @@ -0,0 +1,167 @@ +Get-OBSShakeShader +------------------ + +### Synopsis +Get-OBSShakeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-LocalTime] ] [[-RandomScale] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Worble] [-RandomizeMovement] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **MaxGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |max_growth_pixels| + +#### **MinGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |min_growth_pixels| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandomizeMovement** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------------| +|`[Switch]`|false |named |False |randomize_movement| + +#### **RandomScale** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |random_scale| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +#### **Worble** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSShakeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-LocalTime] ] [[-RandomScale] ] [-Worble ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [-RandomizeMovement ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSharpnessFilter.md b/docs/Add-OBSSharpnessFilter.md index b21b97143..429abfdee 100644 --- a/docs/Add-OBSSharpnessFilter.md +++ b/docs/Add-OBSSharpnessFilter.md @@ -1,76 +1,46 @@ Set-OBSSharpnessFilter ---------------------- - - - ### Synopsis Sets a Sharpness filter. - - --- - ### Description Adds or Changes a Sharpness Filter on an OBS Input. This changes the sharpness of an image. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | Set-OBSSharpnessFilter -Sharpness .75 ``` - - --- - ### Parameters #### **Sharpness** - The Sharpness. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSSharpnessFilter [[-Sharpness] ] [-Force] [] diff --git a/docs/Add-OBSShineShader.md b/docs/Add-OBSShineShader.md new file mode 100644 index 000000000..43194d999 --- /dev/null +++ b/docs/Add-OBSShineShader.md @@ -0,0 +1,155 @@ +Get-OBSShineShader +------------------ + +### Synopsis +Get-OBSShineShader [[-LTex] ] [[-ShineColor] ] [[-SpeedPercent] ] [[-GradientPercent] ] [[-DelayPercent] ] [[-Notes] ] [[-StartAdjust] ] [[-StopAdjust] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Hide] [-Reverse] [-OneDirection] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **DelayPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |delay_percent| + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |gradient_percent| + +#### **Hide** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LTex** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |l_tex | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OneDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |One_Direction| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Reverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShineColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |shine_color| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **StartAdjust** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |start_adjust| + +#### **StopAdjust** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |stop_adjust| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSShineShader [[-LTex] ] [[-ShineColor] ] [[-SpeedPercent] ] [[-GradientPercent] ] [[-DelayPercent] ] [-ApplyToAlphaLayer ] [-Ease ] [-Hide ] [-Reverse ] [-OneDirection ] [-Glitch ] [[-Notes] ] [[-StartAdjust] ] [[-StopAdjust] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSimpleGradientShader.md b/docs/Add-OBSSimpleGradientShader.md new file mode 100644 index 000000000..2dc4b4a37 --- /dev/null +++ b/docs/Add-OBSSimpleGradientShader.md @@ -0,0 +1,119 @@ +Get-OBSSimpleGradientShader +--------------------------- + +### Synopsis +Get-OBSSimpleGradientShader [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-LensFlair] [-AnimateLensFlair] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |alpha_percentage| + +#### **AnimateLensFlair** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------------| +|`[Switch]`|false |named |False |Animate_Lens_Flair| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LensFlair** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |Lens_Flair| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |speed_percentage| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSimpleGradientShader [[-SpeedPercentage] ] [[-AlphaPercentage] ] [-LensFlair ] [-AnimateLensFlair ] [-ApplyToAlphaLayer ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSimplexNoiseShader.md b/docs/Add-OBSSimplexNoiseShader.md new file mode 100644 index 000000000..399ba8482 --- /dev/null +++ b/docs/Add-OBSSimplexNoiseShader.md @@ -0,0 +1,125 @@ +Get-OBSSimplexNoiseShader +------------------------- + +### Synopsis +Get-OBSSimplexNoiseShader [[-SnapPercent] ] [[-SpeedPercent] ] [[-Resolution] ] [[-ForeColor] ] [[-BackColor] ] [[-AlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Fractal] [-UseAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Alpha_Percent| + +#### **BackColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Back_Color| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ForeColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fore_Color| + +#### **Fractal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Resolution** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SnapPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |Snap_Percent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Speed_Percent| + +#### **UseAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[Switch]`|false |named |False |Use_Alpha_Layer| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSimplexNoiseShader [[-SnapPercent] ] [[-SpeedPercent] ] [[-Resolution] ] [-Fractal ] [-UseAlphaLayer ] [[-ForeColor] ] [[-BackColor] ] [[-AlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSmartDenoiseShader.md b/docs/Add-OBSSmartDenoiseShader.md new file mode 100644 index 000000000..507159a2b --- /dev/null +++ b/docs/Add-OBSSmartDenoiseShader.md @@ -0,0 +1,89 @@ +Get-OBSSmartDenoiseShader +------------------------- + +### Synopsis +Get-OBSSmartDenoiseShader [[-USigma] ] [[-UKSigma] ] [[-UThreshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UKSigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **USigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UThreshold** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSmartDenoiseShader [[-USigma] ] [[-UKSigma] ] [[-UThreshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSoundCloudSource.md b/docs/Add-OBSSoundCloudSource.md new file mode 100644 index 000000000..11bb87de0 --- /dev/null +++ b/docs/Add-OBSSoundCloudSource.md @@ -0,0 +1,176 @@ +Set-OBSSoundCloudSource +----------------------- + +### Synopsis +Sets a Sound Cloud Source + +--- + +### Description + +Adds or changes a Sound Cloud source OBS. +Sound Cloud Sources are Browser Sources that display a [SoundCloud Player Widget](https://developers.soundcloud.com/docs/api/html5-widget). + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-obssoundCloudSource -Uri https://soundcloud.com/outertone/sets/new-earth +``` + +--- + +### Parameters +#### **Uri** +The uri to display. This must point to a SoundCloud URL. + +|Type |Required|Position|PipelineInput |Aliases | +|-------|--------|--------|---------------------|---------------------------------------| +|`[Uri]`|false |1 |true (ByPropertyName)|Url
SoundCloudUri
SoundCloudUrl| + +#### **NoAutoPlay** +If set, will not autoplay. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoArtwork** +If set, will not display album artwork. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoPlayCount** +If set, will not display play count. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoUploaderInfo** +If set, will not display uploader info. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **TrackNumber** +If provided, will start playing at a given track number. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **ShowShare** +If set, will show a share link. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ShowDownload** +If set, will show a download link. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ShowBuy** +If set, will show a buy link. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Color** +The color used for the SoundCloud audio bars and buttons. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |4 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |5 |true (ByPropertyName)| + +#### **CSS** +The css style used to render the browser page. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **ShutdownWhenHidden** +If set, the browser source will shutdown when it is hidden + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **RestartWhenActived** +If set, the browser source will restart when it is activated. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **RerouteAudio** +If set, audio from the browser source will be rerouted into OBS. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FramesPerSecond** +If provided, the browser source will render at a custom frame rate. + +|Type |Required|Position|PipelineInput |Aliases| +|---------|--------|--------|---------------------|-------| +|`[Int32]`|false |7 |true (ByPropertyName)|FPS | + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |8 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, then "SoundCloud" will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |9 |true (ByPropertyName)|InputName
SourceName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSSoundCloudSource [[-Uri] ] [-NoAutoPlay] [-NoArtwork] [-NoPlayCount] [-NoUploaderInfo] [[-TrackNumber] ] [-ShowShare] [-ShowDownload] [-ShowBuy] [[-Color] ] [[-Width] ] [[-Height] ] [[-CSS] ] [-ShutdownWhenHidden] [-RestartWhenActived] [-RerouteAudio] [[-FramesPerSecond] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Add-OBSSourceFilter.md b/docs/Add-OBSSourceFilter.md index 3da16df26..bee06b4aa 100644 --- a/docs/Add-OBSSourceFilter.md +++ b/docs/Add-OBSSourceFilter.md @@ -1,137 +1,78 @@ Add-OBSSourceFilter ------------------- - - - ### Synopsis Add-OBSSourceFilter : CreateSourceFilter - - --- - ### Description Creates a new filter, adding it to the specified source. - Add-OBSSourceFilter calls the OBS WebSocket with a request of type CreateSourceFilter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsourcefilter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsourcefilter) - - - - --- - ### Parameters #### **SourceName** - Name of the source to add the filter to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to add the filter to +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the new filter to be created - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **FilterKind** - The kind of filter to be created - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **FilterSettings** - Settings object to initialize the filter with - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|false |4 |true (ByPropertyName)| - - +|`[PSObject]`|false |5 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Add-OBSSourceFilter [-SourceName] [-FilterName] [-FilterKind] [[-FilterSettings] ] [-PassThru] [-NoResponse] [] +Add-OBSSourceFilter [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-FilterKind] [[-FilterSettings] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Add-OBSSpecularShineShader.md b/docs/Add-OBSSpecularShineShader.md new file mode 100644 index 000000000..c07c1e32d --- /dev/null +++ b/docs/Add-OBSSpecularShineShader.md @@ -0,0 +1,125 @@ +Get-OBSSpecularShineShader +-------------------------- + +### Synopsis +Get-OBSSpecularShineShader [[-Hint] ] [[-Roughness] ] [[-LightStrength] ] [[-LightPositionX] ] [[-LightPositionY] ] [[-FlattenNormal] ] [[-StretchNormalX] ] [[-StretchNormalY] ] [[-LightColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FlattenNormal** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Hint** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LightColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------| +|`[System.Single[]]`|false |named |False |Light_Color| + +#### **LightPositionX** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LightPositionY** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LightStrength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Roughness** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StretchNormalX** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **StretchNormalY** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSpecularShineShader [[-Hint] ] [[-Roughness] ] [[-LightStrength] ] [[-LightPositionX] ] [[-LightPositionY] ] [[-FlattenNormal] ] [[-StretchNormalX] ] [[-StretchNormalY] ] [[-LightColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSpotlightShader.md b/docs/Add-OBSSpotlightShader.md new file mode 100644 index 000000000..a515a5876 --- /dev/null +++ b/docs/Add-OBSSpotlightShader.md @@ -0,0 +1,113 @@ +Get-OBSSpotlightShader +---------------------- + +### Synopsis +Get-OBSSpotlightShader [[-SpeedPercent] ] [[-FocusPercent] ] [[-SpotlightColor] ] [[-HorizontalOffset] ] [[-VerticalOffset] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FocusPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Focus_Percent| + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HorizontalOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |Horizontal_Offset| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Speed_Percent| + +#### **SpotlightColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[String]`|false |named |False |Spotlight_Color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VerticalOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Vertical_Offset| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSpotlightShader [[-SpeedPercent] ] [[-FocusPercent] ] [-Glitch ] [[-SpotlightColor] ] [[-HorizontalOffset] ] [[-VerticalOffset] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSwirlShader.md b/docs/Add-OBSSwirlShader.md new file mode 100644 index 000000000..29211abfa --- /dev/null +++ b/docs/Add-OBSSwirlShader.md @@ -0,0 +1,113 @@ +Get-OBSSwirlShader +------------------ + +### Synopsis +Get-OBSSwirlShader [[-Radius] ] [[-Angle] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Inverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Angle** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Inverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSwirlShader [[-Radius] ] [[-Angle] ] [[-CenterX] ] [[-CenterY] ] [-Animate ] [-Inverse ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSSwitchSource.md b/docs/Add-OBSSwitchSource.md new file mode 100644 index 000000000..d00a37c49 --- /dev/null +++ b/docs/Add-OBSSwitchSource.md @@ -0,0 +1,222 @@ +Set-OBSSwitchSource +------------------- + +### Synopsis +Adds a VLC playlist source + +--- + +### Description + +Adds or sets VLC playlist sources to OBS. +VLC must be installed for this to work. + +--- + +### Related Links +* [Add-OBSInput](Add-OBSInput.md) + +* [Set-OBSInputSettings](Set-OBSInputSettings.md) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory +``` + +--- + +### Parameters +#### **SourceList** +The path to the media file. + +|Type |Required|Position|PipelineInput |Aliases| +|------------|--------|--------|---------------------|-------| +|`[String[]]`|false |1 |true (ByPropertyName)|Sources| + +#### **Select** +What to select in the playlist. +If a number is provided, this will select an index. +If a string is provided, this will select the whole name or last part of a name, accepting wildcards. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------------------| +|`[Object]`|false |2 |true (ByPropertyName)|SelectIndex
SelectName| + +#### **Loop** +If set, the list of sources will loop. + +|Type |Required|Position|PipelineInput |Aliases| +|----------|--------|--------|---------------------|-------| +|`[Switch]`|false |named |true (ByPropertyName)|Looping| + +#### **TimeSwitch** +If set, will switch between sources. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Interval** +The interval between sources + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[TimeSpan]`|false |3 |true (ByPropertyName)| + +#### **Duration** +The duration between sources that are switching at a time. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[TimeSpan]`|false |4 |true (ByPropertyName)| + +#### **TimeSwitchTo** +The item that will be switched in a TimeSwitch, after -Duration and -Interval. +Valid Values: + +* None +* Next +* Previous +* First +* Last +* Random + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **MediaStateSwitch** +If set, will switch on the underlying source's media state events. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **MediaStateChange** +The change in media state that should trigger a switch +Valid Values: + +* Playing +* Opening +* Buffering +* Paused +* Stopped +* Ended +* Error +* Playing +* NotOpening +* NotBuffering +* NotPaused +* NotStopped +* NotEnded +* NotError + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Object]`|false |6 |true (ByPropertyName)| + +#### **MediaSwitchTo** +When the source switcher is trigger by media end, this determines the next source that will be switched to. +Valid Values: + +* None +* Next +* Previous +* First +* Last +* Random + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |7 |true (ByPropertyName)| + +#### **TransitionName** +The name of the transition between sources. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |8 |true (ByPropertyName)| + +#### **TransitionProperty** +The properties sent to the transition. +Notice: this current requires confirmation in the UI. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |9 |true (ByPropertyName)| + +#### **ShowTransition** +The name of the transition used to show a source. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |10 |true (ByPropertyName)| + +#### **ShowTransitionProperty** +The properties sent to the show transition. +Notice: this current requires confirmation in the UI. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |11 |true (ByPropertyName)| + +#### **HideTransition** +The transition used to hide a source. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |12 |true (ByPropertyName)| + +#### **HideTransitionProperty** +The properties sent to the hide transition. +Notice: this current requires confirmation in the UI. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |13 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |14 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |15 |true (ByPropertyName)|InputName
SourceName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FitToScreen** +If set, will fit the input to the screen. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSSwitchSource [[-SourceList] ] [[-Select] ] [-Loop] [-TimeSwitch] [[-Interval] ] [[-Duration] ] [[-TimeSwitchTo] ] [-MediaStateSwitch] [[-MediaStateChange] ] [[-MediaSwitchTo] ] [[-TransitionName] ] [[-TransitionProperty] ] [[-ShowTransition] ] [[-ShowTransitionProperty] ] [[-HideTransition] ] [[-HideTransitionProperty] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +``` diff --git a/docs/Add-OBSTetraShader.md b/docs/Add-OBSTetraShader.md new file mode 100644 index 000000000..0a05d4615 --- /dev/null +++ b/docs/Add-OBSTetraShader.md @@ -0,0 +1,179 @@ +Get-OBSTetraShader +------------------ + +### Synopsis +Get-OBSTetraShader [[-RedR] ] [[-RedG] ] [[-RedB] ] [[-YelR] ] [[-YelG] ] [[-YelB] ] [[-GrnR] ] [[-GrnG] ] [[-GrnB] ] [[-CynR] ] [[-CynG] ] [[-CynB] ] [[-BluR] ] [[-BluG] ] [[-BluB] ] [[-MagR] ] [[-MagG] ] [[-MagB] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BluB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BluG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BluR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **CynB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **CynG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **CynR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GrnB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **GrnG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **GrnR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MagB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MagG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MagR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RedB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **RedG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **RedR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **YelB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **YelG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **YelR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTetraShader [[-RedR] ] [[-RedG] ] [[-RedB] ] [[-YelR] ] [[-YelG] ] [[-YelB] ] [[-GrnR] ] [[-GrnG] ] [[-GrnB] ] [[-CynR] ] [[-CynG] ] [[-CynB] ] [[-BluR] ] [[-BluG] ] [[-BluB] ] [[-MagR] ] [[-MagG] ] [[-MagB] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSThermalShader.md b/docs/Add-OBSThermalShader.md new file mode 100644 index 000000000..69e7f9061 --- /dev/null +++ b/docs/Add-OBSThermalShader.md @@ -0,0 +1,77 @@ +Get-OBSThermalShader +-------------------- + +### Synopsis +Get-OBSThermalShader [[-Strength] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSThermalShader [[-Strength] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSTvCrtSubpixelShader.md b/docs/Add-OBSTvCrtSubpixelShader.md new file mode 100644 index 000000000..6e3aa0bda --- /dev/null +++ b/docs/Add-OBSTvCrtSubpixelShader.md @@ -0,0 +1,95 @@ +Get-OBSTvCrtSubpixelShader +-------------------------- + +### Synopsis +Get-OBSTvCrtSubpixelShader [[-ChannelWidth] ] [[-ChannelHeight] ] [[-HGap] ] [[-VGap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ChannelHeight** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ChannelWidth** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HGap** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VGap** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTvCrtSubpixelShader [[-ChannelWidth] ] [[-ChannelHeight] ] [[-HGap] ] [[-VGap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSTwistShader.md b/docs/Add-OBSTwistShader.md new file mode 100644 index 000000000..e10d1ef23 --- /dev/null +++ b/docs/Add-OBSTwistShader.md @@ -0,0 +1,95 @@ +Get-OBSTwistShader +------------------ + +### Synopsis +Get-OBSTwistShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-Rotation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Rotation** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTwistShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-Rotation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSTwoPassDropShadowShader.md b/docs/Add-OBSTwoPassDropShadowShader.md new file mode 100644 index 000000000..6ba646467 --- /dev/null +++ b/docs/Add-OBSTwoPassDropShadowShader.md @@ -0,0 +1,149 @@ +Get-OBSTwoPassDropShadowShader +------------------------------ + +### Synopsis +Get-OBSTwoPassDropShadowShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **IsAlphaPremultiplied** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------------| +|`[Switch]`|false |named |False |is_alpha_premultiplied| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShadowBlurSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |shadow_blur_size| + +#### **ShadowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |shadow_color| + +#### **ShadowOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_x| + +#### **ShadowOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_y| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTwoPassDropShadowShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [-IsAlphaPremultiplied ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSVCRShader.md b/docs/Add-OBSVCRShader.md new file mode 100644 index 000000000..9a417b3e6 --- /dev/null +++ b/docs/Add-OBSVCRShader.md @@ -0,0 +1,107 @@ +Get-OBSVCRShader +---------------- + +### Synopsis +Get-OBSVCRShader [[-VerticalShift] ] [[-Distort] ] [[-Vignet] ] [[-Stripe] ] [[-VerticalFactor] ] [[-VerticalHeight] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Distort** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Stripe** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VerticalFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |vertical_factor| + +#### **VerticalHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |vertical_height| + +#### **VerticalShift** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |vertical_shift| + +#### **Vignet** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVCRShader [[-VerticalShift] ] [[-Distort] ] [[-Vignet] ] [[-Stripe] ] [[-VerticalFactor] ] [[-VerticalHeight] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSVHSShader.md b/docs/Add-OBSVHSShader.md new file mode 100644 index 000000000..752c8d25c --- /dev/null +++ b/docs/Add-OBSVHSShader.md @@ -0,0 +1,131 @@ +Get-OBSVHSShader +---------------- + +### Synopsis +Get-OBSVHSShader [[-Range] ] [[-OffsetIntensity] ] [[-NoiseQuality] ] [[-NoiseIntensity] ] [[-ColorOffsetIntensity] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorOffsetIntensity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoiseIntensity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoiseQuality** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetIntensity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Range** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVHSShader [[-Range] ] [[-OffsetIntensity] ] [[-NoiseQuality] ] [[-NoiseIntensity] ] [[-ColorOffsetIntensity] ] [[-AlphaPercentage] ] [-ApplyToImage ] [-ReplaceImageColor ] [[-ColorToReplace] ] [-ApplyToSpecificColor ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSVLCSource.md b/docs/Add-OBSVLCSource.md index 94fb049a5..c5cf3acb8 100644 --- a/docs/Add-OBSVLCSource.md +++ b/docs/Add-OBSVLCSource.md @@ -1,230 +1,121 @@ Set-OBSVLCSource ---------------- - - - ### Synopsis Adds a VLC playlist source - - --- - ### Description Adds or sets VLC playlist sources to OBS. VLC must be installed for this to work. - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory ``` - - --- - ### Parameters #### **FilePath** - The path to the media file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |------------|--------|--------|---------------------|--------------------------------------------------| -|`[String[]]`|true |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| - - +|`[String[]]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| #### **Select** - What to select in the playlist. If a number is provided, this will select an index. If a string is provided, this will select the whole name or last part of a name, accepting wildcards. If an `[IO.FileInfo]` is provided, this will be the exact file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|--------------------------| |`[Object]`|false |2 |true (ByPropertyName)|SelectIndex
SelectName| - - #### **Shuffle** - If set, will shuffle the playlist - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Loop** - If set, the playlist will loop. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Switch]`|false |named |true (ByPropertyName)|Looping| - - #### **Subtitle** - If set, will show subtitles, if available. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------| |`[Switch]`|false |named |true (ByPropertyName)|ShowSubtitles
Subtitles| - - #### **AudioTrack** - The selected audio track number. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |3 |true (ByPropertyName)| - - #### **SubtitleTrack** - The selected subtitle track number. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |4 |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |5 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |6 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FitToScreen** - If set, will fit the input to the screen. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell -Set-OBSVLCSource [-FilePath] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +Set-OBSVLCSource [[-FilePath] ] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] ``` diff --git a/docs/Add-OBSVignettingShader.md b/docs/Add-OBSVignettingShader.md new file mode 100644 index 000000000..b8d467837 --- /dev/null +++ b/docs/Add-OBSVignettingShader.md @@ -0,0 +1,95 @@ +Get-OBSVignettingShader +----------------------- + +### Synopsis +Get-OBSVignettingShader [[-InnerRadius] ] [[-OuterRadius] ] [[-Opacity] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InnerRadius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **OuterRadius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVignettingShader [[-InnerRadius] ] [[-OuterRadius] ] [[-Opacity] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSVoronoiPixelationShader.md b/docs/Add-OBSVoronoiPixelationShader.md new file mode 100644 index 000000000..dcfc495cd --- /dev/null +++ b/docs/Add-OBSVoronoiPixelationShader.md @@ -0,0 +1,83 @@ +Get-OBSVoronoiPixelationShader +------------------------------ + +### Synopsis +Get-OBSVoronoiPixelationShader [[-PixH] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Alternative] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Alternative** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixH** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVoronoiPixelationShader [[-PixH] ] [-Alternative ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSWaveformSource.md b/docs/Add-OBSWaveformSource.md new file mode 100644 index 000000000..d042d0718 --- /dev/null +++ b/docs/Add-OBSWaveformSource.md @@ -0,0 +1,290 @@ +Set-OBSWaveformSource +--------------------- + +### Synopsis +OBS Waveform Source + +--- + +### Description + +Gets, Sets, or Adds a waveform source in OBS. +Waveform sources require the [Waveform Plugin](https://obsproject.com/forum/resources/waveform.1423/) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Add-OBSWaveformSource -Name "SpeakerWaveform" +``` + +--- + +### Parameters +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |1 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **AudioSource** +The audio source for the waveform. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **DisplayMode** +The display mode for the waveform. +Valid Values: + +* curve +* bars +* stepped_bars +* level_meter +* stepped_level_meter + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| + +#### **RenderMode** +The render mode for the waveform. +Valid Values: + +* line +* solid +* gradient + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **WindowMode** +The windowing mode for the waveform. +This is the mathematical function used to determine the current "window" of audio data. +Valid Values: + +* hann +* hamming +* blackman +* blackman_harris +* none + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **Color** +The color used for the waveform. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |7 |true (ByPropertyName)| + +#### **CrestColor** +The crest color used for the waveform. +This will be ignored if the render mode is not "gradient". + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |8 |true (ByPropertyName)| + +#### **ChannelMode** +The channel mode for the waveform. +This can be either mono or stereo. +Valid Values: + +* mono +* stereo + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |9 |true (ByPropertyName)| + +#### **ChannelSpacing** +The number of pixels between each channel in stereo mode + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |10 |true (ByPropertyName)| + +#### **RadialLayout** +If set, will use a radial layout for the waveform +Radial layouts will ignore the desired height of the source and instead create a square. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **InvertRadialDirection** +If set, will invert the direction for a radial waveform. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoramlizeVolume** +If set, will normalize the volume displayed in the waveform. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **AutoFftSize** +If set, will automatically declare an FFTSize + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FastPeak** +If set, will attempt to make audio peaks render faster. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **BarWidth** +The width of the waveform bar. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |11 |true (ByPropertyName)| + +#### **BarGap** +The gap between waveform bars. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |12 |true (ByPropertyName)| + +#### **StepWidth** +The width of waveform bar step. +This is only valid when -DisplayMode is 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |13 |true (ByPropertyName)| + +#### **StepGap** +The gap between waveform bar steps. +This is only valid when -DisplayMode is 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |14 |true (ByPropertyName)| + +#### **LowCutoff** +The low-frequency cutoff of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |15 |true (ByPropertyName)| + +#### **HighCutoff** +The high-frequency cutoff of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |16 |true (ByPropertyName)| + +#### **Floor** +The floor of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |17 |true (ByPropertyName)| + +#### **Ceiling** +The ceiling of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |18 |true (ByPropertyName)| + +#### **Slope** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |19 |true (ByPropertyName)| + +#### **RollOffOctave** + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------| +|`[Double]`|false |20 |true (ByPropertyName)|RollOffOctaves| + +#### **RollOffRate** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |21 |true (ByPropertyName)| + +#### **GradientRatio** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |22 |true (ByPropertyName)| + +#### **Deadzone** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |23 |true (ByPropertyName)| + +#### **TemporalSmoothing** + +Valid Values: + +* none +* exp_moving_avg + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |24 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |25 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |26 |true (ByPropertyName)|InputName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSWaveformSource [[-Width] ] [[-Height] ] [[-AudioSource] ] [[-DisplayMode] ] [[-RenderMode] ] [[-WindowMode] ] [[-Color] ] [[-CrestColor] ] [[-ChannelMode] ] [[-ChannelSpacing] ] [-RadialLayout] [-InvertRadialDirection] [-NoramlizeVolume] [-AutoFftSize] [-FastPeak] [[-BarWidth] ] [[-BarGap] ] [[-StepWidth] ] [[-StepGap] ] [[-LowCutoff] ] [[-HighCutoff] ] [[-Floor] ] [[-Ceiling] ] [[-Slope] ] [[-RollOffOctave] ] [[-RollOffRate] ] [[-GradientRatio] ] [[-Deadzone] ] [[-TemporalSmoothing] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Add-OBSWindowCaptureSource.md b/docs/Add-OBSWindowCaptureSource.md index ad0ad67d2..21e6cbd2a 100644 --- a/docs/Add-OBSWindowCaptureSource.md +++ b/docs/Add-OBSWindowCaptureSource.md @@ -1,193 +1,104 @@ Set-OBSWindowSource ------------------- - - - ### Synopsis Adds or sets a window capture source - - --- - ### Description Adds or sets a windows capture source in OBS. This captures the contents of a window. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow ``` - - --- - ### Parameters #### **WindowTitle** - The monitor number. This the number of the monitor you would like to capture. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------------------------------------| |`[String]`|false |1 |true (ByPropertyName)|ItemValue
ItemName
WindowName
MainWindowTitle| - - #### **CaptureMethod** - The number of the capture method. By default, automatic (0). - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |2 |true (ByPropertyName)| - - #### **CapturePriority** - The capture priority. - - - Valid Values: * ExactMatch * SameType * SameExecutable - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **CaptureCursor** - If set, will capture the cursor. This will be set by default. If explicitly set to false, the cursor will not be captured. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **ClientArea** - If set, will capture the client area. This will be set by default. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **ForceSDR** - If set, will force SDR. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |4 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |5 |true (ByPropertyName)|InputName| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSWindowSource [[-WindowTitle] ] [[-CaptureMethod] ] [[-CapturePriority] ] [-CaptureCursor] [-ClientArea] [-ForceSDR] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Add-OBSWindowSource.md b/docs/Add-OBSWindowSource.md index ad0ad67d2..21e6cbd2a 100644 --- a/docs/Add-OBSWindowSource.md +++ b/docs/Add-OBSWindowSource.md @@ -1,193 +1,104 @@ Set-OBSWindowSource ------------------- - - - ### Synopsis Adds or sets a window capture source - - --- - ### Description Adds or sets a windows capture source in OBS. This captures the contents of a window. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow ``` - - --- - ### Parameters #### **WindowTitle** - The monitor number. This the number of the monitor you would like to capture. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------------------------------------| |`[String]`|false |1 |true (ByPropertyName)|ItemValue
ItemName
WindowName
MainWindowTitle| - - #### **CaptureMethod** - The number of the capture method. By default, automatic (0). - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |2 |true (ByPropertyName)| - - #### **CapturePriority** - The capture priority. - - - Valid Values: * ExactMatch * SameType * SameExecutable - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **CaptureCursor** - If set, will capture the cursor. This will be set by default. If explicitly set to false, the cursor will not be captured. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **ClientArea** - If set, will capture the client area. This will be set by default. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **ForceSDR** - If set, will force SDR. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |4 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |5 |true (ByPropertyName)|InputName| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSWindowSource [[-WindowTitle] ] [[-CaptureMethod] ] [[-CapturePriority] ] [-CaptureCursor] [-ClientArea] [-ForceSDR] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Add-OBSZigZagShader.md b/docs/Add-OBSZigZagShader.md new file mode 100644 index 000000000..236ef9fe4 --- /dev/null +++ b/docs/Add-OBSZigZagShader.md @@ -0,0 +1,125 @@ +Get-OBSZigZagShader +------------------- + +### Synopsis +Get-OBSZigZagShader [[-Radius] ] [[-Angle] ] [[-Period] ] [[-Amplitude] ] [[-CenterX] ] [[-CenterY] ] [[-Phase] ] [[-Animate] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Amplitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Angle** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Period** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Phase** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZigZagShader [[-Radius] ] [[-Angle] ] [[-Period] ] [[-Amplitude] ] [[-CenterX] ] [[-CenterY] ] [[-Phase] ] [[-Animate] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSZoomBlurShader.md b/docs/Add-OBSZoomBlurShader.md new file mode 100644 index 000000000..5a397192f --- /dev/null +++ b/docs/Add-OBSZoomBlurShader.md @@ -0,0 +1,107 @@ +Get-OBSZoomBlurShader +--------------------- + +### Synopsis +Get-OBSZoomBlurShader [[-Samples] ] [[-Magnitude] ] [[-SpeedPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Magnitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Samples** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZoomBlurShader [[-Samples] ] [[-Magnitude] ] [[-SpeedPercent] ] [-Ease ] [-Glitch ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSZoomShader.md b/docs/Add-OBSZoomShader.md new file mode 100644 index 000000000..5124926cb --- /dev/null +++ b/docs/Add-OBSZoomShader.md @@ -0,0 +1,89 @@ +Get-OBSZoomShader +----------------- + +### Synopsis +Get-OBSZoomShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZoomShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Add-OBSZoomXYShader.md b/docs/Add-OBSZoomXYShader.md new file mode 100644 index 000000000..0983ab4c2 --- /dev/null +++ b/docs/Add-OBSZoomXYShader.md @@ -0,0 +1,95 @@ +Get-OBSZoomXYShader +------------------- + +### Synopsis +Get-OBSZoomXYShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-XPower] ] [[-YPower] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **XPower** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |x_power| + +#### **YPower** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |y_power| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZoomXYShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-XPower] ] [[-YPower] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 67f0e453b..9afa9b2b0 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,3 +1,70 @@ +> Like It? [Star It](https://github.com/StartAutomating/obs-powershell) +> Love It? [Support It](https://github.com/sponsors/StartAutomating) + +## obs-powershell 0.2: + +* So Many Shaders! +* @exeldro makes some excellent obs plugins + * Every PixelShader from [obs-shaderfilter](https://github.com/exeldro/obs-shaderfilter) has an auto-generated function: + * As of this build, there are 142 Shader functions! + * Flip Shader ( #200 ) + * Zoom XY Shader ( #199 ) + * RGBA Percent Shader ( #198 ) + * Reflect Shader ( #197 ) + * Shader Commands now support -Force +* Drastically improved start time on Windows (#214) +* OBS Sources: + * New Sources: + * OBSSoundCloudSource ( #179 ) + * OBSSwitchSource (#142) + * OBSMarkdownSource (#143) + * OBSWaveformSource (#141) + * All existing sources are now implemented in a `Get`, and aliased to `Set`,`Add` + * Making Set also Get-OBSWindowSource (#152) + * Making Set also Get-OBSVLCSource (#151) + * Making Set also Get-OBSMediaSource (#150) + * Making Set also Get-OBSColorSource (#148) + * Making Set also Get-OBSBrowserSource (#147) + * Making Set also Get-OBSAudioOutputSource (#146) +* New Effects: + * Zoom In / Out Effect ( #164 ) + * Start-OBSEffect - Adding -Reverse (Fixes #121) +* Exporting `$obs` (#157, #158, #159) and drastically expanding pseudo types +* Pseudo Types + * GetCurrentProgramScene.ToString() ( Fixes #202, Fixes #166 ) + * OBS.Beat ( #195 ) + * OBS.Beat.Timer + * OBS.Beat.TapBPM ( #191) + * Stopping OBS.Beat.Timer on Unload + * OBS.Beat.get_Sine ( #192 ) + * OBS.Beat.get_Cosine ( #193 ) + * OBS.Beat.Angle ( #194 ) + * OBS.Beat.Duration ( #189 ) + * OBS.Beat.BeatCount ( #190 ) + * OBS.Beat.BeatStart ( #188 ) + * OBS.Beat.BPM ( #187 ) + * $obs.Beat ( #186 ) + * OBS.Input + * OBS.Input.Disable/EnableAllFilter(s) ( #183 ) + * OBS.SceneItem.Animate Permissiveness ( #182 ) + * OBS.Filter.Disable PassThru support ( #181 ) + * OBS.Statistics ( #178 ) + * OBS.Input ( #174 ) + * OBS.Filter ( #175 ) + * OBS.SceneItem ( #173 ) + * OBS.GetSceneItemList.Response.Stretch() ( #172 ) + * OBS.GetSceneItemList.Response.Center() ( #171 ) + * OBS.GetInputList .SourceName alias ( #170 ) + * Adding .SceneItem to OBS.Inputs (Fixes #154) +* Minor Fixes: + * Watch-OBS -BufferSize: Defaulting to 64kb ( Fixes #212, Fixes #213 ) + * Fixing -Scene parameter defaults ( Fixes #210 ) + * Updating Build Conditions + * obs-powershell now mounts itself ( #180 ) + * obs-powershell supporting module profiles (#155) + +--- + ## obs-powershell 0.1.9: * New Filters! diff --git a/docs/Clear-OBSScene.md b/docs/Clear-OBSScene.md index 8603a8ce1..f9c335bd6 100644 --- a/docs/Clear-OBSScene.md +++ b/docs/Clear-OBSScene.md @@ -1,17 +1,11 @@ Clear-OBSScene -------------- - - - ### Synopsis Clears a Scene in OBS - - --- - ### Description Clears a Scene in OBS. @@ -20,38 +14,25 @@ All inputs will be removed from the scene. This cannot be undone, so you will be prompted for confirmation. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Clear-OBSScene -SceneName Scene ``` - - --- - ### Parameters #### **SceneName** - Name of the scene. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |1 |true (ByPropertyName)| - - #### **WhatIf** -WhatIf is an automatic variable that is created when a command has ```[CmdletBinding(SupportsShouldProcess)]```. -WhatIf is used to see what would happen, or return operations without executing them @@ -61,14 +42,10 @@ Name of the scene. If you pass ```-Confirm:$false``` you will not be prompted. - If the command sets a ```[ConfirmImpact("Medium")]``` which is lower than ```$confirmImpactPreference```, you will not be prompted unless -Confirm is passed. - - --- - ### Syntax ```PowerShell Clear-OBSScene [[-SceneName] ] [-WhatIf] [-Confirm] [] diff --git a/docs/Connect-OBS.md b/docs/Connect-OBS.md index b2bafff2f..ab065d92e 100644 --- a/docs/Connect-OBS.md +++ b/docs/Connect-OBS.md @@ -1,86 +1,51 @@ Connect-OBS ----------- - - - ### Synopsis Connects to Open Broadcast Studio - - --- - ### Description Connects to the obs-websocket. This must occur at least once to use obs-powershell. - - --- - ### Related Links * [Disconnect-OBS](Disconnect-OBS.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Connect-OBS ``` - - --- - ### Parameters #### **WebSocketUri** - The OBS websocket URL. If not provided, this will default to loopback on port 4455. - - - - - |Type |Required|Position|PipelineInput | |-------|--------|--------|---------------------| |`[Uri]`|false |named |true (ByPropertyName)| - - #### **WebSocketToken** - A randomly generated password used to connect to OBS. You can see the websocket password in Tools -> obs-websocket settings -> show connect info - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------| |`[String]`|false |named |true (ByPropertyName)|WebSocketPassword| - - - - --- - ### Syntax ```PowerShell Connect-OBS [] diff --git a/docs/Copy-OBSSceneItem.md b/docs/Copy-OBSSceneItem.md index 34b0ac690..ac28e53f7 100644 --- a/docs/Copy-OBSSceneItem.md +++ b/docs/Copy-OBSSceneItem.md @@ -1,124 +1,80 @@ Copy-OBSSceneItem ----------------- - - - ### Synopsis Copy-OBSSceneItem : DuplicateSceneItem - - --- - ### Description Duplicates a scene item, copying all transform and crop info. Scenes only - Copy-OBSSceneItem calls the OBS WebSocket with a request of type DuplicateSceneItem. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#duplicatesceneitem](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#duplicatesceneitem) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **DestinationSceneName** - Name of the scene to create the duplicated item in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|false |3 |true (ByPropertyName)| +|`[String]`|false |4 |true (ByPropertyName)| +#### **DestinationSceneUuid** +UUID of the scene to create the duplicated item in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Copy-OBSSceneItem [-SceneName] [-SceneItemId] [[-DestinationSceneName] ] [-PassThru] [-NoResponse] [] +Copy-OBSSceneItem [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [[-DestinationSceneName] ] [[-DestinationSceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Disconnect-OBS.md b/docs/Disconnect-OBS.md index 44b115306..47bed9c1c 100644 --- a/docs/Disconnect-OBS.md +++ b/docs/Disconnect-OBS.md @@ -1,49 +1,33 @@ Disconnect-OBS -------------- - - - ### Synopsis Disconnects OBS - - --- - ### Description Disconnects Websockets from OBS. All websockets will be disconnected. - - --- - ### Related Links * [Connect-OBS](Connect-OBS.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Disconnect-OBS ``` - - --- - ### Syntax ```PowerShell Disconnect-OBS [] diff --git a/docs/Get-OBS.md b/docs/Get-OBS.md index 5897f4deb..6ada95a1b 100644 --- a/docs/Get-OBS.md +++ b/docs/Get-OBS.md @@ -1,37 +1,26 @@ Get-OBS ------- - - - ### Synopsis Gets OBS - - --- - ### Description Outputs OBS connection information and state. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBS ``` - - --- - ### Syntax ```PowerShell Get-OBS [] diff --git a/docs/Get-OBS3dSwapTransitionShader.md b/docs/Get-OBS3dSwapTransitionShader.md new file mode 100644 index 000000000..7e003b128 --- /dev/null +++ b/docs/Get-OBS3dSwapTransitionShader.md @@ -0,0 +1,119 @@ +Get-OBS3dSwapTransitionShader +----------------------------- + +### Synopsis +Get-OBS3dSwapTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-Reflection] ] [[-Perspective] ] [[-Depth] ] [[-BackgroundColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BackgroundColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |background_color| + +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **Depth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Perspective** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Reflection** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBS3dSwapTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-Reflection] ] [[-Perspective] ] [[-Depth] ] [[-BackgroundColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSAddShader.md b/docs/Get-OBSAddShader.md new file mode 100644 index 000000000..3273079cd --- /dev/null +++ b/docs/Get-OBSAddShader.md @@ -0,0 +1,77 @@ +Get-OBSAddShader +---------------- + +### Synopsis +Get-OBSAddShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OtherImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |other_image| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAddShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSAlphaBorderShader.md b/docs/Get-OBSAlphaBorderShader.md new file mode 100644 index 000000000..7670315ad --- /dev/null +++ b/docs/Get-OBSAlphaBorderShader.md @@ -0,0 +1,89 @@ +Get-OBSAlphaBorderShader +------------------------ + +### Synopsis +Get-OBSAlphaBorderShader [[-BorderColor] ] [[-BorderThickness] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAlphaBorderShader [[-BorderColor] ] [[-BorderThickness] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSAlphaGamingBentCameraShader.md b/docs/Get-OBSAlphaGamingBentCameraShader.md new file mode 100644 index 000000000..761886161 --- /dev/null +++ b/docs/Get-OBSAlphaGamingBentCameraShader.md @@ -0,0 +1,131 @@ +Get-OBSAlphaGamingBentCameraShader +---------------------------------- + +### Synopsis +Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LeftFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_flip_shadow| + +#### **LeftFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_flip_width| + +#### **LeftSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_side_shadow| + +#### **LeftSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |left_side_size| + +#### **LeftSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_side_width| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RightFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_flip_shadow| + +#### **RightFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_flip_width| + +#### **RightSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_side_shadow| + +#### **RightSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |right_side_size| + +#### **RightSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_side_width| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSAnimatedPathShader.md b/docs/Get-OBSAnimatedPathShader.md new file mode 100644 index 000000000..c2855cb1c --- /dev/null +++ b/docs/Get-OBSAnimatedPathShader.md @@ -0,0 +1,131 @@ +Get-OBSAnimatedPathShader +------------------------- + +### Synopsis +Get-OBSAnimatedPathShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-SpeedPercent] ] [[-PathMap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PathMap** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[String]`|false |named |False |path_map| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **Reverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAnimatedPathShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-SpeedPercent] ] [[-PathMap] ] [-Reverse ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSAnimatedTextureShader.md b/docs/Get-OBSAnimatedTextureShader.md new file mode 100644 index 000000000..3eba62697 --- /dev/null +++ b/docs/Get-OBSAnimatedTextureShader.md @@ -0,0 +1,209 @@ +Get-OBSAnimatedTextureShader +---------------------------- + +### Synopsis +Get-OBSAnimatedTextureShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-AnimationImage] ] [[-ColorizationImage] ] [[-PolarAngle] ] [[-PolarHeight] ] [[-SpeedHorizontalPercent] ] [[-SpeedVerticalPercent] ] [[-TintSpeedHorizontalPercent] ] [[-TintSpeedVerticalPercent] ] [[-Alpha] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Bounce] [-CenterAnimation] [-PolarAnimation] [-UseAnimationImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Alpha** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AnimationImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[String]`|false |named |False |Animation_Image| + +#### **Bounce** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CenterAnimation** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |center_animation| + +#### **ColorizationImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------------| +|`[String]`|false |named |False |Colorization_Image| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PolarAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |polar_angle| + +#### **PolarAnimation** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[Switch]`|false |named |False |polar_animation| + +#### **PolarHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |polar_height| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **Reverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedHorizontalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------------| +|`[Float]`|false |named |False |speed_horizontal_percent| + +#### **SpeedVerticalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |speed_vertical_percent| + +#### **TintSpeedHorizontalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |tint_speed_horizontal_percent| + +#### **TintSpeedVerticalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------------| +|`[Float]`|false |named |False |tint_speed_vertical_percent| + +#### **UseAnimationImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------------| +|`[Switch]`|false |named |False |Use_Animation_Image_Color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAnimatedTextureShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-AnimationImage] ] [[-ColorizationImage] ] [-Reverse ] [-Bounce ] [-CenterAnimation ] [-PolarAnimation ] [[-PolarAngle] ] [[-PolarHeight] ] [[-SpeedHorizontalPercent] ] [[-SpeedVerticalPercent] ] [[-TintSpeedHorizontalPercent] ] [[-TintSpeedVerticalPercent] ] [[-Alpha] ] [-UseAnimationImageColor ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSAsciiShader.md b/docs/Get-OBSAsciiShader.md new file mode 100644 index 000000000..fb5b5cfa9 --- /dev/null +++ b/docs/Get-OBSAsciiShader.md @@ -0,0 +1,101 @@ +Get-OBSAsciiShader +------------------ + +### Synopsis +Get-OBSAsciiShader [[-Scale] ] [[-BaseColor] ] [[-CharacterSet] ] [[-Note] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Monochrome] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BaseColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |base_color| + +#### **CharacterSet** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |character_set| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Monochrome** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Note** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAsciiShader [[-Scale] ] [[-BaseColor] ] [-Monochrome ] [[-CharacterSet] ] [[-Note] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSAspectRatioShader.md b/docs/Get-OBSAspectRatioShader.md new file mode 100644 index 000000000..06e75861e --- /dev/null +++ b/docs/Get-OBSAspectRatioShader.md @@ -0,0 +1,131 @@ +Get-OBSAspectRatioShader +------------------------ + +### Synopsis +Get-OBSAspectRatioShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAspectRatioShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSAudioOutputSource.md b/docs/Get-OBSAudioOutputSource.md new file mode 100644 index 000000000..28579f10e --- /dev/null +++ b/docs/Get-OBSAudioOutputSource.md @@ -0,0 +1,73 @@ +Set-OBSAudioOutputSource +------------------------ + +### Synopsis +Adds or sets an audio output source + +--- + +### Description + +Adds or sets an audio output source in OBS. This captures the audio that is being sent to an output device. + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Add-OBSAudioOutputSource +``` +> EXAMPLE 2 + +```PowerShell +Set-OBSAudioOutputSource -AudioDevice Speakers +``` + +--- + +### Parameters +#### **AudioDevice** +The name of the audio device. +This name or device ID of the audio device that should be captured. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-----------------------------------| +|`[String]`|false |1 |true (ByPropertyName)|ItemValue
ItemName
DeviceID| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |2 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, "AudioOutput$($AudioDevice)" will be the input source name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |3 |true (ByPropertyName)|InputName
SourceName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Notes +This command currently only supports capturing default audio on Windows. +To add support for other operating systems, file an issue or open a pull request. + +--- + +### Syntax +```PowerShell +Set-OBSAudioOutputSource [[-AudioDevice] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Get-OBSBackgroundRemovalShader.md b/docs/Get-OBSBackgroundRemovalShader.md new file mode 100644 index 000000000..a49d8ebfe --- /dev/null +++ b/docs/Get-OBSBackgroundRemovalShader.md @@ -0,0 +1,161 @@ +Get-OBSBackgroundRemovalShader +------------------------------ + +### Synopsis +Get-OBSBackgroundRemovalShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-Target] ] [[-Color] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-Convert709to601] [-Convert601to709] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Convert601to709** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Convert_601to709| + +#### **Convert709to601** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Convert_709to601| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Invert** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Target** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBackgroundRemovalShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-Target] ] [[-Color] ] [[-Opacity] ] [-Invert ] [-Convert709to601 ] [-Convert601to709 ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSBlendOpacityShader.md b/docs/Get-OBSBlendOpacityShader.md new file mode 100644 index 000000000..57f3bbaba --- /dev/null +++ b/docs/Get-OBSBlendOpacityShader.md @@ -0,0 +1,125 @@ +Get-OBSBlendOpacityShader +------------------------- + +### Synopsis +Get-OBSBlendOpacityShader [[-RotationOffset] ] [[-OpacityStartPercent] ] [[-OpacityEndPercent] ] [[-Spread] ] [[-Speed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OpacityEndPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------------| +|`[Float]`|false |named |False |Opacity_End_Percent| + +#### **OpacityStartPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |Opacity_Start_Percent| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Rotational** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RotationOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Rotation_Offset| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Spread** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBlendOpacityShader [-Vertical ] [-Rotational ] [[-RotationOffset] ] [[-OpacityStartPercent] ] [[-OpacityEndPercent] ] [[-Spread] ] [[-Speed] ] [-ApplyToAlphaLayer ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSBlinkShader.md b/docs/Get-OBSBlinkShader.md new file mode 100644 index 000000000..4c2ef4b14 --- /dev/null +++ b/docs/Get-OBSBlinkShader.md @@ -0,0 +1,77 @@ +Get-OBSBlinkShader +------------------ + +### Synopsis +Get-OBSBlinkShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBlinkShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSBloomShader.md b/docs/Get-OBSBloomShader.md new file mode 100644 index 000000000..9508b71d4 --- /dev/null +++ b/docs/Get-OBSBloomShader.md @@ -0,0 +1,95 @@ +Get-OBSBloomShader +------------------ + +### Synopsis +Get-OBSBloomShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AmpFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AngleSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |Angle_Steps| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RadiusSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Radius_Steps| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBloomShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSBorderShader.md b/docs/Get-OBSBorderShader.md new file mode 100644 index 000000000..1a0c697e1 --- /dev/null +++ b/docs/Get-OBSBorderShader.md @@ -0,0 +1,77 @@ +Get-OBSBorderShader +------------------- + +### Synopsis +Get-OBSBorderShader [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBorderShader [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSBoxBlurShader.md b/docs/Get-OBSBoxBlurShader.md new file mode 100644 index 000000000..1de90563b --- /dev/null +++ b/docs/Get-OBSBoxBlurShader.md @@ -0,0 +1,101 @@ +Get-OBSBoxBlurShader +-------------------- + +### Synopsis +Get-OBSBoxBlurShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MaskBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Mask_Bottom| + +#### **MaskLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Mask_Left| + +#### **MaskRight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Mask_Right| + +#### **MaskTop** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Mask_Top| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBoxBlurShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSBrowserSource.md b/docs/Get-OBSBrowserSource.md new file mode 100644 index 000000000..5c94662b2 --- /dev/null +++ b/docs/Get-OBSBrowserSource.md @@ -0,0 +1,113 @@ +Set-OBSBrowserSource +-------------------- + +### Synopsis +Sets a browser source + +--- + +### Description + +Adds or changes a browser source in OBS. + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-OBSBrowserSource -Uri https://pssvg.start-automating.com/Examples/Stars.svg +``` + +--- + +### Parameters +#### **Uri** +The uri or file path to display. +If the uri points to a local file, this will be preferred + +|Type |Required|Position|PipelineInput |Aliases | +|-------|--------|--------|---------------------|-----------------------------------------------| +|`[Uri]`|false |1 |true (ByPropertyName)|Url
Href
Path
FilePath
FullName| + +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |3 |true (ByPropertyName)| + +#### **CSS** +The css style used to render the browser page. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| + +#### **ShutdownWhenHidden** +If set, the browser source will shutdown when it is hidden + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **RestartWhenActived** +If set, the browser source will restart when it is activated. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **RerouteAudio** +If set, audio from the browser source will be rerouted into OBS. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FramesPerSecond** +If provided, the browser source will render at a custom frame rate. + +|Type |Required|Position|PipelineInput |Aliases| +|---------|--------|--------|---------------------|-------| +|`[Int32]`|false |5 |true (ByPropertyName)|FPS | + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |7 |true (ByPropertyName)|InputName
SourceName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSBrowserSource [[-Uri] ] [[-Width] ] [[-Height] ] [[-CSS] ] [-ShutdownWhenHidden] [-RestartWhenActived] [-RerouteAudio] [[-FramesPerSecond] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Get-OBSBulgePinchShader.md b/docs/Get-OBSBulgePinchShader.md new file mode 100644 index 000000000..a0c99f99e --- /dev/null +++ b/docs/Get-OBSBulgePinchShader.md @@ -0,0 +1,107 @@ +Get-OBSBulgePinchShader +----------------------- + +### Synopsis +Get-OBSBulgePinchShader [[-Radius] ] [[-Magnitude] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Magnitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBulgePinchShader [[-Radius] ] [[-Magnitude] ] [[-CenterX] ] [[-CenterY] ] [-Animate ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSBurnShader.md b/docs/Get-OBSBurnShader.md new file mode 100644 index 000000000..db2f92fb7 --- /dev/null +++ b/docs/Get-OBSBurnShader.md @@ -0,0 +1,137 @@ +Get-OBSBurnShader +----------------- + +### Synopsis +Get-OBSBurnShader [[-BurnGradient] ] [[-Speed] ] [[-GradientAdjust] ] [[-DissolveValue] ] [[-SmokeHorizonalSpeed] ] [[-SmokeVerticalSpeed] ] [[-Iterations] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-ApplySmoke] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Animated** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ApplySmoke** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |Apply_Smoke| + +#### **ApplyToChannel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Apply_to_Channel| + +#### **BurnGradient** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |Burn_Gradient| + +#### **DissolveValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Dissolve_Value| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientAdjust** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Gradient_Adjust| + +#### **Iterations** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SmokeHorizonalSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |Smoke_Horizonal_Speed| + +#### **SmokeVerticalSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |Smoke_Vertical_Speed| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBurnShader [[-BurnGradient] ] [[-Speed] ] [[-GradientAdjust] ] [[-DissolveValue] ] [-Animated ] [-ApplyToChannel ] [-ApplySmoke ] [[-SmokeHorizonalSpeed] ] [[-SmokeVerticalSpeed] ] [[-Iterations] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSCartoonShader.md b/docs/Get-OBSCartoonShader.md new file mode 100644 index 000000000..14b56e4cb --- /dev/null +++ b/docs/Get-OBSCartoonShader.md @@ -0,0 +1,143 @@ +Get-OBSCartoonShader +-------------------- + +### Synopsis +Get-OBSCartoonShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-HueSteps] ] [[-ValueSteps] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HueSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |hue_steps| + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ValueSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |value_steps| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCartoonShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-HueSteps] ] [[-ValueSteps] ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSCellShadedShader.md b/docs/Get-OBSCellShadedShader.md new file mode 100644 index 000000000..004a4eeca --- /dev/null +++ b/docs/Get-OBSCellShadedShader.md @@ -0,0 +1,95 @@ +Get-OBSCellShadedShader +----------------------- + +### Synopsis +Get-OBSCellShadedShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AmpFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AngleSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |Angle_Steps| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RadiusSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Radius_Steps| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCellShadedShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSChromaUVDistortionShader.md b/docs/Get-OBSChromaUVDistortionShader.md new file mode 100644 index 000000000..036fe326d --- /dev/null +++ b/docs/Get-OBSChromaUVDistortionShader.md @@ -0,0 +1,89 @@ +Get-OBSChromaUVDistortionShader +------------------------------- + +### Synopsis +Get-OBSChromaUVDistortionShader [[-Distortion] ] [[-Amplitude] ] [[-Chroma] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Amplitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Chroma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Distortion** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSChromaUVDistortionShader [[-Distortion] ] [[-Amplitude] ] [[-Chroma] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSChromaticAberrationShader.md b/docs/Get-OBSChromaticAberrationShader.md new file mode 100644 index 000000000..16ec8a6c1 --- /dev/null +++ b/docs/Get-OBSChromaticAberrationShader.md @@ -0,0 +1,119 @@ +Get-OBSChromaticAberrationShader +-------------------------------- + +### Synopsis +Get-OBSChromaticAberrationShader [[-Power] ] [[-Gamma] ] [[-NumIter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DistortRadial] [-DistortBarrel] [-OffsetSpectrumYcgco] [-OffsetSpectrumYuv] [-UseRandom] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DistortBarrel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |distort_barrel| + +#### **DistortRadial** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |distort_radial| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Gamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NumIter** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------| +|`[Int]`|false |named |False |num_iter| + +#### **OffsetSpectrumYcgco** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------------| +|`[Switch]`|false |named |False |offset_spectrum_ycgco| + +#### **OffsetSpectrumYuv** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |offset_spectrum_yuv| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseRandom** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |use_random| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSChromaticAberrationShader [[-Power] ] [[-Gamma] ] [[-NumIter] ] [-DistortRadial ] [-DistortBarrel ] [-OffsetSpectrumYcgco ] [-OffsetSpectrumYuv ] [-UseRandom ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSCircleMaskFilterShader.md b/docs/Get-OBSCircleMaskFilterShader.md new file mode 100644 index 000000000..510c1b8cc --- /dev/null +++ b/docs/Get-OBSCircleMaskFilterShader.md @@ -0,0 +1,107 @@ +Get-OBSCircleMaskFilterShader +----------------------------- + +### Synopsis +Get-OBSCircleMaskFilterShader [[-Radius] ] [[-CircleOffsetX] ] [[-CircleOffsetY] ] [[-SourceOffsetX] ] [[-SourceOffsetY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Antialiasing] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Antialiasing** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CircleOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Circle_Offset_X| + +#### **CircleOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Circle_Offset_Y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SourceOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Source_Offset_X| + +#### **SourceOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Source_Offset_Y| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCircleMaskFilterShader [[-Radius] ] [[-CircleOffsetX] ] [[-CircleOffsetY] ] [[-SourceOffsetX] ] [[-SourceOffsetY] ] [-Antialiasing ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSClockAnalogShader.md b/docs/Get-OBSClockAnalogShader.md new file mode 100644 index 000000000..2cf894bac --- /dev/null +++ b/docs/Get-OBSClockAnalogShader.md @@ -0,0 +1,137 @@ +Get-OBSClockAnalogShader +------------------------ + +### Synopsis +Get-OBSClockAnalogShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-HourHandleColor] ] [[-MinuteHandleColor] ] [[-SecondHandleColor] ] [[-OutlineColor] ] [[-TopLineColor] ] [[-BackgroundColor] ] [[-TimeOffsetHours] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BackgroundColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|----------------| +|`[System.Single[]]`|false |named |False |background_color| + +#### **CurrentTimeHour** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |current_time_hour| + +#### **CurrentTimeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_min| + +#### **CurrentTimeMs** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |current_time_ms| + +#### **CurrentTimeSec** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_sec| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HourHandleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |hour_handle_color| + +#### **MinuteHandleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-------------------| +|`[System.Single[]]`|false |named |False |minute_handle_color| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OutlineColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-------------| +|`[System.Single[]]`|false |named |False |outline_color| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SecondHandleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-------------------| +|`[System.Single[]]`|false |named |False |second_handle_color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeOffsetHours** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |time_offset_hours| + +#### **TopLineColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------------| +|`[System.Single[]]`|false |named |False |top_line_color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSClockAnalogShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-HourHandleColor] ] [[-MinuteHandleColor] ] [[-SecondHandleColor] ] [[-OutlineColor] ] [[-TopLineColor] ] [[-BackgroundColor] ] [[-TimeOffsetHours] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSClockDigitalLedShader.md b/docs/Get-OBSClockDigitalLedShader.md new file mode 100644 index 000000000..5c31ba02b --- /dev/null +++ b/docs/Get-OBSClockDigitalLedShader.md @@ -0,0 +1,131 @@ +Get-OBSClockDigitalLedShader +---------------------------- + +### Synopsis +Get-OBSClockDigitalLedShader [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-LedColor] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowMatrix] [-ShowOff] [-Ampm] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Ampm** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CurrentTimeHour** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |current_time_hour| + +#### **CurrentTimeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_min| + +#### **CurrentTimeSec** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_sec| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LedColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetHours** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **OffsetSeconds** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShowMatrix** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShowOff** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeMode** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSClockDigitalLedShader [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [-ShowMatrix ] [-ShowOff ] [-Ampm ] [[-LedColor] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSClockDigitalNixieShader.md b/docs/Get-OBSClockDigitalNixieShader.md new file mode 100644 index 000000000..5af84a4da --- /dev/null +++ b/docs/Get-OBSClockDigitalNixieShader.md @@ -0,0 +1,143 @@ +Get-OBSClockDigitalNixieShader +------------------------------ + +### Synopsis +Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-Corecolor] ] [[-Halocolor] ] [[-Flarecolor] ] [[-Anodecolor] ] [[-Anodehighlightscolor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Anodecolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Anodehighlightscolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Corecolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **CurrentTimeHour** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |current_time_hour| + +#### **CurrentTimeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_min| + +#### **CurrentTimeMs** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |current_time_ms| + +#### **CurrentTimeSec** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_sec| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Flarecolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Halocolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetHours** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **OffsetSeconds** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeMode** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-Corecolor] ] [[-Halocolor] ] [[-Flarecolor] ] [[-Anodecolor] ] [[-Anodehighlightscolor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSColorDepthShader.md b/docs/Get-OBSColorDepthShader.md new file mode 100644 index 000000000..7a2c10ffb --- /dev/null +++ b/docs/Get-OBSColorDepthShader.md @@ -0,0 +1,83 @@ +Get-OBSColorDepthShader +----------------------- + +### Synopsis +Get-OBSColorDepthShader [[-ColorDepth] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ColorDepth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixelSize** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSColorDepthShader [[-ColorDepth] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSColorGradeFilterShader.md b/docs/Get-OBSColorGradeFilterShader.md new file mode 100644 index 000000000..c6a05c9a1 --- /dev/null +++ b/docs/Get-OBSColorGradeFilterShader.md @@ -0,0 +1,101 @@ +Get-OBSColorGradeFilterShader +----------------------------- + +### Synopsis +Get-OBSColorGradeFilterShader [[-Notes] ] [[-Lut] ] [[-LutAmountPercent] ] [[-LutScalePercent] ] [[-LutOffsetPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Lut** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LutAmountPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------| +|`[Int]`|false |named |False |lut_amount_percent| + +#### **LutOffsetPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------| +|`[Int]`|false |named |False |lut_offset_percent| + +#### **LutScalePercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |lut_scale_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSColorGradeFilterShader [[-Notes] ] [[-Lut] ] [[-LutAmountPercent] ] [[-LutScalePercent] ] [[-LutOffsetPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSColorSource.md b/docs/Get-OBSColorSource.md new file mode 100644 index 000000000..d1f7065f0 --- /dev/null +++ b/docs/Get-OBSColorSource.md @@ -0,0 +1,58 @@ +Set-OBSColorSource +------------------ + +### Synopsis +Adds a color source + +--- + +### Description + +Adds a color source to OBS. This displays a single 32-bit color (RGBA). + +--- + +### Related Links +* [Add-OBSInput](Add-OBSInput.md) + +* [Set-OBSInputSettings](Set-OBSInputSettings.md) + +--- + +### Parameters +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |1 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, "Display $($Monitor + 1)" will be the input source name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |2 |true (ByPropertyName)|InputName| + +#### **Color** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSColorSource [[-Scene] ] [[-Name] ] [[-Color] ] [-Force] [] +``` diff --git a/docs/Get-OBSCornerPinShader.md b/docs/Get-OBSCornerPinShader.md new file mode 100644 index 000000000..6fc77671d --- /dev/null +++ b/docs/Get-OBSCornerPinShader.md @@ -0,0 +1,125 @@ +Get-OBSCornerPinShader +---------------------- + +### Synopsis +Get-OBSCornerPinShader [[-TopLeftX] ] [[-TopLeftY] ] [[-TopRightX] ] [[-TopRightY] ] [[-BottomLeftX] ] [[-BottomLeftY] ] [[-BottomRightX] ] [[-BottomRightY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AntialiasEdges] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AntialiasEdges** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[Switch]`|false |named |False |Antialias_Edges| + +#### **BottomLeftX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Bottom_Left_X| + +#### **BottomLeftY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Bottom_Left_Y| + +#### **BottomRightX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Bottom_Right_X| + +#### **BottomRightY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Bottom_Right_Y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TopLeftX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Top_Left_X| + +#### **TopLeftY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Top_Left_Y| + +#### **TopRightX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Top_Right_X| + +#### **TopRightY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Top_Right_Y| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCornerPinShader [-AntialiasEdges ] [[-TopLeftX] ] [[-TopLeftY] ] [[-TopRightX] ] [[-TopRightY] ] [[-BottomLeftX] ] [[-BottomLeftY] ] [[-BottomRightX] ] [[-BottomRightY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSCrtCurvatureShader.md b/docs/Get-OBSCrtCurvatureShader.md new file mode 100644 index 000000000..ab0280728 --- /dev/null +++ b/docs/Get-OBSCrtCurvatureShader.md @@ -0,0 +1,89 @@ +Get-OBSCrtCurvatureShader +------------------------- + +### Synopsis +Get-OBSCrtCurvatureShader [[-Strength] ] [[-Border] ] [[-Feathering] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Border** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Feathering** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCrtCurvatureShader [[-Strength] ] [[-Border] ] [[-Feathering] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSCurrentPreviewScene.md b/docs/Get-OBSCurrentPreviewScene.md index 06325948a..f1e76282e 100644 --- a/docs/Get-OBSCurrentPreviewScene.md +++ b/docs/Get-OBSCurrentPreviewScene.md @@ -1,89 +1,55 @@ Get-OBSCurrentPreviewScene -------------------------- - - - ### Synopsis Get-OBSCurrentPreviewScene : GetCurrentPreviewScene - - --- - ### Description Gets the current preview scene. Only available when studio mode is enabled. +Note: This request is slated to have the `currentPreview`-prefixed fields removed from in an upcoming RPC version. Get-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type GetCurrentPreviewScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentpreviewscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentpreviewscene) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSCurrentPreviewScene ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSCurrentPreviewScene [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSCurrentProgramScene.md b/docs/Get-OBSCurrentProgramScene.md index 274bce2fa..0edc6026b 100644 --- a/docs/Get-OBSCurrentProgramScene.md +++ b/docs/Get-OBSCurrentProgramScene.md @@ -1,87 +1,53 @@ Get-OBSCurrentProgramScene -------------------------- - - - ### Synopsis Get-OBSCurrentProgramScene : GetCurrentProgramScene - - --- - ### Description Gets the current program scene. +Note: This request is slated to have the `currentProgram`-prefixed fields removed from in an upcoming RPC version. Get-OBSCurrentProgramScene calls the OBS WebSocket with a request of type GetCurrentProgramScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentprogramscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentprogramscene) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSCurrentProgramScene ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSCurrentProgramScene [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSCurrentSceneTransition.md b/docs/Get-OBSCurrentSceneTransition.md index 0161e5545..8a01520e4 100644 --- a/docs/Get-OBSCurrentSceneTransition.md +++ b/docs/Get-OBSCurrentSceneTransition.md @@ -1,87 +1,51 @@ Get-OBSCurrentSceneTransition ----------------------------- - - - ### Synopsis Get-OBSCurrentSceneTransition : GetCurrentSceneTransition - - --- - ### Description Gets information about the current scene transition. - Get-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type GetCurrentSceneTransition. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransition](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransition) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSCurrentSceneTransition ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSCurrentSceneTransition [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSCurrentSceneTransitionCursor.md b/docs/Get-OBSCurrentSceneTransitionCursor.md index 3eb2a5476..f8b625fe6 100644 --- a/docs/Get-OBSCurrentSceneTransitionCursor.md +++ b/docs/Get-OBSCurrentSceneTransitionCursor.md @@ -1,89 +1,53 @@ Get-OBSCurrentSceneTransitionCursor ----------------------------------- - - - ### Synopsis Get-OBSCurrentSceneTransitionCursor : GetCurrentSceneTransitionCursor - - --- - ### Description Gets the cursor position of the current scene transition. Note: `transitionCursor` will return 1.0 when the transition is inactive. - Get-OBSCurrentSceneTransitionCursor calls the OBS WebSocket with a request of type GetCurrentSceneTransitionCursor. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransitioncursor](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransitioncursor) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSCurrentSceneTransitionCursor ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSCurrentSceneTransitionCursor [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSCurveShader.md b/docs/Get-OBSCurveShader.md new file mode 100644 index 000000000..b2adf5321 --- /dev/null +++ b/docs/Get-OBSCurveShader.md @@ -0,0 +1,89 @@ +Get-OBSCurveShader +------------------ + +### Synopsis +Get-OBSCurveShader [[-Strength] ] [[-Scale] ] [[-CurveColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CurveColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |curve_color| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCurveShader [[-Strength] ] [[-Scale] ] [[-CurveColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSCutRectPerCornerShader.md b/docs/Get-OBSCutRectPerCornerShader.md new file mode 100644 index 000000000..2afa0f284 --- /dev/null +++ b/docs/Get-OBSCutRectPerCornerShader.md @@ -0,0 +1,125 @@ +Get-OBSCutRectPerCornerShader +----------------------------- + +### Synopsis +Get-OBSCutRectPerCornerShader [[-CornerTl] ] [[-CornerTr] ] [[-CornerBr] ] [[-CornerBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerBl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_bl| + +#### **CornerBr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_br| + +#### **CornerTl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_tl| + +#### **CornerTr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_tr| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCutRectPerCornerShader [[-CornerTl] ] [[-CornerTr] ] [[-CornerBr] ] [[-CornerBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSCylinderShader.md b/docs/Get-OBSCylinderShader.md new file mode 100644 index 000000000..873c78048 --- /dev/null +++ b/docs/Get-OBSCylinderShader.md @@ -0,0 +1,83 @@ +Get-OBSCylinderShader +--------------------- + +### Synopsis +Get-OBSCylinderShader [[-CylinderFactor] ] [[-BackgroundCut] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BackgroundCut** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |background_cut| + +#### **CylinderFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |cylinder_factor| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCylinderShader [[-CylinderFactor] ] [[-BackgroundCut] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDarkenShader.md b/docs/Get-OBSDarkenShader.md new file mode 100644 index 000000000..0d45d9a78 --- /dev/null +++ b/docs/Get-OBSDarkenShader.md @@ -0,0 +1,89 @@ +Get-OBSDarkenShader +------------------- + +### Synopsis +Get-OBSDarkenShader [[-OpacityPercentage] ] [[-FillPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FillPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Fill_Percentage| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OpacityPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |Opacity_Percentage| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDarkenShader [[-OpacityPercentage] ] [[-FillPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDeadPixelFixerShader.md b/docs/Get-OBSDeadPixelFixerShader.md new file mode 100644 index 000000000..7a0e34a40 --- /dev/null +++ b/docs/Get-OBSDeadPixelFixerShader.md @@ -0,0 +1,83 @@ +Get-OBSDeadPixelFixerShader +--------------------------- + +### Synopsis +Get-OBSDeadPixelFixerShader [[-DeadPixelX] ] [[-DeadPixelY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DeadPixelX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Dead_Pixel_X| + +#### **DeadPixelY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Dead_Pixel_Y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDeadPixelFixerShader [[-DeadPixelX] ] [[-DeadPixelY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDensitySatHueShader.md b/docs/Get-OBSDensitySatHueShader.md new file mode 100644 index 000000000..a30556382 --- /dev/null +++ b/docs/Get-OBSDensitySatHueShader.md @@ -0,0 +1,197 @@ +Get-OBSDensitySatHueShader +-------------------------- + +### Synopsis +Get-OBSDensitySatHueShader [[-Notes] ] [[-DensityR] ] [[-SaturationR] ] [[-HueShiftR] ] [[-DensityY] ] [[-SaturationY] ] [[-HueShiftY] ] [[-DensityG] ] [[-SaturationG] ] [[-HueShiftG] ] [[-DensityC] ] [[-SaturationC] ] [[-HueShiftC] ] [[-DensityB] ] [[-SaturationB] ] [[-HueShiftB] ] [[-DensityM] ] [[-SaturationM] ] [[-HueShiftM] ] [[-GlobalDensity] ] [[-GlobalSaturation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DensityB** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_b| + +#### **DensityC** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_c| + +#### **DensityG** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_g| + +#### **DensityM** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_m| + +#### **DensityR** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_r| + +#### **DensityY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlobalDensity** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |global_density| + +#### **GlobalSaturation** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |global_saturation| + +#### **HueShiftB** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_b| + +#### **HueShiftC** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_c| + +#### **HueShiftG** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_g| + +#### **HueShiftM** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_m| + +#### **HueShiftR** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_r| + +#### **HueShiftY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_y| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SaturationB** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_b| + +#### **SaturationC** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_c| + +#### **SaturationG** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_g| + +#### **SaturationM** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_m| + +#### **SaturationR** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_r| + +#### **SaturationY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_y| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDensitySatHueShader [[-Notes] ] [[-DensityR] ] [[-SaturationR] ] [[-HueShiftR] ] [[-DensityY] ] [[-SaturationY] ] [[-HueShiftY] ] [[-DensityG] ] [[-SaturationG] ] [[-HueShiftG] ] [[-DensityC] ] [[-SaturationC] ] [[-HueShiftC] ] [[-DensityB] ] [[-SaturationB] ] [[-HueShiftB] ] [[-DensityM] ] [[-SaturationM] ] [[-HueShiftM] ] [[-GlobalDensity] ] [[-GlobalSaturation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDiffuseTransitionShader.md b/docs/Get-OBSDiffuseTransitionShader.md new file mode 100644 index 000000000..75675e21b --- /dev/null +++ b/docs/Get-OBSDiffuseTransitionShader.md @@ -0,0 +1,101 @@ +Get-OBSDiffuseTransitionShader +------------------------------ + +### Synopsis +Get-OBSDiffuseTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-NumSamples] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NumSamples** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |num_samples| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDiffuseTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-NumSamples] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDigitalRainShader.md b/docs/Get-OBSDigitalRainShader.md new file mode 100644 index 000000000..7260531c5 --- /dev/null +++ b/docs/Get-OBSDigitalRainShader.md @@ -0,0 +1,107 @@ +Get-OBSDigitalRainShader +------------------------ + +### Synopsis +Get-OBSDigitalRainShader [[-Font] ] [[-Noise] ] [[-BaseColor] ] [[-RainSpeed] ] [[-CharSpeed] ] [[-GlowContrast] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BaseColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |base_color| + +#### **CharSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |char_speed| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Font** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlowContrast** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |glow_contrast| + +#### **Noise** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RainSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |rain_speed| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDigitalRainShader [[-Font] ] [[-Noise] ] [[-BaseColor] ] [[-RainSpeed] ] [[-CharSpeed] ] [[-GlowContrast] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDivideRotateShader.md b/docs/Get-OBSDivideRotateShader.md new file mode 100644 index 000000000..38615db21 --- /dev/null +++ b/docs/Get-OBSDivideRotateShader.md @@ -0,0 +1,101 @@ +Get-OBSDivideRotateShader +------------------------- + +### Synopsis +Get-OBSDivideRotateShader [[-IChannel0] ] [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |alpha_percentage| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **IChannel0** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |speed_percentage| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDivideRotateShader [[-IChannel0] ] [[-SpeedPercentage] ] [[-AlphaPercentage] ] [-ApplyToAlphaLayer ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDoodleShader.md b/docs/Get-OBSDoodleShader.md new file mode 100644 index 000000000..9727fc2fe --- /dev/null +++ b/docs/Get-OBSDoodleShader.md @@ -0,0 +1,137 @@ +Get-OBSDoodleShader +------------------- + +### Synopsis +Get-OBSDoodleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-DoodleScalePercent] ] [[-SnapPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DoodleScalePercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |Doodle_Scale_Percent| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SnapPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |Snap_Percent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDoodleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-DoodleScalePercent] ] [[-SnapPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDrawingsShader.md b/docs/Get-OBSDrawingsShader.md new file mode 100644 index 000000000..825061a5e --- /dev/null +++ b/docs/Get-OBSDrawingsShader.md @@ -0,0 +1,83 @@ +Get-OBSDrawingsShader +--------------------- + +### Synopsis +Get-OBSDrawingsShader [[-AngleNum] ] [[-SampNum] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AngleNum** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SampNum** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDrawingsShader [[-AngleNum] ] [[-SampNum] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDropShadowShader.md b/docs/Get-OBSDropShadowShader.md new file mode 100644 index 000000000..70e474ccf --- /dev/null +++ b/docs/Get-OBSDropShadowShader.md @@ -0,0 +1,107 @@ +Get-OBSDropShadowShader +----------------------- + +### Synopsis +Get-OBSDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-Notes] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **IsAlphaPremultiplied** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------------| +|`[Switch]`|false |named |False |is_alpha_premultiplied| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShadowBlurSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |shadow_blur_size| + +#### **ShadowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |shadow_color| + +#### **ShadowOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_x| + +#### **ShadowOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_y| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-Notes] ] [[-ShadowColor] ] [-IsAlphaPremultiplied ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDrunkShader.md b/docs/Get-OBSDrunkShader.md new file mode 100644 index 000000000..7a27a5548 --- /dev/null +++ b/docs/Get-OBSDrunkShader.md @@ -0,0 +1,137 @@ +Get-OBSDrunkShader +------------------ + +### Synopsis +Get-OBSDrunkShader [[-ColorMatrix] ] [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeedPercent] ] [[-GlowColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **Blur** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |glow_color| + +#### **GlowPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |glow_percent| + +#### **MaxBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |max_brightness| + +#### **MinBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |min_brightness| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------------| +|`[Int]`|false |named |False |pulse_speed_percent| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDrunkShader [[-ColorMatrix] ] [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeedPercent] ] [-ApplyToAlphaLayer ] [[-GlowColor] ] [-Ease ] [-Glitch ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSDynamicMaskShader.md b/docs/Get-OBSDynamicMaskShader.md new file mode 100644 index 000000000..895c8d20a --- /dev/null +++ b/docs/Get-OBSDynamicMaskShader.md @@ -0,0 +1,221 @@ +Get-OBSDynamicMaskShader +------------------------ + +### Synopsis +Get-OBSDynamicMaskShader [[-InputSource] ] [[-RedBaseValue] ] [[-RedRedInputValue] ] [[-RedGreenInputValue] ] [[-RedBlueInputValue] ] [[-RedAlphaInputValue] ] [[-RedMultiplier] ] [[-GreenBaseValue] ] [[-GreenRedInputValue] ] [[-GreenGreenInputValue] ] [[-GreenBlueInputValue] ] [[-GreenAlphaInputValue] ] [[-GreenMultiplier] ] [[-BlueBaseValue] ] [[-BlueRedInputValue] ] [[-BlueGreenInputValue] ] [[-BlueBlueInputValue] ] [[-BlueAlphaInputValue] ] [[-BlueMultiplier] ] [[-AlphaBaseValue] ] [[-AlphaRedInputValue] ] [[-AlphaGreenInputValue] ] [[-AlphaBlueInputValue] ] [[-AlphaAlphaInputValue] ] [[-AlphaMultiplier] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |alpha_alpha_input_value| + +#### **AlphaBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |alpha_base_value| + +#### **AlphaBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |alpha_blue_input_value| + +#### **AlphaGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |alpha_green_input_value| + +#### **AlphaMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |alpha_multiplier| + +#### **AlphaRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |alpha_red_input_value| + +#### **BlueAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |blue_alpha_input_value| + +#### **BlueBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |blue_base_value| + +#### **BlueBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |blue_blue_input_value| + +#### **BlueGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |blue_green_input_value| + +#### **BlueMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |blue_multiplier| + +#### **BlueRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |blue_red_input_value| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GreenAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |green_alpha_input_value| + +#### **GreenBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |green_base_value| + +#### **GreenBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |green_blue_input_value| + +#### **GreenGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |green_green_input_value| + +#### **GreenMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |green_multiplier| + +#### **GreenRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |green_red_input_value| + +#### **InputSource** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |input_source| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RedAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |red_alpha_input_value| + +#### **RedBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |red_base_value| + +#### **RedBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |red_blue_input_value| + +#### **RedGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |red_green_input_value| + +#### **RedMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |red_multiplier| + +#### **RedRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------------| +|`[Float]`|false |named |False |red_red_input_value| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDynamicMaskShader [[-InputSource] ] [[-RedBaseValue] ] [[-RedRedInputValue] ] [[-RedGreenInputValue] ] [[-RedBlueInputValue] ] [[-RedAlphaInputValue] ] [[-RedMultiplier] ] [[-GreenBaseValue] ] [[-GreenRedInputValue] ] [[-GreenGreenInputValue] ] [[-GreenBlueInputValue] ] [[-GreenAlphaInputValue] ] [[-GreenMultiplier] ] [[-BlueBaseValue] ] [[-BlueRedInputValue] ] [[-BlueGreenInputValue] ] [[-BlueBlueInputValue] ] [[-BlueAlphaInputValue] ] [[-BlueMultiplier] ] [[-AlphaBaseValue] ] [[-AlphaRedInputValue] ] [[-AlphaGreenInputValue] ] [[-AlphaBlueInputValue] ] [[-AlphaAlphaInputValue] ] [[-AlphaMultiplier] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSEdgeDetectionShader.md b/docs/Get-OBSEdgeDetectionShader.md new file mode 100644 index 000000000..8be8a6643 --- /dev/null +++ b/docs/Get-OBSEdgeDetectionShader.md @@ -0,0 +1,137 @@ +Get-OBSEdgeDetectionShader +-------------------------- + +### Synopsis +Get-OBSEdgeDetectionShader [[-Sensitivity] ] [[-EdgeColor] ] [[-NonEdgeColor] ] [[-AlphaLevel] ] [[-RandF] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertEdge] [-EdgeMultiply] [-NonEdgeMultiply] [-AlphaChannel] [-AlphaInvert] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaChannel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |alpha_channel| + +#### **AlphaInvert** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |alpha_invert| + +#### **AlphaLevel** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |alpha_level| + +#### **EdgeColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |edge_color| + +#### **EdgeMultiply** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |edge_multiply| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertEdge** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |invert_edge| + +#### **NonEdgeColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[String]`|false |named |False |non_edge_color| + +#### **NonEdgeMultiply** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |non_edge_multiply| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **Sensitivity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEdgeDetectionShader [[-Sensitivity] ] [-InvertEdge ] [[-EdgeColor] ] [-EdgeMultiply ] [[-NonEdgeColor] ] [-NonEdgeMultiply ] [-AlphaChannel ] [[-AlphaLevel] ] [-AlphaInvert ] [[-RandF] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSEffect.md b/docs/Get-OBSEffect.md index 9ae8c1112..6cc34c270 100644 --- a/docs/Get-OBSEffect.md +++ b/docs/Get-OBSEffect.md @@ -1,17 +1,11 @@ Get-OBSEffect ------------- - - - ### Synopsis Gets OBS Effects - - --- - ### Description Gets effects currently loaded into OBS-PowerShell. @@ -26,46 +20,25 @@ They can also be defined in a function or script named like: * `*.OBS.Effect.*` * `*.OBS.Effects.*` - - --- - ### Related Links * [Import-OBSEffect](Import-OBSEffect.md) - - * [Remove-OBSEffect](Remove-OBSEffect.md) - - - - --- - ### Parameters #### **Name** - The name of the effect. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|----------| |`[String]`|false |1 |true (ByPropertyName)|EffectName| - - - - --- - ### Syntax ```PowerShell Get-OBSEffect [[-Name] ] [] diff --git a/docs/Get-OBSEmbersShader.md b/docs/Get-OBSEmbersShader.md new file mode 100644 index 000000000..b20dd9715 --- /dev/null +++ b/docs/Get-OBSEmbersShader.md @@ -0,0 +1,203 @@ +Get-OBSEmbersShader +------------------- + +### Synopsis +Get-OBSEmbersShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-AnimationSpeed] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-MovementSpeedPercent] ] [[-LayersCount] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **AnimationSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Animation_Speed| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LayersCount** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Layers_Count| + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MovementDirectionHorizontal** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |Movement_Direction_Horizontal| + +#### **MovementDirectionVertical** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------------| +|`[Float]`|false |named |False |Movement_Direction_Vertical| + +#### **MovementSpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------------| +|`[Int]`|false |named |False |Movement_Speed_Percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEmbersShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-AnimationSpeed] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-MovementSpeedPercent] ] [[-LayersCount] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-AlphaPercentage] ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSEmbossColorShader.md b/docs/Get-OBSEmbossColorShader.md new file mode 100644 index 000000000..2094b0100 --- /dev/null +++ b/docs/Get-OBSEmbossColorShader.md @@ -0,0 +1,107 @@ +Get-OBSEmbossColorShader +------------------------ + +### Synopsis +Get-OBSEmbossColorShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-UpDownPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AmpFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AngleSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |Angle_Steps| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RadiusSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Radius_Steps| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UpDownPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Up_Down_Percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEmbossColorShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-UpDownPercent] ] [-ApplyToAlphaLayer ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSEmbossShader.md b/docs/Get-OBSEmbossShader.md new file mode 100644 index 000000000..b054d901f --- /dev/null +++ b/docs/Get-OBSEmbossShader.md @@ -0,0 +1,83 @@ +Get-OBSEmbossShader +------------------- + +### Synopsis +Get-OBSEmbossShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-UseColor] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[Switch]`|false |named |False |Use_Color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEmbossShader [-UseColor ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSExeldroBentCameraShader.md b/docs/Get-OBSExeldroBentCameraShader.md new file mode 100644 index 000000000..d38ae0a1d --- /dev/null +++ b/docs/Get-OBSExeldroBentCameraShader.md @@ -0,0 +1,131 @@ +Get-OBSExeldroBentCameraShader +------------------------------ + +### Synopsis +Get-OBSExeldroBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LeftFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_flip_shadow| + +#### **LeftFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_flip_width| + +#### **LeftSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_side_shadow| + +#### **LeftSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |left_side_size| + +#### **LeftSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_side_width| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RightFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_flip_shadow| + +#### **RightFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_flip_width| + +#### **RightSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_side_shadow| + +#### **RightSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |right_side_size| + +#### **RightSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_side_width| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSExeldroBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFFMpegSource.md b/docs/Get-OBSFFMpegSource.md new file mode 100644 index 000000000..feebd1e73 --- /dev/null +++ b/docs/Get-OBSFFMpegSource.md @@ -0,0 +1,115 @@ +Set-OBSMediaSource +------------------ + +### Synopsis +Adds a media source + +--- + +### Description + +Adds a media source to OBS. + +--- + +### Related Links +* [Add-OBSInput](Add-OBSInput.md) + +* [Set-OBSInputSettings](Set-OBSInputSettings.md) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-OBSMediaSource -FilePath My.mp4 +``` + +--- + +### Parameters +#### **FilePath** +The path to the media file. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-------------------------------------| +|`[String]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file| + +#### **CloseWhenInactive** +If set, the source will close when it is inactive. +By default, this will be set to true. +To explicitly set it to false, use -CloseWhenInactive:$false + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Loop** +If set, the source will automatically restart. + +|Type |Required|Position|PipelineInput |Aliases| +|----------|--------|--------|---------------------|-------| +|`[Switch]`|false |named |true (ByPropertyName)|Looping| + +#### **UseHardwareDecoding** +If set, will use hardware decoding, if available. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|HardwareDecoding
hw_decode| + +#### **ClearOnMediaEnd** +If set, will clear the output on the end of the media. +If this is set to false, the media will freeze on the last frame. +This is set to true by default. +To explicitly set to false, use -ClearMediaEnd:$false + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|ClearOnEnd
NoFreezeFrameOnEnd| + +#### **FFMpegOption** +Any FFMpeg demuxer options. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------------------------| +|`[String]`|false |2 |true (ByPropertyName)|FFMpegOptions
FFMpeg_Options| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FitToScreen** +If set, will fit the input to the screen. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSMediaSource [[-FilePath] ] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +``` diff --git a/docs/Get-OBSFadeTransitionShader.md b/docs/Get-OBSFadeTransitionShader.md new file mode 100644 index 000000000..9ac586e6c --- /dev/null +++ b/docs/Get-OBSFadeTransitionShader.md @@ -0,0 +1,95 @@ +Get-OBSFadeTransitionShader +--------------------------- + +### Synopsis +Get-OBSFadeTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFadeTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFillColorGradientShader.md b/docs/Get-OBSFillColorGradientShader.md new file mode 100644 index 000000000..9b821e72f --- /dev/null +++ b/docs/Get-OBSFillColorGradientShader.md @@ -0,0 +1,101 @@ +Get-OBSFillColorGradientShader +------------------------------ + +### Synopsis +Get-OBSFillColorGradientShader [[-Fill] ] [[-GradientWidth] ] [[-GradientOffset] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Gradient_Offset| + +#### **GradientWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Gradient_Width| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorGradientShader [[-Fill] ] [[-GradientWidth] ] [[-GradientOffset] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFillColorLinearShader.md b/docs/Get-OBSFillColorLinearShader.md new file mode 100644 index 000000000..7f2c04005 --- /dev/null +++ b/docs/Get-OBSFillColorLinearShader.md @@ -0,0 +1,89 @@ +Get-OBSFillColorLinearShader +---------------------------- + +### Synopsis +Get-OBSFillColorLinearShader [[-Fill] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorLinearShader [[-Fill] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFillColorRadialDegreesShader.md b/docs/Get-OBSFillColorRadialDegreesShader.md new file mode 100644 index 000000000..c57d04d7d --- /dev/null +++ b/docs/Get-OBSFillColorRadialDegreesShader.md @@ -0,0 +1,107 @@ +Get-OBSFillColorRadialDegreesShader +----------------------------------- + +### Synopsis +Get-OBSFillColorRadialDegreesShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_X| + +#### **OffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_Y| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Start_Angle| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorRadialDegreesShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFillColorRadialPercentageShader.md b/docs/Get-OBSFillColorRadialPercentageShader.md new file mode 100644 index 000000000..8dfd505bf --- /dev/null +++ b/docs/Get-OBSFillColorRadialPercentageShader.md @@ -0,0 +1,107 @@ +Get-OBSFillColorRadialPercentageShader +-------------------------------------- + +### Synopsis +Get-OBSFillColorRadialPercentageShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_X| + +#### **OffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_Y| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Start_Angle| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorRadialPercentageShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFilterTemplateShader.md b/docs/Get-OBSFilterTemplateShader.md new file mode 100644 index 000000000..2763f7e3f --- /dev/null +++ b/docs/Get-OBSFilterTemplateShader.md @@ -0,0 +1,149 @@ +Get-OBSFilterTemplateShader +--------------------------- + +### Synopsis +Get-OBSFilterTemplateShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFilterTemplateShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFire3Shader.md b/docs/Get-OBSFire3Shader.md new file mode 100644 index 000000000..2515dc6ac --- /dev/null +++ b/docs/Get-OBSFire3Shader.md @@ -0,0 +1,239 @@ +Get-OBSFire3Shader +------------------ + +### Synopsis +Get-OBSFire3Shader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-AlphaPercentage] ] [[-Speed] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-FlameSize] ] [[-SparkGridHeight] ] [[-FlameModifier] ] [[-FlameTongueSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-FullWidth] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FlameModifier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Flame_Modifier| + +#### **FlameSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Flame_Size| + +#### **FlameTongueSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |Flame_Tongue_Size| + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FullWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |Full_Width| + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Invert** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MovementDirectionHorizontal** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |Movement_Direction_Horizontal| + +#### **MovementDirectionVertical** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------------| +|`[Float]`|false |named |False |Movement_Direction_Vertical| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SparkGridHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |Spark_Grid_Height| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFire3Shader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-AlphaPercentage] ] [[-Speed] ] [-Invert ] [[-LumaMin] ] [[-LumaMinSmooth] ] [-ApplyToImage ] [-ReplaceImageColor ] [[-ColorToReplace] ] [-ApplyToSpecificColor ] [-FullWidth ] [[-FlameSize] ] [[-SparkGridHeight] ] [[-FlameModifier] ] [[-FlameTongueSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFireShader.md b/docs/Get-OBSFireShader.md new file mode 100644 index 000000000..99ce788bb --- /dev/null +++ b/docs/Get-OBSFireShader.md @@ -0,0 +1,143 @@ +Get-OBSFireShader +----------------- + +### Synopsis +Get-OBSFireShader [[-AlphaPercentage] ] [[-Speed] ] [[-FlameSize] ] [[-FireType] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FireType** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |Fire_Type| + +#### **FlameSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------| +|`[Int]`|false |named |False |Flame_Size| + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Invert** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFireShader [[-AlphaPercentage] ] [[-Speed] ] [[-FlameSize] ] [[-FireType] ] [-Invert ] [[-LumaMin] ] [[-LumaMinSmooth] ] [-ApplyToImage ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFireworks2Shader.md b/docs/Get-OBSFireworks2Shader.md new file mode 100644 index 000000000..54c300c8e --- /dev/null +++ b/docs/Get-OBSFireworks2Shader.md @@ -0,0 +1,77 @@ +Get-OBSFireworks2Shader +----------------------- + +### Synopsis +Get-OBSFireworks2Shader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFireworks2Shader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFireworksShader.md b/docs/Get-OBSFireworksShader.md new file mode 100644 index 000000000..79ddd0309 --- /dev/null +++ b/docs/Get-OBSFireworksShader.md @@ -0,0 +1,89 @@ +Get-OBSFireworksShader +---------------------- + +### Synopsis +Get-OBSFireworksShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowFlash] [-ShowStars] [-UseTransparancy] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShowFlash** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |show_flash| + +#### **ShowStars** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |show_stars| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UseTransparancy** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |use_transparancy| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFireworksShader [-ShowFlash ] [-ShowStars ] [-UseTransparancy ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFisheyeShader.md b/docs/Get-OBSFisheyeShader.md new file mode 100644 index 000000000..ca4f154b9 --- /dev/null +++ b/docs/Get-OBSFisheyeShader.md @@ -0,0 +1,89 @@ +Get-OBSFisheyeShader +-------------------- + +### Synopsis +Get-OBSFisheyeShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFisheyeShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFisheyeXyShader.md b/docs/Get-OBSFisheyeXyShader.md new file mode 100644 index 000000000..eebe2d2e3 --- /dev/null +++ b/docs/Get-OBSFisheyeXyShader.md @@ -0,0 +1,95 @@ +Get-OBSFisheyeXyShader +---------------------- + +### Synopsis +Get-OBSFisheyeXyShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-PowerX] ] [[-PowerY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PowerX** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |power_x| + +#### **PowerY** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |power_y| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFisheyeXyShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-PowerX] ] [[-PowerY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFlipShader.md b/docs/Get-OBSFlipShader.md new file mode 100644 index 000000000..2ab91e53a --- /dev/null +++ b/docs/Get-OBSFlipShader.md @@ -0,0 +1,83 @@ +Get-OBSFlipShader +----------------- + +### Synopsis +Get-OBSFlipShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Horizontal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFlipShader [-Horizontal ] [-Vertical ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSFrostedGlassShader.md b/docs/Get-OBSFrostedGlassShader.md new file mode 100644 index 000000000..9ec703727 --- /dev/null +++ b/docs/Get-OBSFrostedGlassShader.md @@ -0,0 +1,119 @@ +Get-OBSFrostedGlassShader +------------------------- + +### Synopsis +Get-OBSFrostedGlassShader [[-AlphaPercent] ] [[-Amount] ] [[-Scale] ] [[-BorderOffset] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Alpha_Percent| + +#### **Amount** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |Border_Color| + +#### **BorderOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Border_Offset| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HorizontalBorder** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |Horizontal_Border| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFrostedGlassShader [[-AlphaPercent] ] [[-Amount] ] [[-Scale] ] [-Animate ] [-HorizontalBorder ] [[-BorderOffset] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGammaCorrectionShader.md b/docs/Get-OBSGammaCorrectionShader.md new file mode 100644 index 000000000..33c7bd29d --- /dev/null +++ b/docs/Get-OBSGammaCorrectionShader.md @@ -0,0 +1,95 @@ +Get-OBSGammaCorrectionShader +---------------------------- + +### Synopsis +Get-OBSGammaCorrectionShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blue** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Green** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Red** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGammaCorrectionShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGaussianBlurAdvancedShader.md b/docs/Get-OBSGaussianBlurAdvancedShader.md new file mode 100644 index 000000000..cafaf8c34 --- /dev/null +++ b/docs/Get-OBSGaussianBlurAdvancedShader.md @@ -0,0 +1,113 @@ +Get-OBSGaussianBlurAdvancedShader +--------------------------------- + +### Synopsis +Get-OBSGaussianBlurAdvancedShader [[-Directions] ] [[-Quality] ] [[-Size] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Directions** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MaskBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Mask_Bottom| + +#### **MaskLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Mask_Left| + +#### **MaskRight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Mask_Right| + +#### **MaskTop** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Mask_Top| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Quality** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **Size** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianBlurAdvancedShader [[-Directions] ] [[-Quality] ] [[-Size] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGaussianBlurShader.md b/docs/Get-OBSGaussianBlurShader.md new file mode 100644 index 000000000..fbe664236 --- /dev/null +++ b/docs/Get-OBSGaussianBlurShader.md @@ -0,0 +1,155 @@ +Get-OBSGaussianBlurShader +------------------------- + +### Synopsis +Get-OBSGaussianBlurShader [[-ViewProj] ] [[-Image] ] [[-ImageSize] ] [[-ImageTexel] ] [[-URadius] ] [[-UDiameter] ] [[-UTexelDelta] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-Kernel] ] [[-KernelTexel] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **ImageSize** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **ImageTexel** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Kernel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **KernelTexel** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixelSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |pixel_size| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UDiameter** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------| +|`[Int]`|false |named |False |u_diameter| + +#### **URadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------| +|`[Int]`|false |named |False |u_radius| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UTexelDelta** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|------------| +|`[System.Single[]]`|false |named |False |u_texelDelta| + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianBlurShader [[-ViewProj] ] [[-Image] ] [[-ImageSize] ] [[-ImageTexel] ] [[-URadius] ] [[-UDiameter] ] [[-UTexelDelta] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-Kernel] ] [[-KernelTexel] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGaussianBlurSimpleShader.md b/docs/Get-OBSGaussianBlurSimpleShader.md new file mode 100644 index 000000000..08cf58d9d --- /dev/null +++ b/docs/Get-OBSGaussianBlurSimpleShader.md @@ -0,0 +1,101 @@ +Get-OBSGaussianBlurSimpleShader +------------------------------- + +### Synopsis +Get-OBSGaussianBlurSimpleShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MaskBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Mask_Bottom| + +#### **MaskLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Mask_Left| + +#### **MaskRight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Mask_Right| + +#### **MaskTop** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Mask_Top| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianBlurSimpleShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGaussianExampleShader.md b/docs/Get-OBSGaussianExampleShader.md new file mode 100644 index 000000000..7fe2a9fc9 --- /dev/null +++ b/docs/Get-OBSGaussianExampleShader.md @@ -0,0 +1,149 @@ +Get-OBSGaussianExampleShader +---------------------------- + +### Synopsis +Get-OBSGaussianExampleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-InitialImage] ] [[-BeforeImage] ] [[-AfterImage] ] [[-TextColor] ] [[-MaxDistance] ] [[-Exp] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AfterImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |after_image| + +#### **BeforeImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |before_image| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **Exp** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **InitialImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |initial_image| + +#### **MaxDistance** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |max_distance| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TextColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |text_color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianExampleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-InitialImage] ] [[-BeforeImage] ] [[-AfterImage] ] [[-TextColor] ] [[-MaxDistance] ] [[-Exp] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGaussianSimpleShader.md b/docs/Get-OBSGaussianSimpleShader.md new file mode 100644 index 000000000..a79364813 --- /dev/null +++ b/docs/Get-OBSGaussianSimpleShader.md @@ -0,0 +1,155 @@ +Get-OBSGaussianSimpleShader +--------------------------- + +### Synopsis +Get-OBSGaussianSimpleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Samples] ] [[-LOD] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **LOD** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **Samples** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianSimpleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Samples] ] [[-LOD] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGbCameraShader.md b/docs/Get-OBSGbCameraShader.md new file mode 100644 index 000000000..00d602a6b --- /dev/null +++ b/docs/Get-OBSGbCameraShader.md @@ -0,0 +1,131 @@ +Get-OBSGbCameraShader +--------------------- + +### Synopsis +Get-OBSGbCameraShader [[-PixelSize] ] [[-DitherFactor] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Color1] ] [[-Color2] ] [[-Color3] ] [[-Color4] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AlternativeBayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlternativeBayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |alternative_bayer| + +#### **Brightness** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Color1** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_1| + +#### **Color2** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_2| + +#### **Color3** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_3| + +#### **Color4** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_4| + +#### **Contrast** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **DitherFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |dither_factor| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Gamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixelSize** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGbCameraShader [[-PixelSize] ] [[-DitherFactor] ] [-AlternativeBayer ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Color1] ] [[-Color2] ] [[-Color3] ] [[-Color4] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGlassShader.md b/docs/Get-OBSGlassShader.md new file mode 100644 index 000000000..a9e640b0a --- /dev/null +++ b/docs/Get-OBSGlassShader.md @@ -0,0 +1,131 @@ +Get-OBSGlassShader +------------------ + +### Synopsis +Get-OBSGlassShader [[-AlphaPercent] ] [[-OffsetAmount] ] [[-XSize] ] [[-YSize] ] [[-ReflectionOffset] ] [[-BorderOffset] ] [[-BorderColor] ] [[-GlassColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Alpha_Percent| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |Border_Color| + +#### **BorderOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Border_Offset| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlassColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |Glass_Color| + +#### **HorizontalBorder** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |Horizontal_Border| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OffsetAmount** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Offset_Amount| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReflectionOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |Reflection_Offset| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **XSize** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **YSize** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlassShader [[-AlphaPercent] ] [[-OffsetAmount] ] [[-XSize] ] [[-YSize] ] [[-ReflectionOffset] ] [-HorizontalBorder ] [[-BorderOffset] ] [[-BorderColor] ] [[-GlassColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGlitchAnalogShader.md b/docs/Get-OBSGlitchAnalogShader.md new file mode 100644 index 000000000..a2d4886f8 --- /dev/null +++ b/docs/Get-OBSGlitchAnalogShader.md @@ -0,0 +1,161 @@ +Get-OBSGlitchAnalogShader +------------------------- + +### Synopsis +Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] ] [[-ScanLineJitterThresholdPercent] ] [[-VerticalJumpAmount] ] [[-VerticalSpeed] ] [[-HorizontalShake] ] [[-ColorDriftAmount] ] [[-ColorDriftSpeed] ] [[-PulseSpeedPercent] ] [[-AlphaPercent] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateColors] [-ApplyToAlphaLayer] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |alpha_percent| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorDriftAmount** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |color_drift_amount| + +#### **ColorDriftSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |color_drift_speed| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HorizontalShake** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |horizontal_shake| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------------| +|`[Int]`|false |named |False |pulse_speed_percent| + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **RotateColors** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |rotate_colors| + +#### **ScanLineJitterDisplacement** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |scan_line_jitter_displacement| + +#### **ScanLineJitterThresholdPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------------------------| +|`[Int]`|false |named |False |scan_line_jitter_threshold_percent| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VerticalJumpAmount** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |vertical_jump_amount| + +#### **VerticalSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |vertical_speed| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] ] [[-ScanLineJitterThresholdPercent] ] [[-VerticalJumpAmount] ] [[-VerticalSpeed] ] [[-HorizontalShake] ] [[-ColorDriftAmount] ] [[-ColorDriftSpeed] ] [[-PulseSpeedPercent] ] [[-AlphaPercent] ] [-RotateColors ] [-ApplyToAlphaLayer ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGlitchShader.md b/docs/Get-OBSGlitchShader.md new file mode 100644 index 000000000..9bd5cfbb6 --- /dev/null +++ b/docs/Get-OBSGlitchShader.md @@ -0,0 +1,83 @@ +Get-OBSGlitchShader +------------------- + +### Synopsis +Get-OBSGlitchShader [[-AMT] ] [[-SPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AMT** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SPEED** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlitchShader [[-AMT] ] [[-SPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGlowShader.md b/docs/Get-OBSGlowShader.md new file mode 100644 index 000000000..46c7373c1 --- /dev/null +++ b/docs/Get-OBSGlowShader.md @@ -0,0 +1,113 @@ +Get-OBSGlowShader +----------------- + +### Synopsis +Get-OBSGlowShader [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blur** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlowPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |glow_percent| + +#### **MaxBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |max_brightness| + +#### **MinBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |min_brightness| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |pulse_speed| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlowShader [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeed] ] [-Ease ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGradientShader.md b/docs/Get-OBSGradientShader.md new file mode 100644 index 000000000..a4c8f01cf --- /dev/null +++ b/docs/Get-OBSGradientShader.md @@ -0,0 +1,179 @@ +Get-OBSGradientShader +--------------------- + +### Synopsis +Get-OBSGradientShader [[-StartColor] ] [[-StartStep] ] [[-MiddleColor] ] [[-MiddleStep] ] [[-EndColor] ] [[-EndStep] ] [[-AlphaPercent] ] [[-PulseSpeed] ] [[-ColorToReplace] ] [[-GradientCenterWidthPercentage] ] [[-GradientCenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-RotateColors] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |alpha_percent| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **EndColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |end_color| + +#### **EndStep** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |end_step| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientCenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------------------| +|`[Int]`|false |named |False |gradient_center_height_percentage| + +#### **GradientCenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------------------------| +|`[Int]`|false |named |False |gradient_center_width_percentage| + +#### **Horizontal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MiddleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |middle_color| + +#### **MiddleStep** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |middle_step| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |pulse_speed| + +#### **RotateColors** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |rotate_colors| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |start_color| + +#### **StartStep** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |start_step| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGradientShader [[-StartColor] ] [[-StartStep] ] [[-MiddleColor] ] [[-MiddleStep] ] [[-EndColor] ] [[-EndStep] ] [[-AlphaPercent] ] [[-PulseSpeed] ] [-Ease ] [-RotateColors ] [-ApplyToAlphaLayer ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [-Horizontal ] [-Vertical ] [[-GradientCenterWidthPercentage] ] [[-GradientCenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSGroup.md b/docs/Get-OBSGroup.md index 7de2f754e..aaa83eb06 100644 --- a/docs/Get-OBSGroup.md +++ b/docs/Get-OBSGroup.md @@ -1,89 +1,53 @@ Get-OBSGroup ------------ - - - ### Synopsis Get-OBSGroup : GetGroupList - - --- - ### Description Gets an array of all groups in OBS. Groups in OBS are actually scenes, but renamed and modified. In obs-websocket, we treat them as scenes where we can. - Get-OBSGroup calls the OBS WebSocket with a request of type GetGroupList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgrouplist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgrouplist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSGroup ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSGroup [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSGroupSceneItem.md b/docs/Get-OBSGroupSceneItem.md index 73300684f..894492ad2 100644 --- a/docs/Get-OBSGroupSceneItem.md +++ b/docs/Get-OBSGroupSceneItem.md @@ -1,17 +1,11 @@ Get-OBSGroupSceneItem --------------------- - - - ### Synopsis Get-OBSGroupSceneItem : GetGroupSceneItemList - - --- - ### Description Basically GetSceneItemList, but for groups. @@ -20,77 +14,48 @@ Using groups at all in OBS is discouraged, as they are very broken under the hoo Groups only - Get-OBSGroupSceneItem calls the OBS WebSocket with a request of type GetGroupSceneItemList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgroupsceneitemlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgroupsceneitemlist) - - - - --- - ### Parameters #### **SceneName** - Name of the group to get the items of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the group to get the items of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSGroupSceneItem [-SceneName] [-PassThru] [-NoResponse] [] +Get-OBSGroupSceneItem [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSHalftoneShader.md b/docs/Get-OBSHalftoneShader.md new file mode 100644 index 000000000..f9b030f89 --- /dev/null +++ b/docs/Get-OBSHalftoneShader.md @@ -0,0 +1,77 @@ +Get-OBSHalftoneShader +--------------------- + +### Synopsis +Get-OBSHalftoneShader [[-Threshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Threshold** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHalftoneShader [[-Threshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSHeatWaveSimpleShader.md b/docs/Get-OBSHeatWaveSimpleShader.md new file mode 100644 index 000000000..9c3daead6 --- /dev/null +++ b/docs/Get-OBSHeatWaveSimpleShader.md @@ -0,0 +1,95 @@ +Get-OBSHeatWaveSimpleShader +--------------------------- + +### Synopsis +Get-OBSHeatWaveSimpleShader [[-Rate] ] [[-Strength] ] [[-Distortion] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Distortion** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Rate** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHeatWaveSimpleShader [[-Rate] ] [[-Strength] ] [[-Distortion] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSHexagonShader.md b/docs/Get-OBSHexagonShader.md new file mode 100644 index 000000000..b33cac6d6 --- /dev/null +++ b/docs/Get-OBSHexagonShader.md @@ -0,0 +1,155 @@ +Get-OBSHexagonShader +-------------------- + +### Synopsis +Get-OBSHexagonShader [[-HexColor] ] [[-AlphaPercent] ] [[-Quantity] ] [[-BorderWidth] ] [[-SpeedPercent] ] [[-DistortX] ] [[-DistortY] ] [[-OffsetX] ] [[-OffsetY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Blend] [-Equilateral] [-ZoomAnimate] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |Alpha_Percent| + +#### **Blend** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **BorderWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Border_Width| + +#### **DistortX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Distort_X| + +#### **DistortY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Distort_Y| + +#### **Equilateral** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HexColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |Hex_Color| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_X| + +#### **OffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_Y| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Quantity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |Speed_Percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ZoomAnimate** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Zoom_Animate| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHexagonShader [[-HexColor] ] [[-AlphaPercent] ] [[-Quantity] ] [[-BorderWidth] ] [-Blend ] [-Equilateral ] [-ZoomAnimate ] [[-SpeedPercent] ] [-Glitch ] [[-DistortX] ] [[-DistortY] ] [[-OffsetX] ] [[-OffsetY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSHotkey.md b/docs/Get-OBSHotkey.md index 7035f119c..f7f7686dc 100644 --- a/docs/Get-OBSHotkey.md +++ b/docs/Get-OBSHotkey.md @@ -1,87 +1,53 @@ Get-OBSHotkey ------------- - - - ### Synopsis Get-OBSHotkey : GetHotkeyList - - --- - ### Description -Gets an array of all hotkey names in OBS +Gets an array of all hotkey names in OBS. +Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. Get-OBSHotkey calls the OBS WebSocket with a request of type GetHotkeyList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gethotkeylist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gethotkeylist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSHotkey ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSHotkey [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSHslHsvSaturationShader.md b/docs/Get-OBSHslHsvSaturationShader.md new file mode 100644 index 000000000..3abdab852 --- /dev/null +++ b/docs/Get-OBSHslHsvSaturationShader.md @@ -0,0 +1,101 @@ +Get-OBSHslHsvSaturationShader +----------------------------- + +### Synopsis +Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] ] [[-HslGamma] ] [[-HsvSaturationFactor] ] [[-HsvGamma] ] [[-AdjustmentOrder] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AdjustmentOrder** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HslGamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **HslSaturationFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **HsvGamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **HsvSaturationFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] ] [[-HslGamma] ] [[-HsvSaturationFactor] ] [[-HsvGamma] ] [[-AdjustmentOrder] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSHueRotatonShader.md b/docs/Get-OBSHueRotatonShader.md new file mode 100644 index 000000000..24140b07f --- /dev/null +++ b/docs/Get-OBSHueRotatonShader.md @@ -0,0 +1,83 @@ +Get-OBSHueRotatonShader +----------------------- + +### Synopsis +Get-OBSHueRotatonShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HueOverride] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HueOverride** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Hue_Override| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHueRotatonShader [[-Speed] ] [-HueOverride ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSInput.md b/docs/Get-OBSInput.md index de519ef0e..7b3ff767d 100644 --- a/docs/Get-OBSInput.md +++ b/docs/Get-OBSInput.md @@ -1,91 +1,49 @@ Get-OBSInput ------------ - - - ### Synopsis Get-OBSInput : GetInputList - - --- - ### Description Gets an array of all inputs in OBS. - Get-OBSInput calls the OBS WebSocket with a request of type GetInputList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputlist) - - - - --- - ### Parameters #### **InputKind** - Restrict the array to only inputs of the specified kind - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSInput [[-InputKind] ] [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSInputAudioBalance.md b/docs/Get-OBSInputAudioBalance.md index 9cc26b9de..6e3427e09 100644 --- a/docs/Get-OBSInputAudioBalance.md +++ b/docs/Get-OBSInputAudioBalance.md @@ -1,92 +1,57 @@ Get-OBSInputAudioBalance ------------------------ - - - ### Synopsis Get-OBSInputAudioBalance : GetInputAudioBalance - - --- - ### Description Gets the audio balance of an input. - Get-OBSInputAudioBalance calls the OBS WebSocket with a request of type GetInputAudioBalance. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiobalance](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiobalance) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the audio balance of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the audio balance of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputAudioBalance [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputAudioBalance [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSInputAudioMonitorType.md b/docs/Get-OBSInputAudioMonitorType.md index cd83d46b4..0b494bda0 100644 --- a/docs/Get-OBSInputAudioMonitorType.md +++ b/docs/Get-OBSInputAudioMonitorType.md @@ -1,17 +1,11 @@ Get-OBSInputAudioMonitorType ---------------------------- - - - ### Synopsis Get-OBSInputAudioMonitorType : GetInputAudioMonitorType - - --- - ### Description Gets the audio monitor type of an input. @@ -22,77 +16,48 @@ The available audio monitor types are: - `OBS_MONITORING_TYPE_MONITOR_ONLY` - `OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT` - Get-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type GetInputAudioMonitorType. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiomonitortype](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiomonitortype) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the audio monitor type of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the audio monitor type of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputAudioMonitorType [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputAudioMonitorType [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSInputAudioSyncOffset.md b/docs/Get-OBSInputAudioSyncOffset.md index b0c4e0a26..b0041482d 100644 --- a/docs/Get-OBSInputAudioSyncOffset.md +++ b/docs/Get-OBSInputAudioSyncOffset.md @@ -1,94 +1,59 @@ Get-OBSInputAudioSyncOffset --------------------------- - - - ### Synopsis Get-OBSInputAudioSyncOffset : GetInputAudioSyncOffset - - --- - ### Description Gets the audio sync offset of an input. Note: The audio sync offset can be negative too! - Get-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type GetInputAudioSyncOffset. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiosyncoffset](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiosyncoffset) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the audio sync offset of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the audio sync offset of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputAudioSyncOffset [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputAudioSyncOffset [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSInputAudioTracks.md b/docs/Get-OBSInputAudioTracks.md index 9ba78d8c8..2b03a2b7c 100644 --- a/docs/Get-OBSInputAudioTracks.md +++ b/docs/Get-OBSInputAudioTracks.md @@ -1,92 +1,57 @@ Get-OBSInputAudioTracks ----------------------- - - - ### Synopsis Get-OBSInputAudioTracks : GetInputAudioTracks - - --- - ### Description Gets the enable state of all audio tracks of an input. - Get-OBSInputAudioTracks calls the OBS WebSocket with a request of type GetInputAudioTracks. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiotracks](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiotracks) - - - - --- - ### Parameters #### **InputName** - Name of the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputAudioTracks [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputAudioTracks [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSInputDefaultSettings.md b/docs/Get-OBSInputDefaultSettings.md index 75f5b8413..6f473925d 100644 --- a/docs/Get-OBSInputDefaultSettings.md +++ b/docs/Get-OBSInputDefaultSettings.md @@ -1,91 +1,49 @@ Get-OBSInputDefaultSettings --------------------------- - - - ### Synopsis Get-OBSInputDefaultSettings : GetInputDefaultSettings - - --- - ### Description Gets the default settings for an input kind. - Get-OBSInputDefaultSettings calls the OBS WebSocket with a request of type GetInputDefaultSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputdefaultsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputdefaultsettings) - - - - --- - ### Parameters #### **InputKind** - Input kind to get the default settings for - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSInputDefaultSettings [-InputKind] [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSInputKind.md b/docs/Get-OBSInputKind.md index e0d931181..73220af5f 100644 --- a/docs/Get-OBSInputKind.md +++ b/docs/Get-OBSInputKind.md @@ -1,91 +1,49 @@ Get-OBSInputKind ---------------- - - - ### Synopsis Get-OBSInputKind : GetInputKindList - - --- - ### Description Gets an array of all available input kinds in OBS. - Get-OBSInputKind calls the OBS WebSocket with a request of type GetInputKindList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputkindlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputkindlist) - - - - --- - ### Parameters #### **Unversioned** - True == Return all kinds as unversioned, False == Return with version suffixes (if available) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSInputKind [-Unversioned] [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSInputMute.md b/docs/Get-OBSInputMute.md index fcb7ce789..24a1e6279 100644 --- a/docs/Get-OBSInputMute.md +++ b/docs/Get-OBSInputMute.md @@ -1,92 +1,57 @@ Get-OBSInputMute ---------------- - - - ### Synopsis Get-OBSInputMute : GetInputMute - - --- - ### Description Gets the audio mute state of an input. - Get-OBSInputMute calls the OBS WebSocket with a request of type GetInputMute. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputmute](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputmute) - - - - --- - ### Parameters #### **InputName** - Name of input to get the mute state of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of input to get the mute state of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputMute [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputMute [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSInputPropertiesListPropertyItems.md b/docs/Get-OBSInputPropertiesListPropertyItems.md index 95fe133df..f7accf73c 100644 --- a/docs/Get-OBSInputPropertiesListPropertyItems.md +++ b/docs/Get-OBSInputPropertiesListPropertyItems.md @@ -1,109 +1,66 @@ Get-OBSInputPropertiesListPropertyItems --------------------------------------- - - - ### Synopsis Get-OBSInputPropertiesListPropertyItems : GetInputPropertiesListPropertyItems - - --- - ### Description Gets the items of a list property from an input's properties. Note: Use this in cases where an input provides a dynamic, selectable list of items. For example, display capture, where it provides a list of available displays. - Get-OBSInputPropertiesListPropertyItems calls the OBS WebSocket with a request of type GetInputPropertiesListPropertyItems. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputpropertieslistpropertyitems](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputpropertieslistpropertyitems) - - - - --- - ### Parameters #### **InputName** - Name of the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PropertyName** - Name of the list property to get the items of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputPropertiesListPropertyItems [-InputName] [-PropertyName] [-PassThru] [-NoResponse] [] +Get-OBSInputPropertiesListPropertyItems [[-InputName] ] [[-InputUuid] ] [-PropertyName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSInputSettings.md b/docs/Get-OBSInputSettings.md index c8b91a039..4f02ffca7 100644 --- a/docs/Get-OBSInputSettings.md +++ b/docs/Get-OBSInputSettings.md @@ -1,94 +1,59 @@ Get-OBSInputSettings -------------------- - - - ### Synopsis Get-OBSInputSettings : GetInputSettings - - --- - ### Description Gets the settings of an input. Note: Does not include defaults. To create the entire settings object, overlay `inputSettings` over the `defaultInputSettings` provided by `GetInputDefaultSettings`. - Get-OBSInputSettings calls the OBS WebSocket with a request of type GetInputSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputsettings) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the settings of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the settings of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputSettings [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputSettings [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSInputVolume.md b/docs/Get-OBSInputVolume.md index d58d7f6cd..d6eb31b3c 100644 --- a/docs/Get-OBSInputVolume.md +++ b/docs/Get-OBSInputVolume.md @@ -1,92 +1,57 @@ Get-OBSInputVolume ------------------ - - - ### Synopsis Get-OBSInputVolume : GetInputVolume - - --- - ### Description Gets the current volume setting of an input. - Get-OBSInputVolume calls the OBS WebSocket with a request of type GetInputVolume. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputvolume](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputvolume) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the volume of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the volume of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputVolume [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputVolume [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSIntensityScopeShader.md b/docs/Get-OBSIntensityScopeShader.md new file mode 100644 index 000000000..392da7346 --- /dev/null +++ b/docs/Get-OBSIntensityScopeShader.md @@ -0,0 +1,83 @@ +Get-OBSIntensityScopeShader +--------------------------- + +### Synopsis +Get-OBSIntensityScopeShader [[-Gain] ] [[-Blend] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blend** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Gain** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSIntensityScopeShader [[-Gain] ] [[-Blend] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSInvertLumaShader.md b/docs/Get-OBSInvertLumaShader.md new file mode 100644 index 000000000..14e1b743a --- /dev/null +++ b/docs/Get-OBSInvertLumaShader.md @@ -0,0 +1,95 @@ +Get-OBSInvertLumaShader +----------------------- + +### Synopsis +Get-OBSInvertLumaShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertColor] [-InvertLuma] [-GammaCorrection] [-TestRamp] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GammaCorrection** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Gamma_Correction| + +#### **InvertColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Invert_Color| + +#### **InvertLuma** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |Invert_Luma| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TestRamp** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[Switch]`|false |named |False |Test_Ramp| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSInvertLumaShader [-InvertColor ] [-InvertLuma ] [-GammaCorrection ] [-TestRamp ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSLastReplayBufferReplay.md b/docs/Get-OBSLastReplayBufferReplay.md index 314377c50..cc66e5b12 100644 --- a/docs/Get-OBSLastReplayBufferReplay.md +++ b/docs/Get-OBSLastReplayBufferReplay.md @@ -1,87 +1,51 @@ Get-OBSLastReplayBufferReplay ----------------------------- - - - ### Synopsis Get-OBSLastReplayBufferReplay : GetLastReplayBufferReplay - - --- - ### Description Gets the filename of the last replay buffer save file. - Get-OBSLastReplayBufferReplay calls the OBS WebSocket with a request of type GetLastReplayBufferReplay. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getlastreplaybufferreplay](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getlastreplaybufferreplay) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSLastReplayBufferReplay ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSLastReplayBufferReplay [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSLuminance2Shader.md b/docs/Get-OBSLuminance2Shader.md new file mode 100644 index 000000000..1b3afb79b --- /dev/null +++ b/docs/Get-OBSLuminance2Shader.md @@ -0,0 +1,119 @@ +Get-OBSLuminance2Shader +----------------------- + +### Synopsis +Get-OBSLuminance2Shader [[-Color] ] [[-LumaMax] ] [[-LumaMin] ] [[-LumaMaxSmooth] ] [[-LumaMinSmooth] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertAlphaChannel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertImageColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LumaMax** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMaxSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSLuminance2Shader [[-Color] ] [[-LumaMax] ] [[-LumaMin] ] [[-LumaMaxSmooth] ] [[-LumaMinSmooth] ] [-InvertImageColor ] [-InvertAlphaChannel ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSLuminanceAlphaShader.md b/docs/Get-OBSLuminanceAlphaShader.md new file mode 100644 index 000000000..ef0f0d526 --- /dev/null +++ b/docs/Get-OBSLuminanceAlphaShader.md @@ -0,0 +1,155 @@ +Get-OBSLuminanceAlphaShader +--------------------------- + +### Synopsis +Get-OBSLuminanceAlphaShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ColorMatrix] ] [[-Color] ] [[-MulVal] ] [[-AddVal] ] [[-Level] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AddVal** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |add_val| + +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **InvertAlphaChannel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Level** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MulVal** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |mul_val| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSLuminanceAlphaShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ColorMatrix] ] [[-Color] ] [[-MulVal] ] [[-AddVal] ] [[-Level] ] [-InvertAlphaChannel ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSLuminanceShader.md b/docs/Get-OBSLuminanceShader.md new file mode 100644 index 000000000..16e34f312 --- /dev/null +++ b/docs/Get-OBSLuminanceShader.md @@ -0,0 +1,101 @@ +Get-OBSLuminanceShader +---------------------- + +### Synopsis +Get-OBSLuminanceShader [[-Color] ] [[-Level] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertAlphaChannel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertImageColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Level** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSLuminanceShader [[-Color] ] [[-Level] ] [-InvertImageColor ] [-InvertAlphaChannel ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSMarkdownSource.md b/docs/Get-OBSMarkdownSource.md new file mode 100644 index 000000000..2d0f0314d --- /dev/null +++ b/docs/Get-OBSMarkdownSource.md @@ -0,0 +1,75 @@ +Set-OBSMarkdownSource +--------------------- + +### Synopsis +Sets a markdown source + +--- + +### Description + +Adds or changes a markdown source in OBS. + +--- + +### Parameters +#### **Markdown** +The markdown text, or the path to a markdown file + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |1 |true (ByPropertyName)| + +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |3 |true (ByPropertyName)| + +#### **CSS** +The css style used to render the markdown. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSMarkdownSource [[-Markdown] ] [[-Width] ] [[-Height] ] [[-CSS] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Get-OBSMatrixShader.md b/docs/Get-OBSMatrixShader.md new file mode 100644 index 000000000..373688964 --- /dev/null +++ b/docs/Get-OBSMatrixShader.md @@ -0,0 +1,185 @@ +Get-OBSMatrixShader +------------------- + +### Synopsis +Get-OBSMatrixShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Mouse] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-Ratio] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertDirection] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **InvertDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Invert_Direction| + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Mouse** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **Ratio** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSMatrixShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Mouse] ] [-InvertDirection ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-Ratio] ] [[-AlphaPercentage] ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSMediaInputStatus.md b/docs/Get-OBSMediaInputStatus.md index e37c03d5d..53b533283 100644 --- a/docs/Get-OBSMediaInputStatus.md +++ b/docs/Get-OBSMediaInputStatus.md @@ -1,17 +1,11 @@ Get-OBSMediaInputStatus ----------------------- - - - ### Synopsis Get-OBSMediaInputStatus : GetMediaInputStatus - - --- - ### Description Gets the status of a media input. @@ -27,77 +21,48 @@ Media States: - `OBS_MEDIA_STATE_ENDED` - `OBS_MEDIA_STATE_ERROR` - Get-OBSMediaInputStatus calls the OBS WebSocket with a request of type GetMediaInputStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmediainputstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmediainputstatus) - - - - --- - ### Parameters #### **InputName** - Name of the media input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the media input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSMediaInputStatus [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSMediaInputStatus [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSMediaSource.md b/docs/Get-OBSMediaSource.md new file mode 100644 index 000000000..feebd1e73 --- /dev/null +++ b/docs/Get-OBSMediaSource.md @@ -0,0 +1,115 @@ +Set-OBSMediaSource +------------------ + +### Synopsis +Adds a media source + +--- + +### Description + +Adds a media source to OBS. + +--- + +### Related Links +* [Add-OBSInput](Add-OBSInput.md) + +* [Set-OBSInputSettings](Set-OBSInputSettings.md) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-OBSMediaSource -FilePath My.mp4 +``` + +--- + +### Parameters +#### **FilePath** +The path to the media file. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-------------------------------------| +|`[String]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file| + +#### **CloseWhenInactive** +If set, the source will close when it is inactive. +By default, this will be set to true. +To explicitly set it to false, use -CloseWhenInactive:$false + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Loop** +If set, the source will automatically restart. + +|Type |Required|Position|PipelineInput |Aliases| +|----------|--------|--------|---------------------|-------| +|`[Switch]`|false |named |true (ByPropertyName)|Looping| + +#### **UseHardwareDecoding** +If set, will use hardware decoding, if available. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|HardwareDecoding
hw_decode| + +#### **ClearOnMediaEnd** +If set, will clear the output on the end of the media. +If this is set to false, the media will freeze on the last frame. +This is set to true by default. +To explicitly set to false, use -ClearMediaEnd:$false + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|ClearOnEnd
NoFreezeFrameOnEnd| + +#### **FFMpegOption** +Any FFMpeg demuxer options. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------------------------| +|`[String]`|false |2 |true (ByPropertyName)|FFMpegOptions
FFMpeg_Options| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FitToScreen** +If set, will fit the input to the screen. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSMediaSource [[-FilePath] ] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +``` diff --git a/docs/Get-OBSMonitor.md b/docs/Get-OBSMonitor.md index 79d775f4f..1f01b788d 100644 --- a/docs/Get-OBSMonitor.md +++ b/docs/Get-OBSMonitor.md @@ -1,87 +1,51 @@ Get-OBSMonitor -------------- - - - ### Synopsis Get-OBSMonitor : GetMonitorList - - --- - ### Description Gets a list of connected monitors and information about them. - Get-OBSMonitor calls the OBS WebSocket with a request of type GetMonitorList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmonitorlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmonitorlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSMonitor ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSMonitor [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSMultiplyShader.md b/docs/Get-OBSMultiplyShader.md new file mode 100644 index 000000000..76e066219 --- /dev/null +++ b/docs/Get-OBSMultiplyShader.md @@ -0,0 +1,77 @@ +Get-OBSMultiplyShader +--------------------- + +### Synopsis +Get-OBSMultiplyShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OtherImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |other_image| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSMultiplyShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSNightSkyShader.md b/docs/Get-OBSNightSkyShader.md new file mode 100644 index 000000000..d088124c6 --- /dev/null +++ b/docs/Get-OBSNightSkyShader.md @@ -0,0 +1,179 @@ +Get-OBSNightSkyShader +--------------------- + +### Synopsis +Get-OBSNightSkyShader [[-Speed] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-AlphaPercentage] ] [[-NumberStars] ] [[-SKYCOLOR] ] [[-STARCOLOR] ] [[-LIGHTSKY] ] [[-SKYLIGHTNESS] ] [[-MOONCOLOR] ] [[-MoonSize] ] [[-MoonBumpSize] ] [[-MoonPositionX] ] [[-MoonPositionY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IncludeClouds] [-IncludeMoon] [-ApplyToImage] [-ReplaceImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **CenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------------| +|`[Int]`|false |named |False |center_height_percentage| + +#### **CenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------------| +|`[Int]`|false |named |False |center_width_percentage| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **IncludeClouds** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Include_Clouds| + +#### **IncludeMoon** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Include_Moon| + +#### **LIGHTSKY** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |LIGHT_SKY| + +#### **MoonBumpSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |moon_bump_size| + +#### **MOONCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |MOON_COLOR| + +#### **MoonPositionX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Moon_Position_x| + +#### **MoonPositionY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Moon_Position_y| + +#### **MoonSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |moon_size| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NumberStars** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |number_stars| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SKYCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |SKY_COLOR| + +#### **SKYLIGHTNESS** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |SKY_LIGHTNESS| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **STARCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |STAR_COLOR| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSNightSkyShader [[-Speed] ] [-IncludeClouds ] [-IncludeMoon ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-AlphaPercentage] ] [-ApplyToImage ] [-ReplaceImageColor ] [[-NumberStars] ] [[-SKYCOLOR] ] [[-STARCOLOR] ] [[-LIGHTSKY] ] [[-SKYLIGHTNESS] ] [[-MOONCOLOR] ] [[-MoonSize] ] [[-MoonBumpSize] ] [[-MoonPositionX] ] [[-MoonPositionY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSOpacityShader.md b/docs/Get-OBSOpacityShader.md new file mode 100644 index 000000000..950b992be --- /dev/null +++ b/docs/Get-OBSOpacityShader.md @@ -0,0 +1,77 @@ +Get-OBSOpacityShader +-------------------- + +### Synopsis +Get-OBSOpacityShader [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSOpacityShader [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSOutput.md b/docs/Get-OBSOutput.md index cd84c3b65..1a3000617 100644 --- a/docs/Get-OBSOutput.md +++ b/docs/Get-OBSOutput.md @@ -1,87 +1,51 @@ Get-OBSOutput ------------- - - - ### Synopsis Get-OBSOutput : GetOutputList - - --- - ### Description Gets the list of available outputs. - Get-OBSOutput calls the OBS WebSocket with a request of type GetOutputList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSOutput ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSOutput [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSOutputSettings.md b/docs/Get-OBSOutputSettings.md index d2dee659f..2d47fd3f9 100644 --- a/docs/Get-OBSOutputSettings.md +++ b/docs/Get-OBSOutputSettings.md @@ -1,91 +1,49 @@ Get-OBSOutputSettings --------------------- - - - ### Synopsis Get-OBSOutputSettings : GetOutputSettings - - --- - ### Description Gets the settings of an output. - Get-OBSOutputSettings calls the OBS WebSocket with a request of type GetOutputSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputsettings) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSOutputSettings [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSOutputStatus.md b/docs/Get-OBSOutputStatus.md index 6a82022ba..40173340a 100644 --- a/docs/Get-OBSOutputStatus.md +++ b/docs/Get-OBSOutputStatus.md @@ -1,91 +1,49 @@ Get-OBSOutputStatus ------------------- - - - ### Synopsis Get-OBSOutputStatus : GetOutputStatus - - --- - ### Description Gets the status of an output. - Get-OBSOutputStatus calls the OBS WebSocket with a request of type GetOutputStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputstatus) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSOutputStatus [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSPagePeelShader.md b/docs/Get-OBSPagePeelShader.md new file mode 100644 index 000000000..5797684b3 --- /dev/null +++ b/docs/Get-OBSPagePeelShader.md @@ -0,0 +1,83 @@ +Get-OBSPagePeelShader +--------------------- + +### Synopsis +Get-OBSPagePeelShader [[-Speed] ] [[-Position] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Position** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPagePeelShader [[-Speed] ] [[-Position] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSPagePeelTransitionShader.md b/docs/Get-OBSPagePeelTransitionShader.md new file mode 100644 index 000000000..04b597945 --- /dev/null +++ b/docs/Get-OBSPagePeelTransitionShader.md @@ -0,0 +1,107 @@ +Get-OBSPagePeelTransitionShader +------------------------------- + +### Synopsis +Get-OBSPagePeelTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-PageColor] ] [[-PageTransparency] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |page_color| + +#### **PageTransparency** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |page_transparency| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPagePeelTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-PageColor] ] [[-PageTransparency] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSPerlinNoiseShader.md b/docs/Get-OBSPerlinNoiseShader.md new file mode 100644 index 000000000..2ed65cd01 --- /dev/null +++ b/docs/Get-OBSPerlinNoiseShader.md @@ -0,0 +1,137 @@ +Get-OBSPerlinNoiseShader +------------------------ + +### Synopsis +Get-OBSPerlinNoiseShader [[-Speed] ] [[-SpeedHorizonal] ] [[-SpeedVertical] ] [[-Iterations] ] [[-WhiteNoise] ] [[-BlackNoise] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-Inverted] [-Multiply] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Animated** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ApplyToChannel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |apply_to_channel| + +#### **BlackNoise** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |black_noise| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Inverted** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Iterations** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **Multiply** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **SpeedHorizonal** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |speed_horizonal| + +#### **SpeedVertical** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |speed_vertical| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **WhiteNoise** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |white_noise| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPerlinNoiseShader [[-Speed] ] [-Animated ] [-ApplyToChannel ] [-Inverted ] [-Multiply ] [[-SpeedHorizonal] ] [[-SpeedVertical] ] [[-Iterations] ] [[-WhiteNoise] ] [[-BlackNoise] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSPersistentData.md b/docs/Get-OBSPersistentData.md index 924ebb340..714912084 100644 --- a/docs/Get-OBSPersistentData.md +++ b/docs/Get-OBSPersistentData.md @@ -1,106 +1,56 @@ Get-OBSPersistentData --------------------- - - - ### Synopsis Get-OBSPersistentData : GetPersistentData - - --- - ### Description Gets the value of a "slot" from the selected persistent data realm. - Get-OBSPersistentData calls the OBS WebSocket with a request of type GetPersistentData. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getpersistentdata](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getpersistentdata) - - - - --- - ### Parameters #### **Realm** - The data realm to select. `OBS_WEBSOCKET_DATA_REALM_GLOBAL` or `OBS_WEBSOCKET_DATA_REALM_PROFILE` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **SlotName** - The name of the slot to retrieve data from - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSPersistentData [-Realm] [-SlotName] [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSPieChartShader.md b/docs/Get-OBSPieChartShader.md new file mode 100644 index 000000000..f052dd633 --- /dev/null +++ b/docs/Get-OBSPieChartShader.md @@ -0,0 +1,215 @@ +Get-OBSPieChartShader +--------------------- + +### Synopsis +Get-OBSPieChartShader [[-InnerRadius] ] [[-OuterRadius] ] [[-StartAngle] ] [[-Total] ] [[-Part1] ] [[-Color1] ] [[-Part2] ] [[-Color2] ] [[-Part3] ] [[-Color3] ] [[-Part4] ] [[-Color4] ] [[-Part5] ] [[-Color5] ] [[-Part6] ] [[-Color6] ] [[-Part7] ] [[-Color7] ] [[-Part8] ] [[-Color8] ] [[-Part9] ] [[-Color9] ] [[-Part10] ] [[-Color10] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color1** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_1| + +#### **Color10** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[String]`|false |named |False |color_10| + +#### **Color2** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_2| + +#### **Color3** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_3| + +#### **Color4** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_4| + +#### **Color5** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_5| + +#### **Color6** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_6| + +#### **Color7** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_7| + +#### **Color8** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_8| + +#### **Color9** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_9| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InnerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |inner_radius| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OuterRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |outer_radius| + +#### **Part1** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_1 | + +#### **Part10** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_10| + +#### **Part2** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_2 | + +#### **Part3** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_3 | + +#### **Part4** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_4 | + +#### **Part5** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_5 | + +#### **Part6** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_6 | + +#### **Part7** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_7 | + +#### **Part8** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_8 | + +#### **Part9** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_9 | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |start_angle| + +#### **Total** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPieChartShader [[-InnerRadius] ] [[-OuterRadius] ] [[-StartAngle] ] [[-Total] ] [[-Part1] ] [[-Color1] ] [[-Part2] ] [[-Color2] ] [[-Part3] ] [[-Color3] ] [[-Part4] ] [[-Color4] ] [[-Part5] ] [[-Color5] ] [[-Part6] ] [[-Color6] ] [[-Part7] ] [[-Color7] ] [[-Part8] ] [[-Color8] ] [[-Part9] ] [[-Color9] ] [[-Part10] ] [[-Color10] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSPixelationShader.md b/docs/Get-OBSPixelationShader.md new file mode 100644 index 000000000..ecf125657 --- /dev/null +++ b/docs/Get-OBSPixelationShader.md @@ -0,0 +1,89 @@ +Get-OBSPixelationShader +----------------------- + +### Synopsis +Get-OBSPixelationShader [[-TargetWidth] ] [[-TargetHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TargetHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Target_Height| + +#### **TargetWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |Target_Width| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPixelationShader [[-TargetWidth] ] [[-TargetHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSPixelationTransitionShader.md b/docs/Get-OBSPixelationTransitionShader.md new file mode 100644 index 000000000..3fb035b18 --- /dev/null +++ b/docs/Get-OBSPixelationTransitionShader.md @@ -0,0 +1,101 @@ +Get-OBSPixelationTransitionShader +--------------------------------- + +### Synopsis +Get-OBSPixelationTransitionShader [[-TransitionTime] ] [[-Power] ] [[-CenterX] ] [[-CenterY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPixelationTransitionShader [[-TransitionTime] ] [-ConvertLinear ] [[-Power] ] [[-CenterX] ] [[-CenterY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSPlaylistSource.md b/docs/Get-OBSPlaylistSource.md new file mode 100644 index 000000000..c5cf3acb8 --- /dev/null +++ b/docs/Get-OBSPlaylistSource.md @@ -0,0 +1,121 @@ +Set-OBSVLCSource +---------------- + +### Synopsis +Adds a VLC playlist source + +--- + +### Description + +Adds or sets VLC playlist sources to OBS. +VLC must be installed for this to work. + +--- + +### Related Links +* [Add-OBSInput](Add-OBSInput.md) + +* [Set-OBSInputSettings](Set-OBSInputSettings.md) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory +``` + +--- + +### Parameters +#### **FilePath** +The path to the media file. + +|Type |Required|Position|PipelineInput |Aliases | +|------------|--------|--------|---------------------|--------------------------------------------------| +|`[String[]]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| + +#### **Select** +What to select in the playlist. +If a number is provided, this will select an index. +If a string is provided, this will select the whole name or last part of a name, accepting wildcards. +If an `[IO.FileInfo]` is provided, this will be the exact file. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------------------| +|`[Object]`|false |2 |true (ByPropertyName)|SelectIndex
SelectName| + +#### **Shuffle** +If set, will shuffle the playlist + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Loop** +If set, the playlist will loop. + +|Type |Required|Position|PipelineInput |Aliases| +|----------|--------|--------|---------------------|-------| +|`[Switch]`|false |named |true (ByPropertyName)|Looping| + +#### **Subtitle** +If set, will show subtitles, if available. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|ShowSubtitles
Subtitles| + +#### **AudioTrack** +The selected audio track number. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |3 |true (ByPropertyName)| + +#### **SubtitleTrack** +The selected subtitle track number. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |4 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FitToScreen** +If set, will fit the input to the screen. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSVLCSource [[-FilePath] ] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +``` diff --git a/docs/Get-OBSPolarShader.md b/docs/Get-OBSPolarShader.md new file mode 100644 index 000000000..5897d8ac8 --- /dev/null +++ b/docs/Get-OBSPolarShader.md @@ -0,0 +1,113 @@ +Get-OBSPolarShader +------------------ + +### Synopsis +Get-OBSPolarShader [[-CenterX] ] [[-CenterY] ] [[-PointY] ] [[-Rotate] ] [[-Repeat] ] [[-Scale] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Flip] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Flip** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PointY** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |point_y| + +#### **Repeat** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Rotate** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPolarShader [[-CenterX] ] [[-CenterY] ] [[-PointY] ] [-Flip ] [[-Rotate] ] [[-Repeat] ] [[-Scale] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSProfile.md b/docs/Get-OBSProfile.md index 5cb9925e9..71be8e6bd 100644 --- a/docs/Get-OBSProfile.md +++ b/docs/Get-OBSProfile.md @@ -1,87 +1,51 @@ Get-OBSProfile -------------- - - - ### Synopsis Get-OBSProfile : GetProfileList - - --- - ### Description Gets an array of all profiles - Get-OBSProfile calls the OBS WebSocket with a request of type GetProfileList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofilelist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofilelist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSProfile ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSProfile [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSProfileParameter.md b/docs/Get-OBSProfileParameter.md index 578a320cd..985f0424e 100644 --- a/docs/Get-OBSProfileParameter.md +++ b/docs/Get-OBSProfileParameter.md @@ -1,106 +1,56 @@ Get-OBSProfileParameter ----------------------- - - - ### Synopsis Get-OBSProfileParameter : GetProfileParameter - - --- - ### Description Gets a parameter from the current profile's configuration. - Get-OBSProfileParameter calls the OBS WebSocket with a request of type GetProfileParameter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofileparameter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofileparameter) - - - - --- - ### Parameters #### **ParameterCategory** - Category of the parameter to get - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **ParameterName** - Name of the parameter to get - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSProfileParameter [-ParameterCategory] [-ParameterName] [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSPulseShader.md b/docs/Get-OBSPulseShader.md new file mode 100644 index 000000000..235344156 --- /dev/null +++ b/docs/Get-OBSPulseShader.md @@ -0,0 +1,137 @@ +Get-OBSPulseShader +------------------ + +### Synopsis +Get-OBSPulseShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **MaxGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |max_growth_pixels| + +#### **MinGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |min_growth_pixels| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPulseShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRGBAPercentShader.md b/docs/Get-OBSRGBAPercentShader.md new file mode 100644 index 000000000..470f8a426 --- /dev/null +++ b/docs/Get-OBSRGBAPercentShader.md @@ -0,0 +1,95 @@ +Get-OBSRGBAPercentShader +------------------------ + +### Synopsis +Get-OBSRGBAPercentShader [[-RedPercent] ] [[-GreenPercent] ] [[-BluePercent] ] [[-AlphaPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BluePercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GreenPercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RedPercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRGBAPercentShader [[-RedPercent] ] [[-GreenPercent] ] [[-BluePercent] ] [[-AlphaPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRGSSAAShader.md b/docs/Get-OBSRGSSAAShader.md new file mode 100644 index 000000000..bed002782 --- /dev/null +++ b/docs/Get-OBSRGSSAAShader.md @@ -0,0 +1,89 @@ +Get-OBSRGSSAAShader +------------------- + +### Synopsis +Get-OBSRGSSAAShader [[-ColorSigma] ] [[-SpatialSigma] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ColorSigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpatialSigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRGSSAAShader [[-ColorSigma] ] [[-SpatialSigma] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRainWindowShader.md b/docs/Get-OBSRainWindowShader.md new file mode 100644 index 000000000..57f5b044c --- /dev/null +++ b/docs/Get-OBSRainWindowShader.md @@ -0,0 +1,107 @@ +Get-OBSRainWindowShader +----------------------- + +### Synopsis +Get-OBSRainWindowShader [[-Size] ] [[-BlurSize] ] [[-TrailStrength] ] [[-TrailColor] ] [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DebugShader] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BlurSize** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **DebugShader** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **Size** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **TrailColor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |trail_color| + +#### **TrailStrength** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |trail_strength| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRainWindowShader [[-Size] ] [[-BlurSize] ] [[-TrailStrength] ] [[-TrailColor] ] [[-Speed] ] [-DebugShader ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRainbowShader.md b/docs/Get-OBSRainbowShader.md new file mode 100644 index 000000000..36220daae --- /dev/null +++ b/docs/Get-OBSRainbowShader.md @@ -0,0 +1,149 @@ +Get-OBSRainbowShader +-------------------- + +### Synopsis +Get-OBSRainbowShader [[-Saturation] ] [[-Luminosity] ] [[-Spread] ] [[-Speed] ] [[-AlphaPercentage] ] [[-RotationOffset] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Luminosity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **Rotational** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RotationOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Rotation_Offset| + +#### **Saturation** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Spread** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRainbowShader [[-Saturation] ] [[-Luminosity] ] [[-Spread] ] [[-Speed] ] [[-AlphaPercentage] ] [-Vertical ] [-Rotational ] [[-RotationOffset] ] [-ApplyToImage ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRecordDirectory.md b/docs/Get-OBSRecordDirectory.md index c1d1df1d8..4f6f35c3c 100644 --- a/docs/Get-OBSRecordDirectory.md +++ b/docs/Get-OBSRecordDirectory.md @@ -1,87 +1,51 @@ Get-OBSRecordDirectory ---------------------- - - - ### Synopsis Get-OBSRecordDirectory : GetRecordDirectory - - --- - ### Description Gets the current directory that the record output is set to. - Get-OBSRecordDirectory calls the OBS WebSocket with a request of type GetRecordDirectory. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecorddirectory](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecorddirectory) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSRecordDirectory ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSRecordDirectory [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSRecordStatus.md b/docs/Get-OBSRecordStatus.md index 0815aa501..02e6ad400 100644 --- a/docs/Get-OBSRecordStatus.md +++ b/docs/Get-OBSRecordStatus.md @@ -1,87 +1,51 @@ Get-OBSRecordStatus ------------------- - - - ### Synopsis Get-OBSRecordStatus : GetRecordStatus - - --- - ### Description Gets the status of the record output. - Get-OBSRecordStatus calls the OBS WebSocket with a request of type GetRecordStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecordstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecordstatus) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSRecordStatus ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSRecordStatus [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSRectangularDropShadowShader.md b/docs/Get-OBSRectangularDropShadowShader.md new file mode 100644 index 000000000..a583748d5 --- /dev/null +++ b/docs/Get-OBSRectangularDropShadowShader.md @@ -0,0 +1,95 @@ +Get-OBSRectangularDropShadowShader +---------------------------------- + +### Synopsis +Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShadowBlurSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |shadow_blur_size| + +#### **ShadowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |shadow_color| + +#### **ShadowOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_x| + +#### **ShadowOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_y| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSReflectShader.md b/docs/Get-OBSReflectShader.md new file mode 100644 index 000000000..0c8c374d2 --- /dev/null +++ b/docs/Get-OBSReflectShader.md @@ -0,0 +1,95 @@ +Get-OBSReflectShader +-------------------- + +### Synopsis +Get-OBSReflectShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Horizontal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSReflectShader [-Horizontal ] [-Vertical ] [[-CenterXPercent] ] [[-CenterYPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRemovePartialPixelsShader.md b/docs/Get-OBSRemovePartialPixelsShader.md new file mode 100644 index 000000000..95bacf4d8 --- /dev/null +++ b/docs/Get-OBSRemovePartialPixelsShader.md @@ -0,0 +1,83 @@ +Get-OBSRemovePartialPixelsShader +-------------------------------- + +### Synopsis +Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MinimumAlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------| +|`[Int]`|false |named |False |minimum_alpha_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRepeatShader.md b/docs/Get-OBSRepeatShader.md new file mode 100644 index 000000000..d65e1f118 --- /dev/null +++ b/docs/Get-OBSRepeatShader.md @@ -0,0 +1,155 @@ +Get-OBSRepeatShader +------------------- + +### Synopsis +Get-OBSRepeatShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Alpha] ] [[-Copies] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Alpha** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **ColorRangeMax** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_max| + +#### **ColorRangeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_min| + +#### **Copies** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRepeatShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Alpha] ] [[-Copies] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRepeatTextureShader.md b/docs/Get-OBSRepeatTextureShader.md new file mode 100644 index 000000000..e1eb176c7 --- /dev/null +++ b/docs/Get-OBSRepeatTextureShader.md @@ -0,0 +1,167 @@ +Get-OBSRepeatTextureShader +-------------------------- + +### Synopsis +Get-OBSRepeatTextureShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-TexImage] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Blend] ] [[-Copies] ] [[-Notes] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |alpha_percentage| + +#### **Blend** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **ColorRangeMax** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_max| + +#### **ColorRangeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_min| + +#### **Copies** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TexImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |tex_image| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRepeatTextureShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-TexImage] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Blend] ] [[-Copies] ] [[-Notes] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSReplayBufferStatus.md b/docs/Get-OBSReplayBufferStatus.md index 323b9aa66..952ce859d 100644 --- a/docs/Get-OBSReplayBufferStatus.md +++ b/docs/Get-OBSReplayBufferStatus.md @@ -1,87 +1,51 @@ Get-OBSReplayBufferStatus ------------------------- - - - ### Synopsis Get-OBSReplayBufferStatus : GetReplayBufferStatus - - --- - ### Description Gets the status of the replay buffer output. - Get-OBSReplayBufferStatus calls the OBS WebSocket with a request of type GetReplayBufferStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getreplaybufferstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getreplaybufferstatus) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSReplayBufferStatus ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSReplayBufferStatus [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSRgbColorWheelShader.md b/docs/Get-OBSRgbColorWheelShader.md new file mode 100644 index 000000000..92f676011 --- /dev/null +++ b/docs/Get-OBSRgbColorWheelShader.md @@ -0,0 +1,125 @@ +Get-OBSRgbColorWheelShader +-------------------------- + +### Synopsis +Get-OBSRgbColorWheelShader [[-Speed] ] [[-ColorDepth] ] [[-ColorToReplace] ] [[-AlphaPercentage] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **CenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------------| +|`[Int]`|false |named |False |center_height_percentage| + +#### **CenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------------| +|`[Int]`|false |named |False |center_width_percentage| + +#### **ColorDepth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |color_depth| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRgbColorWheelShader [[-Speed] ] [[-ColorDepth] ] [-ApplyToImage ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-AlphaPercentage] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRgbSplitShader.md b/docs/Get-OBSRgbSplitShader.md new file mode 100644 index 000000000..1ccf4fceb --- /dev/null +++ b/docs/Get-OBSRgbSplitShader.md @@ -0,0 +1,107 @@ +Get-OBSRgbSplitShader +--------------------- + +### Synopsis +Get-OBSRgbSplitShader [[-Redx] ] [[-Redy] ] [[-Greenx] ] [[-Greeny] ] [[-Bluex] ] [[-Bluey] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Bluex** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Bluey** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Greenx** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Greeny** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Redx** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Redy** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRgbSplitShader [[-Redx] ] [[-Redy] ] [[-Greenx] ] [[-Greeny] ] [[-Bluex] ] [[-Bluey] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRgbvisibilityShader.md b/docs/Get-OBSRgbvisibilityShader.md new file mode 100644 index 000000000..83716a07b --- /dev/null +++ b/docs/Get-OBSRgbvisibilityShader.md @@ -0,0 +1,113 @@ +Get-OBSRgbvisibilityShader +-------------------------- + +### Synopsis +Get-OBSRgbvisibilityShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-RedVisibility] ] [[-GreenVisibility] ] [[-BlueVisibility] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blue** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BlueVisibility** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Green** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **GreenVisibility** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Red** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **RedVisibility** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRgbvisibilityShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-RedVisibility] ] [[-GreenVisibility] ] [[-BlueVisibility] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRippleShader.md b/docs/Get-OBSRippleShader.md new file mode 100644 index 000000000..d2ae46e4a --- /dev/null +++ b/docs/Get-OBSRippleShader.md @@ -0,0 +1,101 @@ +Get-OBSRippleShader +------------------- + +### Synopsis +Get-OBSRippleShader [[-DistanceFactor] ] [[-TimeFactor] ] [[-PowerFactor] ] [[-CenterPosX] ] [[-CenterPosY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterPosX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |center_pos_x| + +#### **CenterPosY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |center_pos_y| + +#### **DistanceFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |distance_factor| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PowerFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |power_factor| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |time_factor| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRippleShader [[-DistanceFactor] ] [[-TimeFactor] ] [[-PowerFactor] ] [[-CenterPosX] ] [[-CenterPosY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRotatingSourceShader.md b/docs/Get-OBSRotatingSourceShader.md new file mode 100644 index 000000000..263f7faf1 --- /dev/null +++ b/docs/Get-OBSRotatingSourceShader.md @@ -0,0 +1,107 @@ +Get-OBSRotatingSourceShader +--------------------------- + +### Synopsis +Get-OBSRotatingSourceShader [[-SpinSpeed] ] [[-Rotation] ] [[-Zoomin] ] [[-XCenter] ] [[-YCenter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-KeepAspectratio] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **KeepAspectratio** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |keep_aspectratio| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Rotation** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpinSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |spin_speed| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **XCenter** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |x_center| + +#### **YCenter** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |y_center| + +#### **Zoomin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRotatingSourceShader [[-SpinSpeed] ] [[-Rotation] ] [[-Zoomin] ] [-KeepAspectratio ] [[-XCenter] ] [[-YCenter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRotatoeShader.md b/docs/Get-OBSRotatoeShader.md new file mode 100644 index 000000000..689971ec5 --- /dev/null +++ b/docs/Get-OBSRotatoeShader.md @@ -0,0 +1,185 @@ +Get-OBSRotatoeShader +-------------------- + +### Synopsis +Get-OBSRotatoeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-SpeedPercent] ] [[-AxisX] ] [[-AxisY] ] [[-AxisZ] ] [[-AngleDegrees] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateTransform] [-RotatePixels] [-RotateColors] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AngleDegrees** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Angle_Degrees| + +#### **AxisX** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |Axis_X | + +#### **AxisY** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |Axis_Y | + +#### **AxisZ** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |Axis_Z | + +#### **CenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------------| +|`[Int]`|false |named |False |center_height_percentage| + +#### **CenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------------| +|`[Int]`|false |named |False |center_width_percentage| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RotateColors** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |Rotate_Colors| + +#### **RotatePixels** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |Rotate_Pixels| + +#### **RotateTransform** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Rotate_Transform| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRotatoeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-SpeedPercent] ] [[-AxisX] ] [[-AxisY] ] [[-AxisZ] ] [[-AngleDegrees] ] [-RotateTransform ] [-RotatePixels ] [-RotateColors ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRoundedRect2Shader.md b/docs/Get-OBSRoundedRect2Shader.md new file mode 100644 index 000000000..0e83e6f59 --- /dev/null +++ b/docs/Get-OBSRoundedRect2Shader.md @@ -0,0 +1,113 @@ +Get-OBSRoundedRect2Shader +------------------------- + +### Synopsis +Get-OBSRoundedRect2Shader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-FasterScan] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FasterScan** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |faster_scan| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRect2Shader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [-FasterScan ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRoundedRectPerCornerShader.md b/docs/Get-OBSRoundedRectPerCornerShader.md new file mode 100644 index 000000000..96e2b3661 --- /dev/null +++ b/docs/Get-OBSRoundedRectPerCornerShader.md @@ -0,0 +1,125 @@ +Get-OBSRoundedRectPerCornerShader +--------------------------------- + +### Synopsis +Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] ] [[-CornerRadiusTr] ] [[-CornerRadiusBr] ] [[-CornerRadiusBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadiusBl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_bl| + +#### **CornerRadiusBr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_br| + +#### **CornerRadiusTl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_tl| + +#### **CornerRadiusTr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_tr| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] ] [[-CornerRadiusTr] ] [[-CornerRadiusBr] ] [[-CornerRadiusBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRoundedRectPerSideShader.md b/docs/Get-OBSRoundedRectPerSideShader.md new file mode 100644 index 000000000..e86e8cbc7 --- /dev/null +++ b/docs/Get-OBSRoundedRectPerSideShader.md @@ -0,0 +1,125 @@ +Get-OBSRoundedRectPerSideShader +------------------------------- + +### Synopsis +Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] ] [[-CornerRadiusLeft] ] [[-CornerRadiusTop] ] [[-CornerRadiusRight] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadiusBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------------| +|`[Int]`|false |named |False |corner_radius_bottom| + +#### **CornerRadiusLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------| +|`[Int]`|false |named |False |corner_radius_left| + +#### **CornerRadiusRight** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------------| +|`[Int]`|false |named |False |corner_radius_right| + +#### **CornerRadiusTop** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |corner_radius_top| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] ] [[-CornerRadiusLeft] ] [[-CornerRadiusTop] ] [[-CornerRadiusRight] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRoundedRectShader.md b/docs/Get-OBSRoundedRectShader.md new file mode 100644 index 000000000..a0c93c93b --- /dev/null +++ b/docs/Get-OBSRoundedRectShader.md @@ -0,0 +1,89 @@ +Get-OBSRoundedRectShader +------------------------ + +### Synopsis +Get-OBSRoundedRectShader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRectShader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRoundedStrokeGradientShader.md b/docs/Get-OBSRoundedStrokeGradientShader.md new file mode 100644 index 000000000..23e412682 --- /dev/null +++ b/docs/Get-OBSRoundedStrokeGradientShader.md @@ -0,0 +1,125 @@ +Get-OBSRoundedStrokeGradientShader +---------------------------------- + +### Synopsis +Get-OBSRoundedStrokeGradientShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-RotationSpeed] ] [[-BorderColorL] ] [[-BorderColorR] ] [[-CenterWidth] ] [[-CenterHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColorL** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |border_colorL| + +#### **BorderColorR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |border_colorR| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CenterHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |center_height| + +#### **CenterWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |center_width| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MinimumAlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------| +|`[Int]`|false |named |False |minimum_alpha_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RotationSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |rotation_speed| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedStrokeGradientShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-RotationSpeed] ] [[-BorderColorL] ] [[-BorderColorR] ] [[-CenterWidth] ] [[-CenterHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSRoundedStrokeShader.md b/docs/Get-OBSRoundedStrokeShader.md new file mode 100644 index 000000000..9a6b1f54c --- /dev/null +++ b/docs/Get-OBSRoundedStrokeShader.md @@ -0,0 +1,101 @@ +Get-OBSRoundedStrokeShader +-------------------------- + +### Synopsis +Get-OBSRoundedStrokeShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MinimumAlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------| +|`[Int]`|false |named |False |minimum_alpha_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedStrokeShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSScanLineShader.md b/docs/Get-OBSScanLineShader.md new file mode 100644 index 000000000..2dc371b5d --- /dev/null +++ b/docs/Get-OBSScanLineShader.md @@ -0,0 +1,125 @@ +Get-OBSScanLineShader +--------------------- + +### Synopsis +Get-OBSScanLineShader [[-Speed] ] [[-Angle] ] [[-Floor] ] [[-Period] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Lengthwise] [-Animate] [-Shift] [-Boost] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Angle** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Boost** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Floor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Lengthwise** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Period** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **Shift** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSScanLineShader [-Lengthwise ] [-Animate ] [[-Speed] ] [[-Angle] ] [-Shift ] [-Boost ] [[-Floor] ] [[-Period] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSScene.md b/docs/Get-OBSScene.md index 84e824406..283aff186 100644 --- a/docs/Get-OBSScene.md +++ b/docs/Get-OBSScene.md @@ -1,87 +1,51 @@ Get-OBSScene ------------ - - - ### Synopsis Get-OBSScene : GetSceneList - - --- - ### Description Gets an array of all scenes in OBS. - Get-OBSScene calls the OBS WebSocket with a request of type GetSceneList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenelist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenelist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSScene ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSScene [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSSceneCollection.md b/docs/Get-OBSSceneCollection.md index d3787f3f7..b1ad32493 100644 --- a/docs/Get-OBSSceneCollection.md +++ b/docs/Get-OBSSceneCollection.md @@ -1,87 +1,51 @@ Get-OBSSceneCollection ---------------------- - - - ### Synopsis Get-OBSSceneCollection : GetSceneCollectionList - - --- - ### Description Gets an array of all scene collections - Get-OBSSceneCollection calls the OBS WebSocket with a request of type GetSceneCollectionList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenecollectionlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenecollectionlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSSceneCollection ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSSceneCollection [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSSceneItem.md b/docs/Get-OBSSceneItem.md index 3b87e0c06..98e65e008 100644 --- a/docs/Get-OBSSceneItem.md +++ b/docs/Get-OBSSceneItem.md @@ -1,94 +1,59 @@ Get-OBSSceneItem ---------------- - - - ### Synopsis Get-OBSSceneItem : GetSceneItemList - - --- - ### Description Gets a list of all scene items in a scene. Scenes only - Get-OBSSceneItem calls the OBS WebSocket with a request of type GetSceneItemList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlist) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to get the items of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to get the items of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItem [-SceneName] [-PassThru] [-NoResponse] [] +Get-OBSSceneItem [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSceneItemBlendMode.md b/docs/Get-OBSSceneItemBlendMode.md index 91d1bac1a..15464071f 100644 --- a/docs/Get-OBSSceneItemBlendMode.md +++ b/docs/Get-OBSSceneItemBlendMode.md @@ -1,17 +1,11 @@ Get-OBSSceneItemBlendMode ------------------------- - - - ### Synopsis Get-OBSSceneItemBlendMode : GetSceneItemBlendMode - - --- - ### Description Gets the blend mode of a scene item. @@ -28,92 +22,55 @@ Blend modes: Scenes and Groups - Get-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type GetSceneItemBlendMode. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemblendmode](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemblendmode) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemBlendMode [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemBlendMode [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSceneItemEnabled.md b/docs/Get-OBSSceneItemEnabled.md index ff916a40c..8fbc1c859 100644 --- a/docs/Get-OBSSceneItemEnabled.md +++ b/docs/Get-OBSSceneItemEnabled.md @@ -1,109 +1,66 @@ Get-OBSSceneItemEnabled ----------------------- - - - ### Synopsis Get-OBSSceneItemEnabled : GetSceneItemEnabled - - --- - ### Description Gets the enable state of a scene item. Scenes and Groups - Get-OBSSceneItemEnabled calls the OBS WebSocket with a request of type GetSceneItemEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemenabled) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemEnabled [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemEnabled [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSceneItemId.md b/docs/Get-OBSSceneItemId.md index 7dda969b0..5cae064ba 100644 --- a/docs/Get-OBSSceneItemId.md +++ b/docs/Get-OBSSceneItemId.md @@ -1,124 +1,73 @@ Get-OBSSceneItemId ------------------ - - - ### Synopsis Get-OBSSceneItemId : GetSceneItemId - - --- - ### Description Searches a scene for a source, and returns its id. Scenes and Groups - Get-OBSSceneItemId calls the OBS WebSocket with a request of type GetSceneItemId. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemid](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemid) - - - - --- - ### Parameters #### **SceneName** - Name of the scene or group to search in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene or group to search in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SourceName** - Name of the source to find - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **SearchOffset** - Number of matches to skip during search. >= 0 means first forward. -1 means last (top) item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |3 |true (ByPropertyName)| - - +|`[Double]`|false |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemId [-SceneName] [-SourceName] [[-SearchOffset] ] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemId [[-SceneName] ] [[-SceneUuid] ] [-SourceName] [[-SearchOffset] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSceneItemIndex.md b/docs/Get-OBSSceneItemIndex.md index 3394792e2..1c6e8e78b 100644 --- a/docs/Get-OBSSceneItemIndex.md +++ b/docs/Get-OBSSceneItemIndex.md @@ -1,17 +1,11 @@ Get-OBSSceneItemIndex --------------------- - - - ### Synopsis Get-OBSSceneItemIndex : GetSceneItemIndex - - --- - ### Description Gets the index position of a scene item in a scene. @@ -20,92 +14,55 @@ An index of 0 is at the bottom of the source list in the UI. Scenes and Groups - Get-OBSSceneItemIndex calls the OBS WebSocket with a request of type GetSceneItemIndex. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemindex](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemindex) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemIndex [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemIndex [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSceneItemLocked.md b/docs/Get-OBSSceneItemLocked.md index 611057446..8f27151e5 100644 --- a/docs/Get-OBSSceneItemLocked.md +++ b/docs/Get-OBSSceneItemLocked.md @@ -1,109 +1,66 @@ Get-OBSSceneItemLocked ---------------------- - - - ### Synopsis Get-OBSSceneItemLocked : GetSceneItemLocked - - --- - ### Description Gets the lock state of a scene item. Scenes and Groups - Get-OBSSceneItemLocked calls the OBS WebSocket with a request of type GetSceneItemLocked. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlocked](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlocked) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemLocked [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemLocked [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSceneItemSource.md b/docs/Get-OBSSceneItemSource.md new file mode 100644 index 000000000..468336750 --- /dev/null +++ b/docs/Get-OBSSceneItemSource.md @@ -0,0 +1,64 @@ +Get-OBSSceneItemSource +---------------------- + +### Synopsis +Get-OBSSceneItemSource : GetSceneItemSource + +--- + +### Description + +Gets the source associated with a scene item. + +Get-OBSSceneItemSource calls the OBS WebSocket with a request of type GetSceneItemSource. + +--- + +### Related Links +* [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource) + +--- + +### Parameters +#### **SceneName** +Name of the scene the item is in + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |1 |true (ByPropertyName)| + +#### **SceneUuid** +UUID of the scene the item is in + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| + +#### **SceneItemId** +Numeric ID of the scene item + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|true |3 |true (ByPropertyName)| + +#### **PassThru** +If set, will return the information that would otherwise be sent to OBS. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-----------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| + +#### **NoResponse** +If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-----------------------------------------------------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| + +--- + +### Syntax +```PowerShell +Get-OBSSceneItemSource [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] +``` diff --git a/docs/Get-OBSSceneItemTransform.md b/docs/Get-OBSSceneItemTransform.md index 6d3ba1ae0..f842d0a3b 100644 --- a/docs/Get-OBSSceneItemTransform.md +++ b/docs/Get-OBSSceneItemTransform.md @@ -1,109 +1,66 @@ Get-OBSSceneItemTransform ------------------------- - - - ### Synopsis Get-OBSSceneItemTransform : GetSceneItemTransform - - --- - ### Description Gets the transform and crop info of a scene item. Scenes and Groups - Get-OBSSceneItemTransform calls the OBS WebSocket with a request of type GetSceneItemTransform. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemtransform](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemtransform) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemTransform [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemTransform [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSceneSceneTransitionOverride.md b/docs/Get-OBSSceneSceneTransitionOverride.md index a85cc7ff1..0b075f415 100644 --- a/docs/Get-OBSSceneSceneTransitionOverride.md +++ b/docs/Get-OBSSceneSceneTransitionOverride.md @@ -1,92 +1,59 @@ Get-OBSSceneSceneTransitionOverride ----------------------------------- - - - ### Synopsis Get-OBSSceneSceneTransitionOverride : GetSceneSceneTransitionOverride - - --- - ### Description Gets the scene transition overridden for a scene. +Note: A transition UUID response field is not currently able to be implemented as of 2024-1-18. Get-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type GetSceneSceneTransitionOverride. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenescenetransitionoverride](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenescenetransitionoverride) - - - - --- - ### Parameters #### **SceneName** - Name of the scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneSceneTransitionOverride [-SceneName] [-PassThru] [-NoResponse] [] +Get-OBSSceneSceneTransitionOverride [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSceneTransition.md b/docs/Get-OBSSceneTransition.md index 69d38e30a..52e203ce4 100644 --- a/docs/Get-OBSSceneTransition.md +++ b/docs/Get-OBSSceneTransition.md @@ -1,87 +1,51 @@ Get-OBSSceneTransition ---------------------- - - - ### Synopsis Get-OBSSceneTransition : GetSceneTransitionList - - --- - ### Description Gets an array of all scene transitions in OBS. - Get-OBSSceneTransition calls the OBS WebSocket with a request of type GetSceneTransitionList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenetransitionlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenetransitionlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSSceneTransition ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSSceneTransition [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSSeascapeShader.md b/docs/Get-OBSSeascapeShader.md new file mode 100644 index 000000000..671c6c0d6 --- /dev/null +++ b/docs/Get-OBSSeascapeShader.md @@ -0,0 +1,125 @@ +Get-OBSSeascapeShader +--------------------- + +### Synopsis +Get-OBSSeascapeShader [[-SEAHEIGHT] ] [[-SEACHOPPY] ] [[-SEASPEED] ] [[-SEAFREQ] ] [[-SEABASE] ] [[-SEAWATERCOLOR] ] [[-CAMERASPEED] ] [[-CAMERATURNSPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AA] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AA** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CAMERASPEED** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |CAMERA_SPEED| + +#### **CAMERATURNSPEED** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |CAMERA_TURN_SPEED| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SEABASE** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[String]`|false |named |False |SEA_BASE| + +#### **SEACHOPPY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |SEA_CHOPPY| + +#### **SEAFREQ** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |SEA_FREQ| + +#### **SEAHEIGHT** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |SEA_HEIGHT| + +#### **SEASPEED** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |SEA_SPEED| + +#### **SEAWATERCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[String]`|false |named |False |SEA_WATER_COLOR| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSeascapeShader [-AA ] [[-SEAHEIGHT] ] [[-SEACHOPPY] ] [[-SEASPEED] ] [[-SEAFREQ] ] [[-SEABASE] ] [[-SEAWATERCOLOR] ] [[-CAMERASPEED] ] [[-CAMERATURNSPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSSeasickShader.md b/docs/Get-OBSSeasickShader.md new file mode 100644 index 000000000..09ebefc32 --- /dev/null +++ b/docs/Get-OBSSeasickShader.md @@ -0,0 +1,101 @@ +Get-OBSSeasickShader +-------------------- + +### Synopsis +Get-OBSSeasickShader [[-Notes] ] [[-Amplitude] ] [[-Speed] ] [[-Frequency] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Amplitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Frequency** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSeasickShader [[-Notes] ] [[-Amplitude] ] [[-Speed] ] [[-Frequency] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSSelectiveColorShader.md b/docs/Get-OBSSelectiveColorShader.md new file mode 100644 index 000000000..7dcfc66a1 --- /dev/null +++ b/docs/Get-OBSSelectiveColorShader.md @@ -0,0 +1,137 @@ +Get-OBSSelectiveColorShader +--------------------------- + +### Synopsis +Get-OBSSelectiveColorShader [[-CutoffRed] ] [[-CutoffGreen] ] [[-CutoffBlue] ] [[-CutoffYellow] ] [[-AcceptanceAmplifier] ] [[-Notes] ] [[-BackgroundType] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowRed] [-ShowGreen] [-ShowBlue] [-ShowYellow] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AcceptanceAmplifier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |acceptance_Amplifier| + +#### **BackgroundType** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |background_type| + +#### **CutoffBlue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |cutoff_Blue| + +#### **CutoffGreen** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |cutoff_Green| + +#### **CutoffRed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |cutoff_Red| + +#### **CutoffYellow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |cutoff_Yellow| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShowBlue** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[Switch]`|false |named |False |show_Blue| + +#### **ShowGreen** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |show_Green| + +#### **ShowRed** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[Switch]`|false |named |False |show_Red| + +#### **ShowYellow** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |show_Yellow| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSelectiveColorShader [[-CutoffRed] ] [[-CutoffGreen] ] [[-CutoffBlue] ] [[-CutoffYellow] ] [[-AcceptanceAmplifier] ] [-ShowRed ] [-ShowGreen ] [-ShowBlue ] [-ShowYellow ] [[-Notes] ] [[-BackgroundType] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSShakeShader.md b/docs/Get-OBSShakeShader.md new file mode 100644 index 000000000..c6932f1e5 --- /dev/null +++ b/docs/Get-OBSShakeShader.md @@ -0,0 +1,167 @@ +Get-OBSShakeShader +------------------ + +### Synopsis +Get-OBSShakeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-LocalTime] ] [[-RandomScale] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Worble] [-RandomizeMovement] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **MaxGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |max_growth_pixels| + +#### **MinGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |min_growth_pixels| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandomizeMovement** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------------| +|`[Switch]`|false |named |False |randomize_movement| + +#### **RandomScale** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |random_scale| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +#### **Worble** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSShakeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-LocalTime] ] [[-RandomScale] ] [-Worble ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [-RandomizeMovement ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSShineShader.md b/docs/Get-OBSShineShader.md new file mode 100644 index 000000000..43194d999 --- /dev/null +++ b/docs/Get-OBSShineShader.md @@ -0,0 +1,155 @@ +Get-OBSShineShader +------------------ + +### Synopsis +Get-OBSShineShader [[-LTex] ] [[-ShineColor] ] [[-SpeedPercent] ] [[-GradientPercent] ] [[-DelayPercent] ] [[-Notes] ] [[-StartAdjust] ] [[-StopAdjust] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Hide] [-Reverse] [-OneDirection] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **DelayPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |delay_percent| + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |gradient_percent| + +#### **Hide** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LTex** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |l_tex | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OneDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |One_Direction| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Reverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShineColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |shine_color| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **StartAdjust** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |start_adjust| + +#### **StopAdjust** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |stop_adjust| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSShineShader [[-LTex] ] [[-ShineColor] ] [[-SpeedPercent] ] [[-GradientPercent] ] [[-DelayPercent] ] [-ApplyToAlphaLayer ] [-Ease ] [-Hide ] [-Reverse ] [-OneDirection ] [-Glitch ] [[-Notes] ] [[-StartAdjust] ] [[-StopAdjust] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSSimpleGradientShader.md b/docs/Get-OBSSimpleGradientShader.md new file mode 100644 index 000000000..2dc4b4a37 --- /dev/null +++ b/docs/Get-OBSSimpleGradientShader.md @@ -0,0 +1,119 @@ +Get-OBSSimpleGradientShader +--------------------------- + +### Synopsis +Get-OBSSimpleGradientShader [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-LensFlair] [-AnimateLensFlair] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |alpha_percentage| + +#### **AnimateLensFlair** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------------| +|`[Switch]`|false |named |False |Animate_Lens_Flair| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LensFlair** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |Lens_Flair| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |speed_percentage| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSimpleGradientShader [[-SpeedPercentage] ] [[-AlphaPercentage] ] [-LensFlair ] [-AnimateLensFlair ] [-ApplyToAlphaLayer ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSSimplexNoiseShader.md b/docs/Get-OBSSimplexNoiseShader.md new file mode 100644 index 000000000..399ba8482 --- /dev/null +++ b/docs/Get-OBSSimplexNoiseShader.md @@ -0,0 +1,125 @@ +Get-OBSSimplexNoiseShader +------------------------- + +### Synopsis +Get-OBSSimplexNoiseShader [[-SnapPercent] ] [[-SpeedPercent] ] [[-Resolution] ] [[-ForeColor] ] [[-BackColor] ] [[-AlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Fractal] [-UseAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Alpha_Percent| + +#### **BackColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Back_Color| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ForeColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fore_Color| + +#### **Fractal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Resolution** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SnapPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |Snap_Percent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Speed_Percent| + +#### **UseAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[Switch]`|false |named |False |Use_Alpha_Layer| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSimplexNoiseShader [[-SnapPercent] ] [[-SpeedPercent] ] [[-Resolution] ] [-Fractal ] [-UseAlphaLayer ] [[-ForeColor] ] [[-BackColor] ] [[-AlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSSmartDenoiseShader.md b/docs/Get-OBSSmartDenoiseShader.md new file mode 100644 index 000000000..507159a2b --- /dev/null +++ b/docs/Get-OBSSmartDenoiseShader.md @@ -0,0 +1,89 @@ +Get-OBSSmartDenoiseShader +------------------------- + +### Synopsis +Get-OBSSmartDenoiseShader [[-USigma] ] [[-UKSigma] ] [[-UThreshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UKSigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **USigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UThreshold** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSmartDenoiseShader [[-USigma] ] [[-UKSigma] ] [[-UThreshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSSoundCloudSource.md b/docs/Get-OBSSoundCloudSource.md new file mode 100644 index 000000000..11bb87de0 --- /dev/null +++ b/docs/Get-OBSSoundCloudSource.md @@ -0,0 +1,176 @@ +Set-OBSSoundCloudSource +----------------------- + +### Synopsis +Sets a Sound Cloud Source + +--- + +### Description + +Adds or changes a Sound Cloud source OBS. +Sound Cloud Sources are Browser Sources that display a [SoundCloud Player Widget](https://developers.soundcloud.com/docs/api/html5-widget). + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-obssoundCloudSource -Uri https://soundcloud.com/outertone/sets/new-earth +``` + +--- + +### Parameters +#### **Uri** +The uri to display. This must point to a SoundCloud URL. + +|Type |Required|Position|PipelineInput |Aliases | +|-------|--------|--------|---------------------|---------------------------------------| +|`[Uri]`|false |1 |true (ByPropertyName)|Url
SoundCloudUri
SoundCloudUrl| + +#### **NoAutoPlay** +If set, will not autoplay. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoArtwork** +If set, will not display album artwork. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoPlayCount** +If set, will not display play count. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoUploaderInfo** +If set, will not display uploader info. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **TrackNumber** +If provided, will start playing at a given track number. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **ShowShare** +If set, will show a share link. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ShowDownload** +If set, will show a download link. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ShowBuy** +If set, will show a buy link. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Color** +The color used for the SoundCloud audio bars and buttons. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |4 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |5 |true (ByPropertyName)| + +#### **CSS** +The css style used to render the browser page. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **ShutdownWhenHidden** +If set, the browser source will shutdown when it is hidden + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **RestartWhenActived** +If set, the browser source will restart when it is activated. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **RerouteAudio** +If set, audio from the browser source will be rerouted into OBS. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FramesPerSecond** +If provided, the browser source will render at a custom frame rate. + +|Type |Required|Position|PipelineInput |Aliases| +|---------|--------|--------|---------------------|-------| +|`[Int32]`|false |7 |true (ByPropertyName)|FPS | + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |8 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, then "SoundCloud" will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |9 |true (ByPropertyName)|InputName
SourceName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSSoundCloudSource [[-Uri] ] [-NoAutoPlay] [-NoArtwork] [-NoPlayCount] [-NoUploaderInfo] [[-TrackNumber] ] [-ShowShare] [-ShowDownload] [-ShowBuy] [[-Color] ] [[-Width] ] [[-Height] ] [[-CSS] ] [-ShutdownWhenHidden] [-RestartWhenActived] [-RerouteAudio] [[-FramesPerSecond] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Get-OBSSourceActive.md b/docs/Get-OBSSourceActive.md index 028f1e93f..003e472a1 100644 --- a/docs/Get-OBSSourceActive.md +++ b/docs/Get-OBSSourceActive.md @@ -1,94 +1,59 @@ Get-OBSSourceActive ------------------- - - - ### Synopsis Get-OBSSourceActive : GetSourceActive - - --- - ### Description Gets the active and show state of a source. **Compatible with inputs and scenes.** - Get-OBSSourceActive calls the OBS WebSocket with a request of type GetSourceActive. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourceactive](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourceactive) - - - - --- - ### Parameters #### **SourceName** - Name of the source to get the active state of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to get the active state of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSourceActive [-SourceName] [-PassThru] [-NoResponse] [] +Get-OBSSourceActive [[-SourceName] ] [[-SourceUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSourceFilter.md b/docs/Get-OBSSourceFilter.md index 985ef4727..286e39ba5 100644 --- a/docs/Get-OBSSourceFilter.md +++ b/docs/Get-OBSSourceFilter.md @@ -1,107 +1,64 @@ Get-OBSSourceFilter ------------------- - - - ### Synopsis Get-OBSSourceFilter : GetSourceFilter - - --- - ### Description Gets the info for a specific source filter. - Get-OBSSourceFilter calls the OBS WebSocket with a request of type GetSourceFilter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilter) - - - - --- - ### Parameters #### **SourceName** - Name of the source - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSourceFilter [-SourceName] [-FilterName] [-PassThru] [-NoResponse] [] +Get-OBSSourceFilter [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSourceFilterDefaultSettings.md b/docs/Get-OBSSourceFilterDefaultSettings.md index e6793985a..0ae559238 100644 --- a/docs/Get-OBSSourceFilterDefaultSettings.md +++ b/docs/Get-OBSSourceFilterDefaultSettings.md @@ -1,91 +1,49 @@ Get-OBSSourceFilterDefaultSettings ---------------------------------- - - - ### Synopsis Get-OBSSourceFilterDefaultSettings : GetSourceFilterDefaultSettings - - --- - ### Description Gets the default settings for a filter kind. - Get-OBSSourceFilterDefaultSettings calls the OBS WebSocket with a request of type GetSourceFilterDefaultSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterdefaultsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterdefaultsettings) - - - - --- - ### Parameters #### **FilterKind** - Filter kind to get the default settings for - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSSourceFilterDefaultSettings [-FilterKind] [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSSourceFilterKind.md b/docs/Get-OBSSourceFilterKind.md new file mode 100644 index 000000000..6428dbd0d --- /dev/null +++ b/docs/Get-OBSSourceFilterKind.md @@ -0,0 +1,54 @@ +Get-OBSSourceFilterKind +----------------------- + +### Synopsis +Get-OBSSourceFilterKind : GetSourceFilterKindList + +--- + +### Description + +Gets an array of all available source filter kinds. + +Similar to `GetInputKindList` + +Get-OBSSourceFilterKind calls the OBS WebSocket with a request of type GetSourceFilterKindList. + +--- + +### Related Links +* [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Get-OBSSourceFilterKind +``` + +--- + +### Parameters +#### **PassThru** +If set, will return the information that would otherwise be sent to OBS. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-----------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| + +#### **NoResponse** +If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-----------------------------------------------------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| + +--- + +### Syntax +```PowerShell +Get-OBSSourceFilterKind [-PassThru] [-NoResponse] [] +``` diff --git a/docs/Get-OBSSourceFilterList.md b/docs/Get-OBSSourceFilterList.md index dec0d4a8d..71dd19c65 100644 --- a/docs/Get-OBSSourceFilterList.md +++ b/docs/Get-OBSSourceFilterList.md @@ -1,92 +1,57 @@ Get-OBSSourceFilterList ----------------------- - - - ### Synopsis Get-OBSSourceFilterList : GetSourceFilterList - - --- - ### Description Gets an array of all of a source's filters. - Get-OBSSourceFilterList calls the OBS WebSocket with a request of type GetSourceFilterList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterlist) - - - - --- - ### Parameters #### **SourceName** - Name of the source - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSourceFilterList [-SourceName] [-PassThru] [-NoResponse] [] +Get-OBSSourceFilterList [[-SourceName] ] [[-SourceUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSourceScreenshot.md b/docs/Get-OBSSourceScreenshot.md index fc86e1c02..347ab5653 100644 --- a/docs/Get-OBSSourceScreenshot.md +++ b/docs/Get-OBSSourceScreenshot.md @@ -1,17 +1,11 @@ Get-OBSSourceScreenshot ----------------------- - - - ### Synopsis Get-OBSSourceScreenshot : GetSourceScreenshot - - --- - ### Description Gets a Base64-encoded screenshot of a source. @@ -21,137 +15,76 @@ If `imageWidth` and `imageHeight` are not specified, the compressed image will u **Compatible with inputs and scenes.** - Get-OBSSourceScreenshot calls the OBS WebSocket with a request of type GetSourceScreenshot. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcescreenshot](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcescreenshot) - - - - --- - ### Parameters #### **SourceName** - Name of the source to take a screenshot of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to take a screenshot of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **ImageFormat** - Image compression format to use. Use `GetVersion` to get compatible image formats - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **ImageWidth** - Width to scale the screenshot to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |3 |true (ByPropertyName)| - - +|`[Double]`|false |4 |true (ByPropertyName)| #### **ImageHeight** - Height to scale the screenshot to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |4 |true (ByPropertyName)| - - +|`[Double]`|false |5 |true (ByPropertyName)| #### **ImageCompressionQuality** - Compression quality to use. 0 for high compression, 100 for uncompressed. -1 to use "default" (whatever that means, idk) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |5 |true (ByPropertyName)| - - +|`[Double]`|false |6 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSourceScreenshot [-SourceName] [-ImageFormat] [[-ImageWidth] ] [[-ImageHeight] ] [[-ImageCompressionQuality] ] [-PassThru] [-NoResponse] [] +Get-OBSSourceScreenshot [[-SourceName] ] [[-SourceUuid] ] [-ImageFormat] [[-ImageWidth] ] [[-ImageHeight] ] [[-ImageCompressionQuality] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Get-OBSSpecialInputs.md b/docs/Get-OBSSpecialInputs.md index 8a3860359..726182f83 100644 --- a/docs/Get-OBSSpecialInputs.md +++ b/docs/Get-OBSSpecialInputs.md @@ -1,87 +1,51 @@ Get-OBSSpecialInputs -------------------- - - - ### Synopsis Get-OBSSpecialInputs : GetSpecialInputs - - --- - ### Description Gets the names of all special inputs. - Get-OBSSpecialInputs calls the OBS WebSocket with a request of type GetSpecialInputs. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getspecialinputs](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getspecialinputs) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSSpecialInputs ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSSpecialInputs [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSSpecularShineShader.md b/docs/Get-OBSSpecularShineShader.md new file mode 100644 index 000000000..c07c1e32d --- /dev/null +++ b/docs/Get-OBSSpecularShineShader.md @@ -0,0 +1,125 @@ +Get-OBSSpecularShineShader +-------------------------- + +### Synopsis +Get-OBSSpecularShineShader [[-Hint] ] [[-Roughness] ] [[-LightStrength] ] [[-LightPositionX] ] [[-LightPositionY] ] [[-FlattenNormal] ] [[-StretchNormalX] ] [[-StretchNormalY] ] [[-LightColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FlattenNormal** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Hint** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LightColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------| +|`[System.Single[]]`|false |named |False |Light_Color| + +#### **LightPositionX** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LightPositionY** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LightStrength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Roughness** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StretchNormalX** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **StretchNormalY** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSpecularShineShader [[-Hint] ] [[-Roughness] ] [[-LightStrength] ] [[-LightPositionX] ] [[-LightPositionY] ] [[-FlattenNormal] ] [[-StretchNormalX] ] [[-StretchNormalY] ] [[-LightColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSSpotlightShader.md b/docs/Get-OBSSpotlightShader.md new file mode 100644 index 000000000..a515a5876 --- /dev/null +++ b/docs/Get-OBSSpotlightShader.md @@ -0,0 +1,113 @@ +Get-OBSSpotlightShader +---------------------- + +### Synopsis +Get-OBSSpotlightShader [[-SpeedPercent] ] [[-FocusPercent] ] [[-SpotlightColor] ] [[-HorizontalOffset] ] [[-VerticalOffset] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FocusPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Focus_Percent| + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HorizontalOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |Horizontal_Offset| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Speed_Percent| + +#### **SpotlightColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[String]`|false |named |False |Spotlight_Color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VerticalOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Vertical_Offset| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSpotlightShader [[-SpeedPercent] ] [[-FocusPercent] ] [-Glitch ] [[-SpotlightColor] ] [[-HorizontalOffset] ] [[-VerticalOffset] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSStats.md b/docs/Get-OBSStats.md index fe1ed207b..b3d8c967c 100644 --- a/docs/Get-OBSStats.md +++ b/docs/Get-OBSStats.md @@ -1,87 +1,51 @@ Get-OBSStats ------------ - - - ### Synopsis Get-OBSStats : GetStats - - --- - ### Description Gets statistics about OBS, obs-websocket, and the current session. - Get-OBSStats calls the OBS WebSocket with a request of type GetStats. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstats](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstats) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSStats ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSStats [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSStreamServiceSettings.md b/docs/Get-OBSStreamServiceSettings.md index 0ca0c429f..68c6049c9 100644 --- a/docs/Get-OBSStreamServiceSettings.md +++ b/docs/Get-OBSStreamServiceSettings.md @@ -1,87 +1,51 @@ Get-OBSStreamServiceSettings ---------------------------- - - - ### Synopsis Get-OBSStreamServiceSettings : GetStreamServiceSettings - - --- - ### Description Gets the current stream service settings (stream destination). - Get-OBSStreamServiceSettings calls the OBS WebSocket with a request of type GetStreamServiceSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamservicesettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamservicesettings) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSStreamServiceSettings ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSStreamServiceSettings [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSStreamStatus.md b/docs/Get-OBSStreamStatus.md index d2f654f53..a93d8ba82 100644 --- a/docs/Get-OBSStreamStatus.md +++ b/docs/Get-OBSStreamStatus.md @@ -1,87 +1,51 @@ Get-OBSStreamStatus ------------------- - - - ### Synopsis Get-OBSStreamStatus : GetStreamStatus - - --- - ### Description Gets the status of the stream output. - Get-OBSStreamStatus calls the OBS WebSocket with a request of type GetStreamStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamstatus) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSStreamStatus ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSStreamStatus [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSStudioModeEnabled.md b/docs/Get-OBSStudioModeEnabled.md index d35494fdb..983c40226 100644 --- a/docs/Get-OBSStudioModeEnabled.md +++ b/docs/Get-OBSStudioModeEnabled.md @@ -1,87 +1,51 @@ Get-OBSStudioModeEnabled ------------------------ - - - ### Synopsis Get-OBSStudioModeEnabled : GetStudioModeEnabled - - --- - ### Description Gets whether studio is enabled. - Get-OBSStudioModeEnabled calls the OBS WebSocket with a request of type GetStudioModeEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstudiomodeenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstudiomodeenabled) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSStudioModeEnabled ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSStudioModeEnabled [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSSwirlShader.md b/docs/Get-OBSSwirlShader.md new file mode 100644 index 000000000..29211abfa --- /dev/null +++ b/docs/Get-OBSSwirlShader.md @@ -0,0 +1,113 @@ +Get-OBSSwirlShader +------------------ + +### Synopsis +Get-OBSSwirlShader [[-Radius] ] [[-Angle] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Inverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Angle** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Inverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSwirlShader [[-Radius] ] [[-Angle] ] [[-CenterX] ] [[-CenterY] ] [-Animate ] [-Inverse ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSSwitchSource.md b/docs/Get-OBSSwitchSource.md new file mode 100644 index 000000000..d00a37c49 --- /dev/null +++ b/docs/Get-OBSSwitchSource.md @@ -0,0 +1,222 @@ +Set-OBSSwitchSource +------------------- + +### Synopsis +Adds a VLC playlist source + +--- + +### Description + +Adds or sets VLC playlist sources to OBS. +VLC must be installed for this to work. + +--- + +### Related Links +* [Add-OBSInput](Add-OBSInput.md) + +* [Set-OBSInputSettings](Set-OBSInputSettings.md) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory +``` + +--- + +### Parameters +#### **SourceList** +The path to the media file. + +|Type |Required|Position|PipelineInput |Aliases| +|------------|--------|--------|---------------------|-------| +|`[String[]]`|false |1 |true (ByPropertyName)|Sources| + +#### **Select** +What to select in the playlist. +If a number is provided, this will select an index. +If a string is provided, this will select the whole name or last part of a name, accepting wildcards. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------------------| +|`[Object]`|false |2 |true (ByPropertyName)|SelectIndex
SelectName| + +#### **Loop** +If set, the list of sources will loop. + +|Type |Required|Position|PipelineInput |Aliases| +|----------|--------|--------|---------------------|-------| +|`[Switch]`|false |named |true (ByPropertyName)|Looping| + +#### **TimeSwitch** +If set, will switch between sources. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Interval** +The interval between sources + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[TimeSpan]`|false |3 |true (ByPropertyName)| + +#### **Duration** +The duration between sources that are switching at a time. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[TimeSpan]`|false |4 |true (ByPropertyName)| + +#### **TimeSwitchTo** +The item that will be switched in a TimeSwitch, after -Duration and -Interval. +Valid Values: + +* None +* Next +* Previous +* First +* Last +* Random + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **MediaStateSwitch** +If set, will switch on the underlying source's media state events. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **MediaStateChange** +The change in media state that should trigger a switch +Valid Values: + +* Playing +* Opening +* Buffering +* Paused +* Stopped +* Ended +* Error +* Playing +* NotOpening +* NotBuffering +* NotPaused +* NotStopped +* NotEnded +* NotError + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Object]`|false |6 |true (ByPropertyName)| + +#### **MediaSwitchTo** +When the source switcher is trigger by media end, this determines the next source that will be switched to. +Valid Values: + +* None +* Next +* Previous +* First +* Last +* Random + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |7 |true (ByPropertyName)| + +#### **TransitionName** +The name of the transition between sources. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |8 |true (ByPropertyName)| + +#### **TransitionProperty** +The properties sent to the transition. +Notice: this current requires confirmation in the UI. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |9 |true (ByPropertyName)| + +#### **ShowTransition** +The name of the transition used to show a source. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |10 |true (ByPropertyName)| + +#### **ShowTransitionProperty** +The properties sent to the show transition. +Notice: this current requires confirmation in the UI. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |11 |true (ByPropertyName)| + +#### **HideTransition** +The transition used to hide a source. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |12 |true (ByPropertyName)| + +#### **HideTransitionProperty** +The properties sent to the hide transition. +Notice: this current requires confirmation in the UI. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |13 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |14 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |15 |true (ByPropertyName)|InputName
SourceName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FitToScreen** +If set, will fit the input to the screen. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSSwitchSource [[-SourceList] ] [[-Select] ] [-Loop] [-TimeSwitch] [[-Interval] ] [[-Duration] ] [[-TimeSwitchTo] ] [-MediaStateSwitch] [[-MediaStateChange] ] [[-MediaSwitchTo] ] [[-TransitionName] ] [[-TransitionProperty] ] [[-ShowTransition] ] [[-ShowTransitionProperty] ] [[-HideTransition] ] [[-HideTransitionProperty] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +``` diff --git a/docs/Get-OBSTetraShader.md b/docs/Get-OBSTetraShader.md new file mode 100644 index 000000000..0a05d4615 --- /dev/null +++ b/docs/Get-OBSTetraShader.md @@ -0,0 +1,179 @@ +Get-OBSTetraShader +------------------ + +### Synopsis +Get-OBSTetraShader [[-RedR] ] [[-RedG] ] [[-RedB] ] [[-YelR] ] [[-YelG] ] [[-YelB] ] [[-GrnR] ] [[-GrnG] ] [[-GrnB] ] [[-CynR] ] [[-CynG] ] [[-CynB] ] [[-BluR] ] [[-BluG] ] [[-BluB] ] [[-MagR] ] [[-MagG] ] [[-MagB] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BluB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BluG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BluR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **CynB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **CynG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **CynR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GrnB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **GrnG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **GrnR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MagB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MagG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MagR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RedB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **RedG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **RedR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **YelB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **YelG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **YelR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTetraShader [[-RedR] ] [[-RedG] ] [[-RedB] ] [[-YelR] ] [[-YelG] ] [[-YelB] ] [[-GrnR] ] [[-GrnG] ] [[-GrnB] ] [[-CynR] ] [[-CynG] ] [[-CynB] ] [[-BluR] ] [[-BluG] ] [[-BluB] ] [[-MagR] ] [[-MagG] ] [[-MagB] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSThermalShader.md b/docs/Get-OBSThermalShader.md new file mode 100644 index 000000000..69e7f9061 --- /dev/null +++ b/docs/Get-OBSThermalShader.md @@ -0,0 +1,77 @@ +Get-OBSThermalShader +-------------------- + +### Synopsis +Get-OBSThermalShader [[-Strength] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSThermalShader [[-Strength] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSTransitionKind.md b/docs/Get-OBSTransitionKind.md index 02187a4cc..5cd7a45c3 100644 --- a/docs/Get-OBSTransitionKind.md +++ b/docs/Get-OBSTransitionKind.md @@ -1,89 +1,53 @@ Get-OBSTransitionKind --------------------- - - - ### Synopsis Get-OBSTransitionKind : GetTransitionKindList - - --- - ### Description Gets an array of all available transition kinds. Similar to `GetInputKindList` - Get-OBSTransitionKind calls the OBS WebSocket with a request of type GetTransitionKindList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gettransitionkindlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gettransitionkindlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSTransitionKind ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSTransitionKind [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSTvCrtSubpixelShader.md b/docs/Get-OBSTvCrtSubpixelShader.md new file mode 100644 index 000000000..6e3aa0bda --- /dev/null +++ b/docs/Get-OBSTvCrtSubpixelShader.md @@ -0,0 +1,95 @@ +Get-OBSTvCrtSubpixelShader +-------------------------- + +### Synopsis +Get-OBSTvCrtSubpixelShader [[-ChannelWidth] ] [[-ChannelHeight] ] [[-HGap] ] [[-VGap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ChannelHeight** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ChannelWidth** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HGap** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VGap** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTvCrtSubpixelShader [[-ChannelWidth] ] [[-ChannelHeight] ] [[-HGap] ] [[-VGap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSTwistShader.md b/docs/Get-OBSTwistShader.md new file mode 100644 index 000000000..e10d1ef23 --- /dev/null +++ b/docs/Get-OBSTwistShader.md @@ -0,0 +1,95 @@ +Get-OBSTwistShader +------------------ + +### Synopsis +Get-OBSTwistShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-Rotation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Rotation** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTwistShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-Rotation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSTwoPassDropShadowShader.md b/docs/Get-OBSTwoPassDropShadowShader.md new file mode 100644 index 000000000..6ba646467 --- /dev/null +++ b/docs/Get-OBSTwoPassDropShadowShader.md @@ -0,0 +1,149 @@ +Get-OBSTwoPassDropShadowShader +------------------------------ + +### Synopsis +Get-OBSTwoPassDropShadowShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **IsAlphaPremultiplied** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------------| +|`[Switch]`|false |named |False |is_alpha_premultiplied| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShadowBlurSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |shadow_blur_size| + +#### **ShadowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |shadow_color| + +#### **ShadowOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_x| + +#### **ShadowOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_y| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTwoPassDropShadowShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [-IsAlphaPremultiplied ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSVCRShader.md b/docs/Get-OBSVCRShader.md new file mode 100644 index 000000000..9a417b3e6 --- /dev/null +++ b/docs/Get-OBSVCRShader.md @@ -0,0 +1,107 @@ +Get-OBSVCRShader +---------------- + +### Synopsis +Get-OBSVCRShader [[-VerticalShift] ] [[-Distort] ] [[-Vignet] ] [[-Stripe] ] [[-VerticalFactor] ] [[-VerticalHeight] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Distort** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Stripe** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VerticalFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |vertical_factor| + +#### **VerticalHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |vertical_height| + +#### **VerticalShift** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |vertical_shift| + +#### **Vignet** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVCRShader [[-VerticalShift] ] [[-Distort] ] [[-Vignet] ] [[-Stripe] ] [[-VerticalFactor] ] [[-VerticalHeight] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSVHSShader.md b/docs/Get-OBSVHSShader.md new file mode 100644 index 000000000..752c8d25c --- /dev/null +++ b/docs/Get-OBSVHSShader.md @@ -0,0 +1,131 @@ +Get-OBSVHSShader +---------------- + +### Synopsis +Get-OBSVHSShader [[-Range] ] [[-OffsetIntensity] ] [[-NoiseQuality] ] [[-NoiseIntensity] ] [[-ColorOffsetIntensity] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorOffsetIntensity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoiseIntensity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoiseQuality** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetIntensity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Range** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVHSShader [[-Range] ] [[-OffsetIntensity] ] [[-NoiseQuality] ] [[-NoiseIntensity] ] [[-ColorOffsetIntensity] ] [[-AlphaPercentage] ] [-ApplyToImage ] [-ReplaceImageColor ] [[-ColorToReplace] ] [-ApplyToSpecificColor ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSVLCSource.md b/docs/Get-OBSVLCSource.md new file mode 100644 index 000000000..c5cf3acb8 --- /dev/null +++ b/docs/Get-OBSVLCSource.md @@ -0,0 +1,121 @@ +Set-OBSVLCSource +---------------- + +### Synopsis +Adds a VLC playlist source + +--- + +### Description + +Adds or sets VLC playlist sources to OBS. +VLC must be installed for this to work. + +--- + +### Related Links +* [Add-OBSInput](Add-OBSInput.md) + +* [Set-OBSInputSettings](Set-OBSInputSettings.md) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory +``` + +--- + +### Parameters +#### **FilePath** +The path to the media file. + +|Type |Required|Position|PipelineInput |Aliases | +|------------|--------|--------|---------------------|--------------------------------------------------| +|`[String[]]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| + +#### **Select** +What to select in the playlist. +If a number is provided, this will select an index. +If a string is provided, this will select the whole name or last part of a name, accepting wildcards. +If an `[IO.FileInfo]` is provided, this will be the exact file. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------------------| +|`[Object]`|false |2 |true (ByPropertyName)|SelectIndex
SelectName| + +#### **Shuffle** +If set, will shuffle the playlist + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Loop** +If set, the playlist will loop. + +|Type |Required|Position|PipelineInput |Aliases| +|----------|--------|--------|---------------------|-------| +|`[Switch]`|false |named |true (ByPropertyName)|Looping| + +#### **Subtitle** +If set, will show subtitles, if available. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|ShowSubtitles
Subtitles| + +#### **AudioTrack** +The selected audio track number. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |3 |true (ByPropertyName)| + +#### **SubtitleTrack** +The selected subtitle track number. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |4 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FitToScreen** +If set, will fit the input to the screen. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSVLCSource [[-FilePath] ] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +``` diff --git a/docs/Get-OBSVersion.md b/docs/Get-OBSVersion.md index 3526d9b5b..5f4b42da7 100644 --- a/docs/Get-OBSVersion.md +++ b/docs/Get-OBSVersion.md @@ -1,87 +1,51 @@ Get-OBSVersion -------------- - - - ### Synopsis Get-OBSVersion : GetVersion - - --- - ### Description Gets data about the current plugin and RPC version. - Get-OBSVersion calls the OBS WebSocket with a request of type GetVersion. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getversion](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getversion) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSVersion ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSVersion [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSVideoSettings.md b/docs/Get-OBSVideoSettings.md index 398a54212..770d65dd1 100644 --- a/docs/Get-OBSVideoSettings.md +++ b/docs/Get-OBSVideoSettings.md @@ -1,89 +1,53 @@ Get-OBSVideoSettings -------------------- - - - ### Synopsis Get-OBSVideoSettings : GetVideoSettings - - --- - ### Description Gets the current video settings. Note: To get the true FPS value, divide the FPS numerator by the FPS denominator. Example: `60000/1001` - Get-OBSVideoSettings calls the OBS WebSocket with a request of type GetVideoSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvideosettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvideosettings) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSVideoSettings ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSVideoSettings [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSVignettingShader.md b/docs/Get-OBSVignettingShader.md new file mode 100644 index 000000000..b8d467837 --- /dev/null +++ b/docs/Get-OBSVignettingShader.md @@ -0,0 +1,95 @@ +Get-OBSVignettingShader +----------------------- + +### Synopsis +Get-OBSVignettingShader [[-InnerRadius] ] [[-OuterRadius] ] [[-Opacity] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InnerRadius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **OuterRadius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVignettingShader [[-InnerRadius] ] [[-OuterRadius] ] [[-Opacity] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSVirtualCamStatus.md b/docs/Get-OBSVirtualCamStatus.md index 7bb3c7090..f253ed2e3 100644 --- a/docs/Get-OBSVirtualCamStatus.md +++ b/docs/Get-OBSVirtualCamStatus.md @@ -1,87 +1,51 @@ Get-OBSVirtualCamStatus ----------------------- - - - ### Synopsis Get-OBSVirtualCamStatus : GetVirtualCamStatus - - --- - ### Description Gets the status of the virtualcam output. - Get-OBSVirtualCamStatus calls the OBS WebSocket with a request of type GetVirtualCamStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvirtualcamstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvirtualcamstatus) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSVirtualCamStatus ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSVirtualCamStatus [-PassThru] [-NoResponse] [] diff --git a/docs/Get-OBSVoronoiPixelationShader.md b/docs/Get-OBSVoronoiPixelationShader.md new file mode 100644 index 000000000..dcfc495cd --- /dev/null +++ b/docs/Get-OBSVoronoiPixelationShader.md @@ -0,0 +1,83 @@ +Get-OBSVoronoiPixelationShader +------------------------------ + +### Synopsis +Get-OBSVoronoiPixelationShader [[-PixH] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Alternative] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Alternative** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixH** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVoronoiPixelationShader [[-PixH] ] [-Alternative ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSWaveformSource.md b/docs/Get-OBSWaveformSource.md new file mode 100644 index 000000000..d042d0718 --- /dev/null +++ b/docs/Get-OBSWaveformSource.md @@ -0,0 +1,290 @@ +Set-OBSWaveformSource +--------------------- + +### Synopsis +OBS Waveform Source + +--- + +### Description + +Gets, Sets, or Adds a waveform source in OBS. +Waveform sources require the [Waveform Plugin](https://obsproject.com/forum/resources/waveform.1423/) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Add-OBSWaveformSource -Name "SpeakerWaveform" +``` + +--- + +### Parameters +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |1 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **AudioSource** +The audio source for the waveform. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **DisplayMode** +The display mode for the waveform. +Valid Values: + +* curve +* bars +* stepped_bars +* level_meter +* stepped_level_meter + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| + +#### **RenderMode** +The render mode for the waveform. +Valid Values: + +* line +* solid +* gradient + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **WindowMode** +The windowing mode for the waveform. +This is the mathematical function used to determine the current "window" of audio data. +Valid Values: + +* hann +* hamming +* blackman +* blackman_harris +* none + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **Color** +The color used for the waveform. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |7 |true (ByPropertyName)| + +#### **CrestColor** +The crest color used for the waveform. +This will be ignored if the render mode is not "gradient". + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |8 |true (ByPropertyName)| + +#### **ChannelMode** +The channel mode for the waveform. +This can be either mono or stereo. +Valid Values: + +* mono +* stereo + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |9 |true (ByPropertyName)| + +#### **ChannelSpacing** +The number of pixels between each channel in stereo mode + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |10 |true (ByPropertyName)| + +#### **RadialLayout** +If set, will use a radial layout for the waveform +Radial layouts will ignore the desired height of the source and instead create a square. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **InvertRadialDirection** +If set, will invert the direction for a radial waveform. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoramlizeVolume** +If set, will normalize the volume displayed in the waveform. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **AutoFftSize** +If set, will automatically declare an FFTSize + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FastPeak** +If set, will attempt to make audio peaks render faster. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **BarWidth** +The width of the waveform bar. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |11 |true (ByPropertyName)| + +#### **BarGap** +The gap between waveform bars. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |12 |true (ByPropertyName)| + +#### **StepWidth** +The width of waveform bar step. +This is only valid when -DisplayMode is 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |13 |true (ByPropertyName)| + +#### **StepGap** +The gap between waveform bar steps. +This is only valid when -DisplayMode is 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |14 |true (ByPropertyName)| + +#### **LowCutoff** +The low-frequency cutoff of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |15 |true (ByPropertyName)| + +#### **HighCutoff** +The high-frequency cutoff of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |16 |true (ByPropertyName)| + +#### **Floor** +The floor of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |17 |true (ByPropertyName)| + +#### **Ceiling** +The ceiling of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |18 |true (ByPropertyName)| + +#### **Slope** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |19 |true (ByPropertyName)| + +#### **RollOffOctave** + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------| +|`[Double]`|false |20 |true (ByPropertyName)|RollOffOctaves| + +#### **RollOffRate** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |21 |true (ByPropertyName)| + +#### **GradientRatio** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |22 |true (ByPropertyName)| + +#### **Deadzone** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |23 |true (ByPropertyName)| + +#### **TemporalSmoothing** + +Valid Values: + +* none +* exp_moving_avg + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |24 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |25 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |26 |true (ByPropertyName)|InputName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSWaveformSource [[-Width] ] [[-Height] ] [[-AudioSource] ] [[-DisplayMode] ] [[-RenderMode] ] [[-WindowMode] ] [[-Color] ] [[-CrestColor] ] [[-ChannelMode] ] [[-ChannelSpacing] ] [-RadialLayout] [-InvertRadialDirection] [-NoramlizeVolume] [-AutoFftSize] [-FastPeak] [[-BarWidth] ] [[-BarGap] ] [[-StepWidth] ] [[-StepGap] ] [[-LowCutoff] ] [[-HighCutoff] ] [[-Floor] ] [[-Ceiling] ] [[-Slope] ] [[-RollOffOctave] ] [[-RollOffRate] ] [[-GradientRatio] ] [[-Deadzone] ] [[-TemporalSmoothing] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Get-OBSWindowCaptureSource.md b/docs/Get-OBSWindowCaptureSource.md new file mode 100644 index 000000000..21e6cbd2a --- /dev/null +++ b/docs/Get-OBSWindowCaptureSource.md @@ -0,0 +1,105 @@ +Set-OBSWindowSource +------------------- + +### Synopsis +Adds or sets a window capture source + +--- + +### Description + +Adds or sets a windows capture source in OBS. This captures the contents of a window. + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow +``` + +--- + +### Parameters +#### **WindowTitle** +The monitor number. +This the number of the monitor you would like to capture. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------------------------------------------------------| +|`[String]`|false |1 |true (ByPropertyName)|ItemValue
ItemName
WindowName
MainWindowTitle| + +#### **CaptureMethod** +The number of the capture method. By default, automatic (0). + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **CapturePriority** +The capture priority. +Valid Values: + +* ExactMatch +* SameType +* SameExecutable + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **CaptureCursor** +If set, will capture the cursor. +This will be set by default. +If explicitly set to false, the cursor will not be captured. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ClientArea** +If set, will capture the client area. +This will be set by default. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ForceSDR** +If set, will force SDR. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |4 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, "Display $($Monitor + 1)" will be the input source name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |5 |true (ByPropertyName)|InputName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSWindowSource [[-WindowTitle] ] [[-CaptureMethod] ] [[-CapturePriority] ] [-CaptureCursor] [-ClientArea] [-ForceSDR] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Get-OBSWindowSource.md b/docs/Get-OBSWindowSource.md new file mode 100644 index 000000000..21e6cbd2a --- /dev/null +++ b/docs/Get-OBSWindowSource.md @@ -0,0 +1,105 @@ +Set-OBSWindowSource +------------------- + +### Synopsis +Adds or sets a window capture source + +--- + +### Description + +Adds or sets a windows capture source in OBS. This captures the contents of a window. + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow +``` + +--- + +### Parameters +#### **WindowTitle** +The monitor number. +This the number of the monitor you would like to capture. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------------------------------------------------------| +|`[String]`|false |1 |true (ByPropertyName)|ItemValue
ItemName
WindowName
MainWindowTitle| + +#### **CaptureMethod** +The number of the capture method. By default, automatic (0). + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **CapturePriority** +The capture priority. +Valid Values: + +* ExactMatch +* SameType +* SameExecutable + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **CaptureCursor** +If set, will capture the cursor. +This will be set by default. +If explicitly set to false, the cursor will not be captured. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ClientArea** +If set, will capture the client area. +This will be set by default. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ForceSDR** +If set, will force SDR. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |4 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, "Display $($Monitor + 1)" will be the input source name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |5 |true (ByPropertyName)|InputName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSWindowSource [[-WindowTitle] ] [[-CaptureMethod] ] [[-CapturePriority] ] [-CaptureCursor] [-ClientArea] [-ForceSDR] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Get-OBSZigZagShader.md b/docs/Get-OBSZigZagShader.md new file mode 100644 index 000000000..236ef9fe4 --- /dev/null +++ b/docs/Get-OBSZigZagShader.md @@ -0,0 +1,125 @@ +Get-OBSZigZagShader +------------------- + +### Synopsis +Get-OBSZigZagShader [[-Radius] ] [[-Angle] ] [[-Period] ] [[-Amplitude] ] [[-CenterX] ] [[-CenterY] ] [[-Phase] ] [[-Animate] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Amplitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Angle** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Period** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Phase** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZigZagShader [[-Radius] ] [[-Angle] ] [[-Period] ] [[-Amplitude] ] [[-CenterX] ] [[-CenterY] ] [[-Phase] ] [[-Animate] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSZoomBlurShader.md b/docs/Get-OBSZoomBlurShader.md new file mode 100644 index 000000000..5a397192f --- /dev/null +++ b/docs/Get-OBSZoomBlurShader.md @@ -0,0 +1,107 @@ +Get-OBSZoomBlurShader +--------------------- + +### Synopsis +Get-OBSZoomBlurShader [[-Samples] ] [[-Magnitude] ] [[-SpeedPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Magnitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Samples** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZoomBlurShader [[-Samples] ] [[-Magnitude] ] [[-SpeedPercent] ] [-Ease ] [-Glitch ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSZoomShader.md b/docs/Get-OBSZoomShader.md new file mode 100644 index 000000000..5124926cb --- /dev/null +++ b/docs/Get-OBSZoomShader.md @@ -0,0 +1,89 @@ +Get-OBSZoomShader +----------------- + +### Synopsis +Get-OBSZoomShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZoomShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Get-OBSZoomXYShader.md b/docs/Get-OBSZoomXYShader.md new file mode 100644 index 000000000..0983ab4c2 --- /dev/null +++ b/docs/Get-OBSZoomXYShader.md @@ -0,0 +1,95 @@ +Get-OBSZoomXYShader +------------------- + +### Synopsis +Get-OBSZoomXYShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-XPower] ] [[-YPower] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **XPower** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |x_power| + +#### **YPower** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |y_power| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZoomXYShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-XPower] ] [[-YPower] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Hide-OBS.md b/docs/Hide-OBS.md index 8e49a5a16..05bc5277a 100644 --- a/docs/Hide-OBS.md +++ b/docs/Hide-OBS.md @@ -1,78 +1,46 @@ Hide-OBS -------- - - - ### Synopsis Hide OBS - - --- - ### Description Hides items in OBS - - --- - ### Related Links * [Set-OBSSceneItemEnabled](Set-OBSSceneItemEnabled.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Hide-OBS -SourceName "foo" ``` - - --- - ### Parameters #### **ItemName** - The name of the item we want to Hide - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|------------------------| |`[Object]`|true |1 |true (ByPropertyName)|SourceName
InputName| - - #### **SceneName** - The name of the scene. If not provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |2 |true (ByPropertyName)| - - #### **WhatIf** -WhatIf is an automatic variable that is created when a command has ```[CmdletBinding(SupportsShouldProcess)]```. -WhatIf is used to see what would happen, or return operations without executing them @@ -82,14 +50,10 @@ The name of the scene. If not provided, the current program scene will be used. If you pass ```-Confirm:$false``` you will not be prompted. - If the command sets a ```[ConfirmImpact("Medium")]``` which is lower than ```$confirmImpactPreference```, you will not be prompted unless -Confirm is passed. - - --- - ### Syntax ```PowerShell Hide-OBS [-ItemName] [[-SceneName] ] [-WhatIf] [-Confirm] [] diff --git a/docs/Import-OBSEffect.md b/docs/Import-OBSEffect.md index df15f44ae..511d41f85 100644 --- a/docs/Import-OBSEffect.md +++ b/docs/Import-OBSEffect.md @@ -1,69 +1,42 @@ Import-OBSEffect ---------------- - - - ### Synopsis Imports Effects - - --- - ### Description Imports obs-powershell effects - - --- - ### Related Links * [Get-OBSEffect](Get-OBSEffect.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Import-OBSEffect -Path (Get-Module obs-powershell) ``` - - --- - ### Parameters #### **From** - The source location of the effect. This can be a string, file, directory, command, or module. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|------------------------------|----------------------------------------------------------------------------------------| |`[Object]`|true |1 |true (ByValue, ByPropertyName)|FromPath
FromModule
FromScript
FromFunction
FullName
Path
Source| - - - - --- - ### Syntax ```PowerShell Import-OBSEffect [-From] [] diff --git a/docs/OBS.PowerShell.get_RandomExample.md b/docs/OBS.PowerShell.get_RandomExample.md deleted file mode 100644 index 22d9b80d4..000000000 --- a/docs/OBS.PowerShell.get_RandomExample.md +++ /dev/null @@ -1,18 +0,0 @@ -OBS.PowerShell.get_RandomExample() ----------------------------------- - - - - -### Synopsis - - - - ---- - - -### Description - - ---- diff --git a/docs/OBS/Beat/README.md b/docs/OBS/Beat/README.md new file mode 100644 index 000000000..1980c6dcc --- /dev/null +++ b/docs/OBS/Beat/README.md @@ -0,0 +1,24 @@ +## OBS.Beat + + +### Script Properties + + +* [get_Angle](get_Angle.md) +* [get_BeatCount](get_BeatCount.md) +* [get_BeatStart](get_BeatStart.md) +* [set_BeatStart](set_BeatStart.md) +* [get_BPM](get_BPM.md) +* [set_BPM](set_BPM.md) +* [get_Cosine](get_Cosine.md) +* [get_Duration](get_Duration.md) +* [set_Duration](set_Duration.md) +* [get_Sine](get_Sine.md) +* [get_Timer](get_Timer.md) +* [set_Timer](set_Timer.md) + + +### Script Methods + + +* [TapBPM()](TapBPM.md) diff --git a/docs/OBS/Beat/TapBPM.md b/docs/OBS/Beat/TapBPM.md new file mode 100644 index 000000000..22d934f32 --- /dev/null +++ b/docs/OBS/Beat/TapBPM.md @@ -0,0 +1,25 @@ +OBS.Beat.TapBPM() +----------------- + +### Synopsis +Tap BPM + +--- + +### Description + +Tap out a BPM by pressing ENTER on N beats. + +The BPM will be set to the average time between taps, and the beat will be started. + +--- + +### Parameters +#### **TapCount** +The number of taps. + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Int32]`|false |1 |false | + +--- diff --git a/docs/OBS/Beat/get_Angle.md b/docs/OBS/Beat/get_Angle.md new file mode 100644 index 000000000..29b93d9e1 --- /dev/null +++ b/docs/OBS/Beat/get_Angle.md @@ -0,0 +1,15 @@ +get_Angle +--------- + +### Synopsis +Gets the Beat Angle + +--- + +### Description + +Gets the Angle of the Beat. + +If we imagine that as the beat is moving, we are rotating around a circle, this should be the angle at any given moment. + +--- diff --git a/docs/OBS/Beat/get_BPM.md b/docs/OBS/Beat/get_BPM.md new file mode 100644 index 000000000..4d4a38bd1 --- /dev/null +++ b/docs/OBS/Beat/get_BPM.md @@ -0,0 +1,15 @@ +get_BPM +------- + +### Synopsis +Gets the BPM + +--- + +### Description + +Gets the Beats Per Minute (BPM) of obs-powershell. + +This can be used to time effects to a beat. + +--- diff --git a/docs/OBS/Beat/get_BeatCount.md b/docs/OBS/Beat/get_BeatCount.md new file mode 100644 index 000000000..e950a85e3 --- /dev/null +++ b/docs/OBS/Beat/get_BeatCount.md @@ -0,0 +1,22 @@ +get_BeatCount +------------- + +### Synopsis +Gets the Beat Count + +--- + +### Description + +Gets the number of beats since the beat started. + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +$obs.Beat.BeatCount +``` + +--- diff --git a/docs/OBS/Beat/get_BeatStart.md b/docs/OBS/Beat/get_BeatStart.md new file mode 100644 index 000000000..51f793ed4 --- /dev/null +++ b/docs/OBS/Beat/get_BeatStart.md @@ -0,0 +1,13 @@ +get_BeatStart +------------- + +### Synopsis +Gets the Beat Start Time + +--- + +### Description + +Gets the time when the beat started. + +--- diff --git a/docs/OBS/Beat/get_Cosine.md b/docs/OBS/Beat/get_Cosine.md new file mode 100644 index 000000000..c9253e74f --- /dev/null +++ b/docs/OBS/Beat/get_Cosine.md @@ -0,0 +1,15 @@ +get_Cosine +---------- + +### Synopsis +Gets the Beat Cosine + +--- + +### Description + +Gets the Cosine of the BeatCount. + +Since this starts at 1, this would be at its highest value during the top of the beat. + +--- diff --git a/docs/OBS/Beat/get_Duration.md b/docs/OBS/Beat/get_Duration.md new file mode 100644 index 000000000..c7282e209 --- /dev/null +++ b/docs/OBS/Beat/get_Duration.md @@ -0,0 +1,18 @@ +get_Duration +------------ + +### Synopsis +Gets the Duration + +--- + +### Description + +Gets the Duration of a Beat + +--- + +### Outputs +* [TimeSpan] + +--- diff --git a/docs/OBS/Beat/get_Sine.md b/docs/OBS/Beat/get_Sine.md new file mode 100644 index 000000000..30978ce56 --- /dev/null +++ b/docs/OBS/Beat/get_Sine.md @@ -0,0 +1,15 @@ +get_Sine +-------- + +### Synopsis +Gets the Beat Sine + +--- + +### Description + +Gets the Sine of the BeatCount. + +Since this starts at 0, this would be at its highest value during the middle of the beat. + +--- diff --git a/docs/OBS/Beat/get_Timer.md b/docs/OBS/Beat/get_Timer.md new file mode 100644 index 000000000..f1fe91858 --- /dev/null +++ b/docs/OBS/Beat/get_Timer.md @@ -0,0 +1,15 @@ +get_Timer +--------- + +### Synopsis +Gets the Beat Timer + +--- + +### Description + +Gets the Timer object that should elapse every beat. + +This can be used to Register-ObjectEvent to run on a beat. + +--- diff --git a/docs/OBS/Beat/set_BPM.md b/docs/OBS/Beat/set_BPM.md new file mode 100644 index 000000000..196b20787 --- /dev/null +++ b/docs/OBS/Beat/set_BPM.md @@ -0,0 +1,25 @@ +set_BPM +------- + +### Synopsis +Sets the BPM + +--- + +### Description + +Set the Beats Per Minute (BPM) of obs-powershell. + +This can be used to time effects to a beat. + +--- + +### Parameters +#### **BPM** +The new BPM + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Double]`|false |1 |false | + +--- diff --git a/docs/OBS/Beat/set_BeatStart.md b/docs/OBS/Beat/set_BeatStart.md new file mode 100644 index 000000000..fd76055e3 --- /dev/null +++ b/docs/OBS/Beat/set_BeatStart.md @@ -0,0 +1,23 @@ +set_BeatStart +------------- + +### Synopsis +Sets the Beat Start Time + +--- + +### Description + +Sets the time when the beat started. + +--- + +### Parameters +#### **BeatStartTime** +The Beat Start Time + +|Type |Required|Position|PipelineInput| +|------------|--------|--------|-------------| +|`[DateTime]`|false |1 |false | + +--- diff --git a/docs/OBS/Beat/set_Duration.md b/docs/OBS/Beat/set_Duration.md new file mode 100644 index 000000000..e6d1664b2 --- /dev/null +++ b/docs/OBS/Beat/set_Duration.md @@ -0,0 +1,28 @@ +set_Duration +------------ + +### Synopsis +Gets the Duration + +--- + +### Description + +Gets the Duration of a Beat + +--- + +### Parameters +#### **Duration** +The new duration. + +|Type |Required|Position|PipelineInput| +|------------|--------|--------|-------------| +|`[TimeSpan]`|false |1 |false | + +--- + +### Outputs +* [TimeSpan] + +--- diff --git a/docs/OBS/Beat/set_Timer.md b/docs/OBS/Beat/set_Timer.md new file mode 100644 index 000000000..6a482ff0b --- /dev/null +++ b/docs/OBS/Beat/set_Timer.md @@ -0,0 +1,30 @@ +set_Timer +--------- + +### Synopsis +Sets the Beat Timer + +--- + +### Description + +Sets the Beat Timer. + +If no timer exists, one is created. Otherwise, the interval is updated. + +--- + +### Parameters +#### **Interval** +The new timer interval. + +|Type |Required|Position|PipelineInput| +|------------|--------|--------|-------------| +|`[TimeSpan]`|false |1 |false | + +--- + +### Outputs +* [TimeSpan] + +--- diff --git a/docs/OBS/Filter/Disable.md b/docs/OBS/Filter/Disable.md new file mode 100644 index 000000000..55dce7417 --- /dev/null +++ b/docs/OBS/Filter/Disable.md @@ -0,0 +1,28 @@ +OBS.Filter.Disable() +-------------------- + +### Synopsis +Disables a filter + +--- + +### Description + +Disables an OBS filter. + +--- + +### Related Links +* Set-OBSSourceFilterEnabled + +--- + +### Parameters +#### **PassThru** +If set, will return the request that would enable a filter. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Filter/Enable.md b/docs/OBS/Filter/Enable.md new file mode 100644 index 000000000..51f304ba8 --- /dev/null +++ b/docs/OBS/Filter/Enable.md @@ -0,0 +1,28 @@ +OBS.Filter.Enable() +------------------- + +### Synopsis +Enables a filter + +--- + +### Description + +Enables an OBS filter. + +--- + +### Related Links +* Set-OBSSourceFilterEnabled + +--- + +### Parameters +#### **PassThru** +If set, will return the request that would enable a filter. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Filter/README.md b/docs/OBS/Filter/README.md new file mode 100644 index 000000000..a671b528d --- /dev/null +++ b/docs/OBS/Filter/README.md @@ -0,0 +1,10 @@ +## OBS.Filter + + +### Script Methods + + +* [Disable()](Disable.md) +* [Enable()](Enable.md) +* [Remove()](Remove.md) +* [Set()](Set.md) diff --git a/docs/OBS/Filter/Remove.md b/docs/OBS/Filter/Remove.md new file mode 100644 index 000000000..64406534c --- /dev/null +++ b/docs/OBS/Filter/Remove.md @@ -0,0 +1,20 @@ +OBS.Filter.Remove() +------------------- + +### Synopsis +Removes a filter + +--- + +### Description + +Removes a filter from an OBS source. + +--- + +### Related Links +* Remove-OBSSourceFilter + +* Get-OBSSourceFilterList + +--- diff --git a/docs/OBS/Filter/Set.md b/docs/OBS/Filter/Set.md new file mode 100644 index 000000000..a31d755c8 --- /dev/null +++ b/docs/OBS/Filter/Set.md @@ -0,0 +1,30 @@ +OBS.Filter.Set() +---------------- + +### Synopsis +Sets a filter + +--- + +### Description + +Changes a filter's settings. + +--- + +### Parameters +#### **Settings** +The settings that can be changed. + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[Object]`|false |1 |false |Setting| + +#### **PassThru** +Return the message that would be sent to OBS, rather than changing the filter settings. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/GetInputList/Response/DisableAllFilter.md b/docs/OBS/GetInputList/Response/DisableAllFilter.md new file mode 100644 index 000000000..0dbd4bf96 --- /dev/null +++ b/docs/OBS/GetInputList/Response/DisableAllFilter.md @@ -0,0 +1,23 @@ +OBS.GetInputList.Response.DisableAllFilter() +-------------------------------------------- + +### Synopsis +Quickly disables all filters + +--- + +### Description + +Quickly disables all filters, except for a list of provided names + +--- + +### Parameters +#### **ExceptFilterName** +A list of filter names to leave disabled. + +|Type |Required|Position|PipelineInput| +|------------|--------|--------|-------------| +|`[String[]]`|false |1 |false | + +--- diff --git a/docs/OBS/GetInputList/Response/EnableAllFilter.md b/docs/OBS/GetInputList/Response/EnableAllFilter.md new file mode 100644 index 000000000..5441a24ea --- /dev/null +++ b/docs/OBS/GetInputList/Response/EnableAllFilter.md @@ -0,0 +1,23 @@ +OBS.GetInputList.Response.EnableAllFilter() +------------------------------------------- + +### Synopsis +Quickly enables all filters + +--- + +### Description + +Quickly enables all filters, except for a list of provided names + +--- + +### Parameters +#### **ExceptFilterName** +A list of filter names to leave disabled. + +|Type |Required|Position|PipelineInput| +|------------|--------|--------|-------------| +|`[String[]]`|false |1 |false | + +--- diff --git a/docs/OBS.GetInputList.Response.Mute.md b/docs/OBS/GetInputList/Response/Mute.md similarity index 94% rename from docs/OBS.GetInputList.Response.Mute.md rename to docs/OBS/GetInputList/Response/Mute.md index 382f26db2..bcf9b5178 100644 --- a/docs/OBS.GetInputList.Response.Mute.md +++ b/docs/OBS/GetInputList/Response/Mute.md @@ -1,52 +1,28 @@ OBS.GetInputList.Response.Mute() -------------------------------- - - - ### Synopsis Mutes an input - - --- - ### Description Mutes the audio of an OBS Input - - --- - ### Related Links * Set-OBSInputMute - - - - --- - ### Parameters #### **PassThru** - If set, returns the message used to mute - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetInputList.Response.Next.md b/docs/OBS/GetInputList/Response/Next.md similarity index 94% rename from docs/OBS.GetInputList.Response.Next.md rename to docs/OBS/GetInputList/Response/Next.md index d18d09ba4..5858edfc4 100644 --- a/docs/OBS.GetInputList.Response.Next.md +++ b/docs/OBS/GetInputList/Response/Next.md @@ -1,52 +1,28 @@ OBS.GetInputList.Response.Next() -------------------------------- - - - ### Synopsis Nexts an input - - --- - ### Description Sends a "Next" message to an input. - - --- - ### Related Links * Send-OBSTriggerMediaInputAction - - - - --- - ### Parameters #### **PassThru** - If set, will return the message instead of sending it now. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetInputList.Response.Pause.md b/docs/OBS/GetInputList/Response/Pause.md similarity index 94% rename from docs/OBS.GetInputList.Response.Pause.md rename to docs/OBS/GetInputList/Response/Pause.md index 754101fa4..34778cb63 100644 --- a/docs/OBS.GetInputList.Response.Pause.md +++ b/docs/OBS/GetInputList/Response/Pause.md @@ -1,52 +1,28 @@ OBS.GetInputList.Response.Pause() --------------------------------- - - - ### Synopsis Pauses an input - - --- - ### Description Sends a "Pause" message to an input. - - --- - ### Related Links * Send-OBSTriggerMediaInputAction - - - - --- - ### Parameters #### **PassThru** - If set, will return the message instead of sending it now. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetInputList.Response.Play.md b/docs/OBS/GetInputList/Response/Play.md similarity index 94% rename from docs/OBS.GetInputList.Response.Play.md rename to docs/OBS/GetInputList/Response/Play.md index 80bf2ef07..c0000e8ac 100644 --- a/docs/OBS.GetInputList.Response.Play.md +++ b/docs/OBS/GetInputList/Response/Play.md @@ -1,52 +1,28 @@ OBS.GetInputList.Response.Play() -------------------------------- - - - ### Synopsis Plays an input - - --- - ### Description Sends a "Play" message to an input. - - --- - ### Related Links * Send-OBSTriggerMediaInputAction - - - - --- - ### Parameters #### **PassThru** - If set, will return the message instead of sending it now. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetInputList.Response.Previous.md b/docs/OBS/GetInputList/Response/Previous.md similarity index 95% rename from docs/OBS.GetInputList.Response.Previous.md rename to docs/OBS/GetInputList/Response/Previous.md index 99f080deb..8b1e29a84 100644 --- a/docs/OBS.GetInputList.Response.Previous.md +++ b/docs/OBS/GetInputList/Response/Previous.md @@ -1,52 +1,28 @@ OBS.GetInputList.Response.Previous() ------------------------------------ - - - ### Synopsis Previouss an input - - --- - ### Description Sends a "Previous" message to an input. - - --- - ### Related Links * Send-OBSTriggerMediaInputAction - - - - --- - ### Parameters #### **PassThru** - If set, will return the message instead of sending it now. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS/GetInputList/Response/README.md b/docs/OBS/GetInputList/Response/README.md new file mode 100644 index 000000000..aeff5005f --- /dev/null +++ b/docs/OBS/GetInputList/Response/README.md @@ -0,0 +1,31 @@ +## OBS.GetInputList.Response + + +### Script Properties + + +* [get_CurrentTime](get_CurrentTime.md) +* [set_CurrentTime](set_CurrentTime.md) +* [get_Filters](get_Filters.md) +* [get_SceneItem](get_SceneItem.md) +* [get_Settings](get_Settings.md) +* [set_Settings](set_Settings.md) +* [get_Status](get_Status.md) +* [get_Volume](get_Volume.md) +* [set_Volume](set_Volume.md) + + +### Script Methods + + +* [DisableAllFilter()](DisableAllFilter.md) +* [EnableAllFilter()](EnableAllFilter.md) +* [Mute()](Mute.md) +* [Next()](Next.md) +* [Pause()](Pause.md) +* [Play()](Play.md) +* [Previous()](Previous.md) +* [Remove()](Remove.md) +* [Restart()](Restart.md) +* [Stop()](Stop.md) +* [Unmute()](Unmute.md) diff --git a/docs/OBS.GetInputList.Response.Remove.md b/docs/OBS/GetInputList/Response/Remove.md similarity index 93% rename from docs/OBS.GetInputList.Response.Remove.md rename to docs/OBS/GetInputList/Response/Remove.md index 97b263a2e..47dc5d1ef 100644 --- a/docs/OBS.GetInputList.Response.Remove.md +++ b/docs/OBS/GetInputList/Response/Remove.md @@ -1,31 +1,18 @@ OBS.GetInputList.Response.Remove() ---------------------------------- - - - ### Synopsis Removes an input - - --- - ### Description Removes an OBS Input - - --- - ### Related Links * Remove-OBSInput - - - - --- diff --git a/docs/OBS.GetInputList.Response.Restart.md b/docs/OBS/GetInputList/Response/Restart.md similarity index 95% rename from docs/OBS.GetInputList.Response.Restart.md rename to docs/OBS/GetInputList/Response/Restart.md index 0b81db2ba..9dba28199 100644 --- a/docs/OBS.GetInputList.Response.Restart.md +++ b/docs/OBS/GetInputList/Response/Restart.md @@ -1,52 +1,28 @@ OBS.GetInputList.Response.Restart() ----------------------------------- - - - ### Synopsis Restarts an input - - --- - ### Description Sends a "Restart" message to an input. - - --- - ### Related Links * Send-OBSTriggerMediaInputAction - - - - --- - ### Parameters #### **PassThru** - If set, will return the message instead of sending it now. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetInputList.Response.Stop.md b/docs/OBS/GetInputList/Response/Stop.md similarity index 94% rename from docs/OBS.GetInputList.Response.Stop.md rename to docs/OBS/GetInputList/Response/Stop.md index 6ed40c21d..e424f544f 100644 --- a/docs/OBS.GetInputList.Response.Stop.md +++ b/docs/OBS/GetInputList/Response/Stop.md @@ -1,52 +1,28 @@ OBS.GetInputList.Response.Stop() -------------------------------- - - - ### Synopsis Stops an input - - --- - ### Description Sends a "Stop" message to an input. - - --- - ### Related Links * Send-OBSTriggerMediaInputAction - - - - --- - ### Parameters #### **PassThru** - If set, will return the message instead of sending it now. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetInputList.Response.Unmute.md b/docs/OBS/GetInputList/Response/Unmute.md similarity index 94% rename from docs/OBS.GetInputList.Response.Unmute.md rename to docs/OBS/GetInputList/Response/Unmute.md index 528f88155..0542d779d 100644 --- a/docs/OBS.GetInputList.Response.Unmute.md +++ b/docs/OBS/GetInputList/Response/Unmute.md @@ -1,52 +1,28 @@ OBS.GetInputList.Response.Unmute() ---------------------------------- - - - ### Synopsis Mutes an input - - --- - ### Description Mutes the audio of an OBS Input - - --- - ### Related Links * Set-OBSInputMute - - - - --- - ### Parameters #### **PassThru** - If set, returns the message used to unmute. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetInputList.Response.get_CurrentTime.md b/docs/OBS/GetInputList/Response/get_CurrentTime.md similarity index 62% rename from docs/OBS.GetInputList.Response.get_CurrentTime.md rename to docs/OBS/GetInputList/Response/get_CurrentTime.md index a7bf08a04..88f5f8df1 100644 --- a/docs/OBS.GetInputList.Response.get_CurrentTime.md +++ b/docs/OBS/GetInputList/Response/get_CurrentTime.md @@ -1,31 +1,18 @@ -OBS.GetInputList.Response.get_CurrentTime() -------------------------------------------- - - - +get_CurrentTime +--------------- ### Synopsis Gets an input's current time - - --- - ### Description Gets an input's current time, if applicable - - --- - ### Related Links * Get-OBSMediaInputStatus - - - - --- diff --git a/docs/OBS.GetInputList.Response.get_Filters.md b/docs/OBS/GetInputList/Response/get_Filters.md similarity index 78% rename from docs/OBS.GetInputList.Response.get_Filters.md rename to docs/OBS/GetInputList/Response/get_Filters.md index 0aec20559..3ed2e0328 100644 --- a/docs/OBS.GetInputList.Response.get_Filters.md +++ b/docs/OBS/GetInputList/Response/get_Filters.md @@ -1,44 +1,29 @@ -OBS.GetInputList.Response.get_Filters() ---------------------------------------- - - - +get_Filters +----------- ### Synopsis Gets an input's filters - - --- - ### Description Gets the filters related to an OBS input. - - --- - ### Related Links * Get-OBSSourceFilterList - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg $obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 $obsPowerShellIcon.Input.Filters ``` - - --- diff --git a/docs/OBS/GetInputList/Response/get_SceneItem.md b/docs/OBS/GetInputList/Response/get_SceneItem.md new file mode 100644 index 000000000..0e1270053 --- /dev/null +++ b/docs/OBS/GetInputList/Response/get_SceneItem.md @@ -0,0 +1,13 @@ +get_SceneItem +------------- + +### Synopsis +Gets an input's scene items + +--- + +### Description + +Gets the scene items associated with an input. + +--- diff --git a/docs/OBS.GetInputList.Response.get_Settings.md b/docs/OBS/GetInputList/Response/get_Settings.md similarity index 75% rename from docs/OBS.GetInputList.Response.get_Settings.md rename to docs/OBS/GetInputList/Response/get_Settings.md index cdd920e5a..fe7d97b15 100644 --- a/docs/OBS.GetInputList.Response.get_Settings.md +++ b/docs/OBS/GetInputList/Response/get_Settings.md @@ -1,43 +1,28 @@ -OBS.GetInputList.Response.get_Settings() ----------------------------------------- - - - +get_Settings +------------ ### Synopsis Gets an input's settings - - --- - ### Description Gets the current settings for an OBS input. - - --- - ### Related Links * Get-OBSInputSettings - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg $obsPowerShellIcon.Input.Settings ``` - - --- diff --git a/docs/OBS.GetInputList.Response.get_Status.md b/docs/OBS/GetInputList/Response/get_Status.md similarity index 62% rename from docs/OBS.GetInputList.Response.get_Status.md rename to docs/OBS/GetInputList/Response/get_Status.md index 296da46ff..e0f428717 100644 --- a/docs/OBS.GetInputList.Response.get_Status.md +++ b/docs/OBS/GetInputList/Response/get_Status.md @@ -1,31 +1,18 @@ -OBS.GetInputList.Response.get_Status() --------------------------------------- - - - +get_Status +---------- ### Synopsis Gets an input's status - - --- - ### Description Gets the media status of an OBS input. - - --- - ### Related Links * Get-OBSMediaInputStatus - - - - --- diff --git a/docs/OBS.GetInputList.Response.get_Volume.md b/docs/OBS/GetInputList/Response/get_Volume.md similarity index 61% rename from docs/OBS.GetInputList.Response.get_Volume.md rename to docs/OBS/GetInputList/Response/get_Volume.md index f148a8163..1e42fbf37 100644 --- a/docs/OBS.GetInputList.Response.get_Volume.md +++ b/docs/OBS/GetInputList/Response/get_Volume.md @@ -1,31 +1,18 @@ -OBS.GetInputList.Response.get_Volume() --------------------------------------- - - - +get_Volume +---------- ### Synopsis Gets an input's volume - - --- - ### Description Gets an OBS input's volume mulitplier - - --- - ### Related Links * Get-OBSInputVolume - - - - --- diff --git a/docs/OBS.GetInputList.Response.set_CurrentTime.md b/docs/OBS/GetInputList/Response/set_CurrentTime.md similarity index 60% rename from docs/OBS.GetInputList.Response.set_CurrentTime.md rename to docs/OBS/GetInputList/Response/set_CurrentTime.md index dd0f195bc..067d623a3 100644 --- a/docs/OBS.GetInputList.Response.set_CurrentTime.md +++ b/docs/OBS/GetInputList/Response/set_CurrentTime.md @@ -1,31 +1,18 @@ -OBS.GetInputList.Response.set_CurrentTime() -------------------------------------------- - - - +set_CurrentTime +--------------- ### Synopsis Sets an input's current time - - --- - ### Description Sets an input's current time. - - --- - ### Related Links * Send-OBSMediaInputCursor - - - - --- diff --git a/docs/OBS.GetInputList.Response.set_Settings.md b/docs/OBS/GetInputList/Response/set_Settings.md similarity index 61% rename from docs/OBS.GetInputList.Response.set_Settings.md rename to docs/OBS/GetInputList/Response/set_Settings.md index f54fe882d..47b54ed62 100644 --- a/docs/OBS.GetInputList.Response.set_Settings.md +++ b/docs/OBS/GetInputList/Response/set_Settings.md @@ -1,31 +1,18 @@ -OBS.GetInputList.Response.set_Settings() ----------------------------------------- - - - +set_Settings +------------ ### Synopsis Sets an input's settings - - --- - ### Description Changes the settings for an OBS input. - - --- - ### Related Links * Set-OBSInputSettings - - - - --- diff --git a/docs/OBS.GetInputList.Response.set_Volume.md b/docs/OBS/GetInputList/Response/set_Volume.md similarity index 81% rename from docs/OBS.GetInputList.Response.set_Volume.md rename to docs/OBS/GetInputList/Response/set_Volume.md index eb6fdf9d5..c2027d683 100644 --- a/docs/OBS.GetInputList.Response.set_Volume.md +++ b/docs/OBS/GetInputList/Response/set_Volume.md @@ -1,17 +1,11 @@ -OBS.GetInputList.Response.set_Volume() --------------------------------------- - - - +set_Volume +---------- ### Synopsis Sets an input's volume - - --- - ### Description Sets an OBS input's volume mulitplier. @@ -20,33 +14,18 @@ This is normally between 0 (no sound) and 1 (normal levels). A source can be made up to 20 times the original volume. - - --- - ### Related Links * Set-OBSInputVolume - - - - --- - ### Parameters #### **Multiple** - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Double]`|false |1 |false | - - - - --- diff --git a/docs/OBS/GetSceneItemId/Response/Animate.md b/docs/OBS/GetSceneItemId/Response/Animate.md new file mode 100644 index 000000000..8529813bb --- /dev/null +++ b/docs/OBS/GetSceneItemId/Response/Animate.md @@ -0,0 +1,26 @@ +OBS.GetSceneItemId.Response.Animate() +------------------------------------- + +### Synopsis +Animates scene items + +--- + +### Description + +Animates the motion of scene items within a frame. + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +$stars = Add-OBSBrowserSource -URI https://pssvg.start-automating.com/Examples/Stars.svg +$stars.FitToScreen() +$stars.Animate(@{ + scale = 0.1 +},"00:00:01") +``` + +--- diff --git a/docs/OBS/GetSceneItemId/Response/Center.md b/docs/OBS/GetSceneItemId/Response/Center.md new file mode 100644 index 000000000..6872abedd --- /dev/null +++ b/docs/OBS/GetSceneItemId/Response/Center.md @@ -0,0 +1,24 @@ +OBS.GetSceneItemId.Response.Center() +------------------------------------ + +### Synopsis +Centers a scene item + +--- + +### Description + +Sets the scene item alignment to center + +--- + +### Notes +Also corrects the position so that the image does not only appear in a quadrant. + +If a boolean argument is passed, and it is true, then this will PassThru instead of run. +(this can be used for animations) + +If an explicit null argument is passed, then the command will not wait for an OBS response. +(this will be slightly faster) + +--- diff --git a/docs/OBS/GetSceneItemId/Response/FitToScreen.md b/docs/OBS/GetSceneItemId/Response/FitToScreen.md new file mode 100644 index 000000000..5dea3d29a --- /dev/null +++ b/docs/OBS/GetSceneItemId/Response/FitToScreen.md @@ -0,0 +1,22 @@ +OBS.GetSceneItemId.Response.FitToScreen() +----------------------------------------- + +### Synopsis +Fits an item to the screen + +--- + +### Description + +Centers an item and makes it fit to the screen. + +--- + +### Related Links +* Get-OBSVideoSettings + +* Get-OBSSceneItemTransform + +* Set-OBSSceneItemTransform + +--- diff --git a/docs/OBS/GetSceneItemId/Response/Move.md b/docs/OBS/GetSceneItemId/Response/Move.md new file mode 100644 index 000000000..82d1dbc02 --- /dev/null +++ b/docs/OBS/GetSceneItemId/Response/Move.md @@ -0,0 +1,33 @@ +OBS.GetSceneItemId.Response.Move() +---------------------------------- + +### Synopsis +Moves a scene item + +--- + +### Description + +Moves a scene item throughout the screen. + +This converts it's arguments to .Animate arguments. Any single values will be assumed to be positionX/positionY + +--- + +### Related Links +* OBS.GetSceneItemList.Response.Animate + +--- + +### Examples +Load a source + +```PowerShell +$stars = Add-OBSBrowserSource -URI https://pssvg.start-automating.com/Examples/Stars.svg +# fit it to the screen +$stars.FitToScreen() +# Move it diagonally across the screen +$stars.Move("-50%","150%", "00:00:05") +``` + +--- diff --git a/docs/OBS/GetSceneItemId/Response/README.md b/docs/OBS/GetSceneItemId/Response/README.md new file mode 100644 index 000000000..185e76903 --- /dev/null +++ b/docs/OBS/GetSceneItemId/Response/README.md @@ -0,0 +1,18 @@ +## OBS.GetSceneItemId.Response + + +### Script Properties + + +* [get_Filters](get_Filters.md) +* [get_Input](get_Input.md) + + +### Script Methods + + +* [Animate()](Animate.md) +* [Center()](Center.md) +* [FitToScreen()](FitToScreen.md) +* [Move()](Move.md) +* [Stretch()](Stretch.md) diff --git a/docs/OBS/GetSceneItemId/Response/Stretch.md b/docs/OBS/GetSceneItemId/Response/Stretch.md new file mode 100644 index 000000000..949bba383 --- /dev/null +++ b/docs/OBS/GetSceneItemId/Response/Stretch.md @@ -0,0 +1,13 @@ +OBS.GetSceneItemId.Response.Stretch() +------------------------------------- + +### Synopsis +Stretches a scene item + +--- + +### Description + +Stretches a scene item by changing it's bounds. + +--- diff --git a/docs/OBS.GetSceneItemList.Response.get_Filters.md b/docs/OBS/GetSceneItemId/Response/get_Filters.md similarity index 77% rename from docs/OBS.GetSceneItemList.Response.get_Filters.md rename to docs/OBS/GetSceneItemId/Response/get_Filters.md index 8d2f665ff..f8586f2e1 100644 --- a/docs/OBS.GetSceneItemList.Response.get_Filters.md +++ b/docs/OBS/GetSceneItemId/Response/get_Filters.md @@ -1,44 +1,29 @@ -OBS.GetSceneItemList.Response.get_Filters() -------------------------------------------- - - - +get_Filters +----------- ### Synopsis Gets a Scene Item's filters - - --- - ### Description Gets the filters related to an OBS input. - - --- - ### Related Links * Get-OBSSourceFilterList - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg $obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 $obsPowerShellIcon.Filters ``` - - --- diff --git a/docs/OBS.GetSceneItemList.Response.get_Input.md b/docs/OBS/GetSceneItemId/Response/get_Input.md similarity index 76% rename from docs/OBS.GetSceneItemList.Response.get_Input.md rename to docs/OBS/GetSceneItemId/Response/get_Input.md index 81d454e79..181446b79 100644 --- a/docs/OBS.GetSceneItemList.Response.get_Input.md +++ b/docs/OBS/GetSceneItemId/Response/get_Input.md @@ -1,35 +1,25 @@ -OBS.GetSceneItemList.Response.get_Input() ------------------------------------------ - - - +get_Input +--------- ### Synopsis Gets a Scene Item's Input - - --- - ### Description Gets the OBS Input related to the current scene item. This value is cached upon first request, as it will never change as long as the source item exists. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell $stars = Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg $stars.Input ``` - - --- diff --git a/docs/OBS.GetSceneItemList.Response.Animate.md b/docs/OBS/GetSceneItemList/Response/Animate.md similarity index 94% rename from docs/OBS.GetSceneItemList.Response.Animate.md rename to docs/OBS/GetSceneItemList/Response/Animate.md index c022ddf46..31de45189 100644 --- a/docs/OBS.GetSceneItemList.Response.Animate.md +++ b/docs/OBS/GetSceneItemList/Response/Animate.md @@ -1,28 +1,20 @@ OBS.GetSceneItemList.Response.Animate() --------------------------------------- - - - ### Synopsis Animates scene items - - --- - ### Description Animates the motion of scene items within a frame. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell $stars = Add-OBSBrowserSource -URI https://pssvg.start-automating.com/Examples/Stars.svg $stars.FitToScreen() @@ -31,6 +23,4 @@ $stars.Animate(@{ },"00:00:01") ``` - - --- diff --git a/docs/OBS/GetSceneItemList/Response/Center.md b/docs/OBS/GetSceneItemList/Response/Center.md new file mode 100644 index 000000000..f7a826ffc --- /dev/null +++ b/docs/OBS/GetSceneItemList/Response/Center.md @@ -0,0 +1,24 @@ +OBS.GetSceneItemList.Response.Center() +-------------------------------------- + +### Synopsis +Centers a scene item + +--- + +### Description + +Sets the scene item alignment to center + +--- + +### Notes +Also corrects the position so that the image does not only appear in a quadrant. + +If a boolean argument is passed, and it is true, then this will PassThru instead of run. +(this can be used for animations) + +If an explicit null argument is passed, then the command will not wait for an OBS response. +(this will be slightly faster) + +--- diff --git a/docs/OBS.GetSceneItemList.Response.FitToScreen.md b/docs/OBS/GetSceneItemList/Response/FitToScreen.md similarity index 94% rename from docs/OBS.GetSceneItemList.Response.FitToScreen.md rename to docs/OBS/GetSceneItemList/Response/FitToScreen.md index 89884ef88..c43004eb9 100644 --- a/docs/OBS.GetSceneItemList.Response.FitToScreen.md +++ b/docs/OBS/GetSceneItemList/Response/FitToScreen.md @@ -1,39 +1,22 @@ OBS.GetSceneItemList.Response.FitToScreen() ------------------------------------------- - - - ### Synopsis Fits an item to the screen - - --- - ### Description Centers an item and makes it fit to the screen. - - --- - ### Related Links * Get-OBSVideoSettings - - * Get-OBSSceneItemTransform - - * Set-OBSSceneItemTransform - - - - --- diff --git a/docs/OBS.GetSceneItemList.Response.Move.md b/docs/OBS/GetSceneItemList/Response/Move.md similarity index 92% rename from docs/OBS.GetSceneItemList.Response.Move.md rename to docs/OBS/GetSceneItemList/Response/Move.md index 7c5f8bd05..b10bb36e6 100644 --- a/docs/OBS.GetSceneItemList.Response.Move.md +++ b/docs/OBS/GetSceneItemList/Response/Move.md @@ -1,42 +1,28 @@ OBS.GetSceneItemList.Response.Move() ------------------------------------ - - - ### Synopsis Moves a scene item - - --- - ### Description Moves a scene item throughout the screen. This converts it's arguments to .Animate arguments. Any single values will be assumed to be positionX/positionY - - --- - ### Related Links * OBS.GetSceneItemList.Response.Animate - - - - --- - ### Examples -#### EXAMPLE 1 +Load a source + ```PowerShell -# Load a source $stars = Add-OBSBrowserSource -URI https://pssvg.start-automating.com/Examples/Stars.svg # fit it to the screen $stars.FitToScreen() @@ -44,6 +30,4 @@ $stars.FitToScreen() $stars.Move("-50%","150%", "00:00:05") ``` - - --- diff --git a/docs/OBS/GetSceneItemList/Response/README.md b/docs/OBS/GetSceneItemList/Response/README.md new file mode 100644 index 000000000..b42be21a3 --- /dev/null +++ b/docs/OBS/GetSceneItemList/Response/README.md @@ -0,0 +1,18 @@ +## OBS.GetSceneItemList.Response + + +### Script Properties + + +* [get_Filters](get_Filters.md) +* [get_Input](get_Input.md) + + +### Script Methods + + +* [Animate()](Animate.md) +* [Center()](Center.md) +* [FitToScreen()](FitToScreen.md) +* [Move()](Move.md) +* [Stretch()](Stretch.md) diff --git a/docs/OBS/GetSceneItemList/Response/Stretch.md b/docs/OBS/GetSceneItemList/Response/Stretch.md new file mode 100644 index 000000000..9293b3013 --- /dev/null +++ b/docs/OBS/GetSceneItemList/Response/Stretch.md @@ -0,0 +1,13 @@ +OBS.GetSceneItemList.Response.Stretch() +--------------------------------------- + +### Synopsis +Stretches a scene item + +--- + +### Description + +Stretches a scene item by changing it's bounds. + +--- diff --git a/docs/OBS/GetSceneItemList/Response/get_Filters.md b/docs/OBS/GetSceneItemList/Response/get_Filters.md new file mode 100644 index 000000000..f8586f2e1 --- /dev/null +++ b/docs/OBS/GetSceneItemList/Response/get_Filters.md @@ -0,0 +1,29 @@ +get_Filters +----------- + +### Synopsis +Gets a Scene Item's filters + +--- + +### Description + +Gets the filters related to an OBS input. + +--- + +### Related Links +* Get-OBSSourceFilterList + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +$obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg +$obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 +$obsPowerShellIcon.Filters +``` + +--- diff --git a/docs/OBS/GetSceneItemList/Response/get_Input.md b/docs/OBS/GetSceneItemList/Response/get_Input.md new file mode 100644 index 000000000..181446b79 --- /dev/null +++ b/docs/OBS/GetSceneItemList/Response/get_Input.md @@ -0,0 +1,25 @@ +get_Input +--------- + +### Synopsis +Gets a Scene Item's Input + +--- + +### Description + +Gets the OBS Input related to the current scene item. + +This value is cached upon first request, as it will never change as long as the source item exists. + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +$stars = Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg +$stars.Input +``` + +--- diff --git a/docs/OBS.GetSourceFilter.Response.Disable.md b/docs/OBS/GetSourceFilter/Response/Disable.md similarity index 94% rename from docs/OBS.GetSourceFilter.Response.Disable.md rename to docs/OBS/GetSourceFilter/Response/Disable.md index 382c971fa..edc78d523 100644 --- a/docs/OBS.GetSourceFilter.Response.Disable.md +++ b/docs/OBS/GetSourceFilter/Response/Disable.md @@ -1,52 +1,28 @@ OBS.GetSourceFilter.Response.Disable() -------------------------------------- - - - ### Synopsis Disables a filter - - --- - ### Description Disables an OBS filter. - - --- - ### Related Links * Set-OBSSourceFilterEnabled - - - - --- - ### Parameters #### **PassThru** - If set, will return the request that would enable a filter. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetSourceFilter.Response.Enable.md b/docs/OBS/GetSourceFilter/Response/Enable.md similarity index 94% rename from docs/OBS.GetSourceFilter.Response.Enable.md rename to docs/OBS/GetSourceFilter/Response/Enable.md index 464b1eb0b..93629ab02 100644 --- a/docs/OBS.GetSourceFilter.Response.Enable.md +++ b/docs/OBS/GetSourceFilter/Response/Enable.md @@ -1,52 +1,28 @@ OBS.GetSourceFilter.Response.Enable() ------------------------------------- - - - ### Synopsis Enables a filter - - --- - ### Description Enables an OBS filter. - - --- - ### Related Links * Set-OBSSourceFilterEnabled - - - - --- - ### Parameters #### **PassThru** - If set, will return the request that would enable a filter. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS/GetSourceFilter/Response/README.md b/docs/OBS/GetSourceFilter/Response/README.md new file mode 100644 index 000000000..ae568d7fb --- /dev/null +++ b/docs/OBS/GetSourceFilter/Response/README.md @@ -0,0 +1,10 @@ +## OBS.GetSourceFilter.Response + + +### Script Methods + + +* [Disable()](Disable.md) +* [Enable()](Enable.md) +* [Remove()](Remove.md) +* [Set()](Set.md) diff --git a/docs/OBS.GetSourceFilter.Response.Remove.md b/docs/OBS/GetSourceFilter/Response/Remove.md similarity index 94% rename from docs/OBS.GetSourceFilter.Response.Remove.md rename to docs/OBS/GetSourceFilter/Response/Remove.md index 1fa53c374..ee2ec81f3 100644 --- a/docs/OBS.GetSourceFilter.Response.Remove.md +++ b/docs/OBS/GetSourceFilter/Response/Remove.md @@ -1,35 +1,20 @@ OBS.GetSourceFilter.Response.Remove() ------------------------------------- - - - ### Synopsis Removes a filter - - --- - ### Description Removes a filter from an OBS source. - - --- - ### Related Links * Remove-OBSSourceFilter - - * Get-OBSSourceFilterList - - - - --- diff --git a/docs/OBS.GetSourceFilter.Response.Set.md b/docs/OBS/GetSourceFilter/Response/Set.md similarity index 95% rename from docs/OBS.GetSourceFilter.Response.Set.md rename to docs/OBS/GetSourceFilter/Response/Set.md index bf65e858d..4dbb0fb0d 100644 --- a/docs/OBS.GetSourceFilter.Response.Set.md +++ b/docs/OBS/GetSourceFilter/Response/Set.md @@ -1,57 +1,30 @@ OBS.GetSourceFilter.Response.Set() ---------------------------------- - - - ### Synopsis Sets a filter - - --- - ### Description Changes a filter's settings. - - --- - ### Parameters #### **Settings** - The settings that can be changed. - - - - - |Type |Required|Position|PipelineInput|Aliases| |----------|--------|--------|-------------|-------| |`[Object]`|false |1 |false |Setting| - - #### **PassThru** - Return the message that would be sent to OBS, rather than changing the filter settings. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetSourceFilterList.Response.Disable.md b/docs/OBS/GetSourceFilterList/Response/Disable.md similarity index 95% rename from docs/OBS.GetSourceFilterList.Response.Disable.md rename to docs/OBS/GetSourceFilterList/Response/Disable.md index 98e8272a5..05ab8cbdd 100644 --- a/docs/OBS.GetSourceFilterList.Response.Disable.md +++ b/docs/OBS/GetSourceFilterList/Response/Disable.md @@ -1,52 +1,28 @@ OBS.GetSourceFilterList.Response.Disable() ------------------------------------------ - - - ### Synopsis Disables a filter - - --- - ### Description Disables an OBS filter. - - --- - ### Related Links * Set-OBSSourceFilterEnabled - - - - --- - ### Parameters #### **PassThru** - If set, will return the request that would enable a filter. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS.GetSourceFilterList.Response.Enable.md b/docs/OBS/GetSourceFilterList/Response/Enable.md similarity index 94% rename from docs/OBS.GetSourceFilterList.Response.Enable.md rename to docs/OBS/GetSourceFilterList/Response/Enable.md index 0acc527c8..43693530d 100644 --- a/docs/OBS.GetSourceFilterList.Response.Enable.md +++ b/docs/OBS/GetSourceFilterList/Response/Enable.md @@ -1,52 +1,28 @@ OBS.GetSourceFilterList.Response.Enable() ----------------------------------------- - - - ### Synopsis Enables a filter - - --- - ### Description Enables an OBS filter. - - --- - ### Related Links * Set-OBSSourceFilterEnabled - - - - --- - ### Parameters #### **PassThru** - If set, will return the request that would enable a filter. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS/GetSourceFilterList/Response/README.md b/docs/OBS/GetSourceFilterList/Response/README.md new file mode 100644 index 000000000..7127af596 --- /dev/null +++ b/docs/OBS/GetSourceFilterList/Response/README.md @@ -0,0 +1,10 @@ +## OBS.GetSourceFilterList.Response + + +### Script Methods + + +* [Disable()](Disable.md) +* [Enable()](Enable.md) +* [Remove()](Remove.md) +* [Set()](Set.md) diff --git a/docs/OBS.GetSourceFilterList.Response.Remove.md b/docs/OBS/GetSourceFilterList/Response/Remove.md similarity index 94% rename from docs/OBS.GetSourceFilterList.Response.Remove.md rename to docs/OBS/GetSourceFilterList/Response/Remove.md index b6f30a8d7..d925a7490 100644 --- a/docs/OBS.GetSourceFilterList.Response.Remove.md +++ b/docs/OBS/GetSourceFilterList/Response/Remove.md @@ -1,35 +1,20 @@ OBS.GetSourceFilterList.Response.Remove() ----------------------------------------- - - - ### Synopsis Removes a filter - - --- - ### Description Removes a filter from an OBS source. - - --- - ### Related Links * Remove-OBSSourceFilter - - * Get-OBSSourceFilterList - - - - --- diff --git a/docs/OBS.GetSourceFilterList.Response.Set.md b/docs/OBS/GetSourceFilterList/Response/Set.md similarity index 95% rename from docs/OBS.GetSourceFilterList.Response.Set.md rename to docs/OBS/GetSourceFilterList/Response/Set.md index 8e32a84f2..abcfcca5f 100644 --- a/docs/OBS.GetSourceFilterList.Response.Set.md +++ b/docs/OBS/GetSourceFilterList/Response/Set.md @@ -1,57 +1,30 @@ OBS.GetSourceFilterList.Response.Set() -------------------------------------- - - - ### Synopsis Sets a filter - - --- - ### Description Changes a filter's settings. - - --- - ### Parameters #### **Settings** - The settings that can be changed. - - - - - |Type |Required|Position|PipelineInput|Aliases| |----------|--------|--------|-------------|-------| |`[Object]`|false |1 |false |Setting| - - #### **PassThru** - Return the message that would be sent to OBS, rather than changing the filter settings. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- diff --git a/docs/OBS/Input/Color/Source/V3/README.md b/docs/OBS/Input/Color/Source/V3/README.md new file mode 100644 index 000000000..79e07d3f4 --- /dev/null +++ b/docs/OBS/Input/Color/Source/V3/README.md @@ -0,0 +1,7 @@ +## OBS.Input.Color.Source.V3 + + +### Script Methods + + +* [SetColor()](SetColor.md) diff --git a/docs/OBS/Input/Color/Source/V3/SetColor.md b/docs/OBS/Input/Color/Source/V3/SetColor.md new file mode 100644 index 000000000..6034086e0 --- /dev/null +++ b/docs/OBS/Input/Color/Source/V3/SetColor.md @@ -0,0 +1,22 @@ +OBS.Input.Color.Source.V3.SetColor() +------------------------------------ + +### Synopsis +Sets the color. + +--- + +### Description + +Changes the color of a color source. + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |1 |false | + +--- diff --git a/docs/OBS/Input/DisableAllFilter.md b/docs/OBS/Input/DisableAllFilter.md new file mode 100644 index 000000000..1c660e0fc --- /dev/null +++ b/docs/OBS/Input/DisableAllFilter.md @@ -0,0 +1,23 @@ +OBS.Input.DisableAllFilter() +---------------------------- + +### Synopsis +Quickly disables all filters + +--- + +### Description + +Quickly disables all filters, except for a list of provided names + +--- + +### Parameters +#### **ExceptFilterName** +A list of filter names to leave disabled. + +|Type |Required|Position|PipelineInput| +|------------|--------|--------|-------------| +|`[String[]]`|false |1 |false | + +--- diff --git a/docs/OBS/Input/EnableAllFilter.md b/docs/OBS/Input/EnableAllFilter.md new file mode 100644 index 000000000..0764b774e --- /dev/null +++ b/docs/OBS/Input/EnableAllFilter.md @@ -0,0 +1,23 @@ +OBS.Input.EnableAllFilter() +--------------------------- + +### Synopsis +Quickly enables all filters + +--- + +### Description + +Quickly enables all filters, except for a list of provided names + +--- + +### Parameters +#### **ExceptFilterName** +A list of filter names to leave disabled. + +|Type |Required|Position|PipelineInput| +|------------|--------|--------|-------------| +|`[String[]]`|false |1 |false | + +--- diff --git a/docs/OBS/Input/Mute.md b/docs/OBS/Input/Mute.md new file mode 100644 index 000000000..0e9038838 --- /dev/null +++ b/docs/OBS/Input/Mute.md @@ -0,0 +1,28 @@ +OBS.Input.Mute() +---------------- + +### Synopsis +Mutes an input + +--- + +### Description + +Mutes the audio of an OBS Input + +--- + +### Related Links +* Set-OBSInputMute + +--- + +### Parameters +#### **PassThru** +If set, returns the message used to mute + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Input/Next.md b/docs/OBS/Input/Next.md new file mode 100644 index 000000000..d7e12079f --- /dev/null +++ b/docs/OBS/Input/Next.md @@ -0,0 +1,28 @@ +OBS.Input.Next() +---------------- + +### Synopsis +Nexts an input + +--- + +### Description + +Sends a "Next" message to an input. + +--- + +### Related Links +* Send-OBSTriggerMediaInputAction + +--- + +### Parameters +#### **PassThru** +If set, will return the message instead of sending it now. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Input/Pause.md b/docs/OBS/Input/Pause.md new file mode 100644 index 000000000..4c0f61935 --- /dev/null +++ b/docs/OBS/Input/Pause.md @@ -0,0 +1,28 @@ +OBS.Input.Pause() +----------------- + +### Synopsis +Pauses an input + +--- + +### Description + +Sends a "Pause" message to an input. + +--- + +### Related Links +* Send-OBSTriggerMediaInputAction + +--- + +### Parameters +#### **PassThru** +If set, will return the message instead of sending it now. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Input/Play.md b/docs/OBS/Input/Play.md new file mode 100644 index 000000000..67e527cff --- /dev/null +++ b/docs/OBS/Input/Play.md @@ -0,0 +1,28 @@ +OBS.Input.Play() +---------------- + +### Synopsis +Plays an input + +--- + +### Description + +Sends a "Play" message to an input. + +--- + +### Related Links +* Send-OBSTriggerMediaInputAction + +--- + +### Parameters +#### **PassThru** +If set, will return the message instead of sending it now. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Input/Previous.md b/docs/OBS/Input/Previous.md new file mode 100644 index 000000000..93ef2cf1d --- /dev/null +++ b/docs/OBS/Input/Previous.md @@ -0,0 +1,28 @@ +OBS.Input.Previous() +-------------------- + +### Synopsis +Previouss an input + +--- + +### Description + +Sends a "Previous" message to an input. + +--- + +### Related Links +* Send-OBSTriggerMediaInputAction + +--- + +### Parameters +#### **PassThru** +If set, will return the message instead of sending it now. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Input/README.md b/docs/OBS/Input/README.md new file mode 100644 index 000000000..b4d2550b3 --- /dev/null +++ b/docs/OBS/Input/README.md @@ -0,0 +1,31 @@ +## OBS.Input + + +### Script Properties + + +* [get_CurrentTime](get_CurrentTime.md) +* [set_CurrentTime](set_CurrentTime.md) +* [get_Filters](get_Filters.md) +* [get_SceneItem](get_SceneItem.md) +* [get_Settings](get_Settings.md) +* [set_Settings](set_Settings.md) +* [get_Status](get_Status.md) +* [get_Volume](get_Volume.md) +* [set_Volume](set_Volume.md) + + +### Script Methods + + +* [DisableAllFilter()](DisableAllFilter.md) +* [EnableAllFilter()](EnableAllFilter.md) +* [Mute()](Mute.md) +* [Next()](Next.md) +* [Pause()](Pause.md) +* [Play()](Play.md) +* [Previous()](Previous.md) +* [Remove()](Remove.md) +* [Restart()](Restart.md) +* [Stop()](Stop.md) +* [Unmute()](Unmute.md) diff --git a/docs/OBS/Input/Remove.md b/docs/OBS/Input/Remove.md new file mode 100644 index 000000000..fb9aa6a6f --- /dev/null +++ b/docs/OBS/Input/Remove.md @@ -0,0 +1,18 @@ +OBS.Input.Remove() +------------------ + +### Synopsis +Removes an input + +--- + +### Description + +Removes an OBS Input + +--- + +### Related Links +* Remove-OBSInput + +--- diff --git a/docs/OBS/Input/Restart.md b/docs/OBS/Input/Restart.md new file mode 100644 index 000000000..de4250482 --- /dev/null +++ b/docs/OBS/Input/Restart.md @@ -0,0 +1,28 @@ +OBS.Input.Restart() +------------------- + +### Synopsis +Restarts an input + +--- + +### Description + +Sends a "Restart" message to an input. + +--- + +### Related Links +* Send-OBSTriggerMediaInputAction + +--- + +### Parameters +#### **PassThru** +If set, will return the message instead of sending it now. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Input/Stop.md b/docs/OBS/Input/Stop.md new file mode 100644 index 000000000..365d87d37 --- /dev/null +++ b/docs/OBS/Input/Stop.md @@ -0,0 +1,28 @@ +OBS.Input.Stop() +---------------- + +### Synopsis +Stops an input + +--- + +### Description + +Sends a "Stop" message to an input. + +--- + +### Related Links +* Send-OBSTriggerMediaInputAction + +--- + +### Parameters +#### **PassThru** +If set, will return the message instead of sending it now. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Input/Unmute.md b/docs/OBS/Input/Unmute.md new file mode 100644 index 000000000..9ab3b795d --- /dev/null +++ b/docs/OBS/Input/Unmute.md @@ -0,0 +1,28 @@ +OBS.Input.Unmute() +------------------ + +### Synopsis +Mutes an input + +--- + +### Description + +Mutes the audio of an OBS Input + +--- + +### Related Links +* Set-OBSInputMute + +--- + +### Parameters +#### **PassThru** +If set, returns the message used to unmute. + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | + +--- diff --git a/docs/OBS/Input/get_CurrentTime.md b/docs/OBS/Input/get_CurrentTime.md new file mode 100644 index 000000000..88f5f8df1 --- /dev/null +++ b/docs/OBS/Input/get_CurrentTime.md @@ -0,0 +1,18 @@ +get_CurrentTime +--------------- + +### Synopsis +Gets an input's current time + +--- + +### Description + +Gets an input's current time, if applicable + +--- + +### Related Links +* Get-OBSMediaInputStatus + +--- diff --git a/docs/OBS/Input/get_Filters.md b/docs/OBS/Input/get_Filters.md new file mode 100644 index 000000000..3ed2e0328 --- /dev/null +++ b/docs/OBS/Input/get_Filters.md @@ -0,0 +1,29 @@ +get_Filters +----------- + +### Synopsis +Gets an input's filters + +--- + +### Description + +Gets the filters related to an OBS input. + +--- + +### Related Links +* Get-OBSSourceFilterList + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +$obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg +$obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 +$obsPowerShellIcon.Input.Filters +``` + +--- diff --git a/docs/OBS/Input/get_SceneItem.md b/docs/OBS/Input/get_SceneItem.md new file mode 100644 index 000000000..0e1270053 --- /dev/null +++ b/docs/OBS/Input/get_SceneItem.md @@ -0,0 +1,13 @@ +get_SceneItem +------------- + +### Synopsis +Gets an input's scene items + +--- + +### Description + +Gets the scene items associated with an input. + +--- diff --git a/docs/OBS/Input/get_Settings.md b/docs/OBS/Input/get_Settings.md new file mode 100644 index 000000000..fe7d97b15 --- /dev/null +++ b/docs/OBS/Input/get_Settings.md @@ -0,0 +1,28 @@ +get_Settings +------------ + +### Synopsis +Gets an input's settings + +--- + +### Description + +Gets the current settings for an OBS input. + +--- + +### Related Links +* Get-OBSInputSettings + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +$obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg +$obsPowerShellIcon.Input.Settings +``` + +--- diff --git a/docs/OBS/Input/get_Status.md b/docs/OBS/Input/get_Status.md new file mode 100644 index 000000000..e0f428717 --- /dev/null +++ b/docs/OBS/Input/get_Status.md @@ -0,0 +1,18 @@ +get_Status +---------- + +### Synopsis +Gets an input's status + +--- + +### Description + +Gets the media status of an OBS input. + +--- + +### Related Links +* Get-OBSMediaInputStatus + +--- diff --git a/docs/OBS/Input/get_Volume.md b/docs/OBS/Input/get_Volume.md new file mode 100644 index 000000000..1e42fbf37 --- /dev/null +++ b/docs/OBS/Input/get_Volume.md @@ -0,0 +1,18 @@ +get_Volume +---------- + +### Synopsis +Gets an input's volume + +--- + +### Description + +Gets an OBS input's volume mulitplier + +--- + +### Related Links +* Get-OBSInputVolume + +--- diff --git a/docs/OBS/Input/set_CurrentTime.md b/docs/OBS/Input/set_CurrentTime.md new file mode 100644 index 000000000..067d623a3 --- /dev/null +++ b/docs/OBS/Input/set_CurrentTime.md @@ -0,0 +1,18 @@ +set_CurrentTime +--------------- + +### Synopsis +Sets an input's current time + +--- + +### Description + +Sets an input's current time. + +--- + +### Related Links +* Send-OBSMediaInputCursor + +--- diff --git a/docs/OBS/Input/set_Settings.md b/docs/OBS/Input/set_Settings.md new file mode 100644 index 000000000..47b54ed62 --- /dev/null +++ b/docs/OBS/Input/set_Settings.md @@ -0,0 +1,18 @@ +set_Settings +------------ + +### Synopsis +Sets an input's settings + +--- + +### Description + +Changes the settings for an OBS input. + +--- + +### Related Links +* Set-OBSInputSettings + +--- diff --git a/docs/OBS/Input/set_Volume.md b/docs/OBS/Input/set_Volume.md new file mode 100644 index 000000000..c2027d683 --- /dev/null +++ b/docs/OBS/Input/set_Volume.md @@ -0,0 +1,31 @@ +set_Volume +---------- + +### Synopsis +Sets an input's volume + +--- + +### Description + +Sets an OBS input's volume mulitplier. + +This is normally between 0 (no sound) and 1 (normal levels). + +A source can be made up to 20 times the original volume. + +--- + +### Related Links +* Set-OBSInputVolume + +--- + +### Parameters +#### **Multiple** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Double]`|false |1 |false | + +--- diff --git a/docs/OBS/PowerShell/Effect/README.md b/docs/OBS/PowerShell/Effect/README.md new file mode 100644 index 000000000..458846a69 --- /dev/null +++ b/docs/OBS/PowerShell/Effect/README.md @@ -0,0 +1,22 @@ +## OBS.PowerShell.Effect + + +### Script Properties + + +* [get_Changes](get_Changes.md) +* [get_Duration](get_Duration.md) +* [get_EffectType](get_EffectType.md) +* [get_Index](get_Index.md) +* [set_Index](set_Index.md) +* [get_Reversed](get_Reversed.md) +* [set_Reversed](set_Reversed.md) + + +### Script Methods + + +* [Reverse()](Reverse.md) +* [Start()](Start.md) +* [Step()](Step.md) +* [Stop()](Stop.md) diff --git a/docs/OBS.PowerShell.Effect.Reverse.md b/docs/OBS/PowerShell/Effect/Reverse.md similarity index 96% rename from docs/OBS.PowerShell.Effect.Reverse.md rename to docs/OBS/PowerShell/Effect/Reverse.md index fb9a67388..a4579ba14 100644 --- a/docs/OBS.PowerShell.Effect.Reverse.md +++ b/docs/OBS/PowerShell/Effect/Reverse.md @@ -1,21 +1,13 @@ OBS.PowerShell.Effect.Reverse() ------------------------------- - - - ### Synopsis Toggles Reversed and Starts an Effect - - --- - ### Description Toggles an Effect's Reversed bool, and starts the effect. - - --- diff --git a/docs/OBS.PowerShell.Effect.Start.md b/docs/OBS/PowerShell/Effect/Start.md similarity index 95% rename from docs/OBS.PowerShell.Effect.Start.md rename to docs/OBS/PowerShell/Effect/Start.md index 82efc1bd8..36f896b70 100644 --- a/docs/OBS.PowerShell.Effect.Start.md +++ b/docs/OBS/PowerShell/Effect/Start.md @@ -1,23 +1,15 @@ OBS.PowerShell.Effect.Start() ----------------------------- - - - ### Synopsis Stars an Effect - - --- - ### Description Stars an Effect in obs-powershell. If the effect has no messages - - --- diff --git a/docs/OBS.PowerShell.Effect.Step.md b/docs/OBS/PowerShell/Effect/Step.md similarity index 95% rename from docs/OBS.PowerShell.Effect.Step.md rename to docs/OBS/PowerShell/Effect/Step.md index b813f17b7..591bc347f 100644 --- a/docs/OBS.PowerShell.Effect.Step.md +++ b/docs/OBS/PowerShell/Effect/Step.md @@ -1,44 +1,25 @@ OBS.PowerShell.Effect.Step() ---------------------------- - - - ### Synopsis Steps thru an effect - - --- - ### Description Steps thru an effect. This will send individual messages from an effect, without sleeps. - - --- - ### Parameters #### **StepCount** - The step count - - - - - |Type |Required|Position|PipelineInput|Aliases| |---------|--------|--------|-------------|-------| |`[Int32]`|false |1 |false |Ticks | - - - - --- diff --git a/docs/OBS.PowerShell.Effect.Stop.md b/docs/OBS/PowerShell/Effect/Stop.md similarity index 95% rename from docs/OBS.PowerShell.Effect.Stop.md rename to docs/OBS/PowerShell/Effect/Stop.md index 9174da013..4d0ce1ad4 100644 --- a/docs/OBS.PowerShell.Effect.Stop.md +++ b/docs/OBS/PowerShell/Effect/Stop.md @@ -1,21 +1,13 @@ OBS.PowerShell.Effect.Stop() ---------------------------- - - - ### Synopsis Stops an effect - - --- - ### Description Stops an effect, or more properly, prevents an effect from looping - - --- diff --git a/docs/OBS.PowerShell.Effect.get_Changes.md b/docs/OBS/PowerShell/Effect/get_Changes.md similarity index 61% rename from docs/OBS.PowerShell.Effect.get_Changes.md rename to docs/OBS/PowerShell/Effect/get_Changes.md index 86de8743a..468d6bb38 100644 --- a/docs/OBS.PowerShell.Effect.get_Changes.md +++ b/docs/OBS/PowerShell/Effect/get_Changes.md @@ -1,21 +1,13 @@ -OBS.PowerShell.Effect.get_Changes() ------------------------------------ - - - +get_Changes +----------- ### Synopsis Gets the Effect's Changes - - --- - ### Description Gets the changes the effect will make, without a timespan. - - --- diff --git a/docs/OBS.PowerShell.Effect.get_Duration.md b/docs/OBS/PowerShell/Effect/get_Duration.md similarity index 57% rename from docs/OBS.PowerShell.Effect.get_Duration.md rename to docs/OBS/PowerShell/Effect/get_Duration.md index 766b26f84..66e2bf67d 100644 --- a/docs/OBS.PowerShell.Effect.get_Duration.md +++ b/docs/OBS/PowerShell/Effect/get_Duration.md @@ -1,21 +1,13 @@ -OBS.PowerShell.Effect.get_Duration() ------------------------------------- - - - +get_Duration +------------ ### Synopsis Gets an Effect's Duration - - --- - ### Description Gets the total time the effect will sleep. - - --- diff --git a/docs/OBS.PowerShell.Effect.get_EffectType.md b/docs/OBS/PowerShell/Effect/get_EffectType.md similarity index 66% rename from docs/OBS.PowerShell.Effect.get_EffectType.md rename to docs/OBS/PowerShell/Effect/get_EffectType.md index 8495a1b1e..a2f23b835 100644 --- a/docs/OBS.PowerShell.Effect.get_EffectType.md +++ b/docs/OBS/PowerShell/Effect/get_EffectType.md @@ -1,23 +1,15 @@ -OBS.PowerShell.Effect.get_EffectType() --------------------------------------- - - - +get_EffectType +-------------- ### Synopsis Gets an obs-powershell effect's type - - --- - ### Description Gets the type of an obs-powershell effect. Current can be either 'Command' or 'Messages' - - --- diff --git a/docs/OBS.PowerShell.Effect.get_Index.md b/docs/OBS/PowerShell/Effect/get_Index.md similarity index 67% rename from docs/OBS.PowerShell.Effect.get_Index.md rename to docs/OBS/PowerShell/Effect/get_Index.md index 0320eef2b..a73eaec65 100644 --- a/docs/OBS.PowerShell.Effect.get_Index.md +++ b/docs/OBS/PowerShell/Effect/get_Index.md @@ -1,21 +1,13 @@ -OBS.PowerShell.Effect.get_Index() ---------------------------------- - - - +get_Index +--------- ### Synopsis Gets the index of the effect - - --- - ### Description Gets the current index of the effect. This is only used for to .Step thru an effect. - - --- diff --git a/docs/OBS.PowerShell.Effect.get_Reversed.md b/docs/OBS/PowerShell/Effect/get_Reversed.md similarity index 70% rename from docs/OBS.PowerShell.Effect.get_Reversed.md rename to docs/OBS/PowerShell/Effect/get_Reversed.md index e694c092d..ca73805b2 100644 --- a/docs/OBS.PowerShell.Effect.get_Reversed.md +++ b/docs/OBS/PowerShell/Effect/get_Reversed.md @@ -1,23 +1,15 @@ -OBS.PowerShell.Effect.get_Reversed() ------------------------------------- - - - +get_Reversed +------------ ### Synopsis Gets if an effect is reversed. - - --- - ### Description Gets if an effect is currently set to Reverse. Whenever reverse is set, effect messages will be reversed before being sent. - - --- diff --git a/docs/OBS.PowerShell.Effect.set_Index.md b/docs/OBS/PowerShell/Effect/set_Index.md similarity index 62% rename from docs/OBS.PowerShell.Effect.set_Index.md rename to docs/OBS/PowerShell/Effect/set_Index.md index a56dcb6f1..ddc7f29a8 100644 --- a/docs/OBS.PowerShell.Effect.set_Index.md +++ b/docs/OBS/PowerShell/Effect/set_Index.md @@ -1,21 +1,13 @@ -OBS.PowerShell.Effect.set_Index() ---------------------------------- - - - +set_Index +--------- ### Synopsis Updates the Effect's Index - - --- - ### Description Updates an effect's index. This is only used to .Step() - - --- diff --git a/docs/OBS.PowerShell.Effect.set_Reversed.md b/docs/OBS/PowerShell/Effect/set_Reversed.md similarity index 60% rename from docs/OBS.PowerShell.Effect.set_Reversed.md rename to docs/OBS/PowerShell/Effect/set_Reversed.md index 20292e6f7..40b5bca7c 100644 --- a/docs/OBS.PowerShell.Effect.set_Reversed.md +++ b/docs/OBS/PowerShell/Effect/set_Reversed.md @@ -1,21 +1,13 @@ -OBS.PowerShell.Effect.set_Reversed() ------------------------------------- - - - +set_Reversed +------------ ### Synopsis Sets if an effect should be reversed. - - --- - ### Description Sets if an effect should be played in reverse. - - --- diff --git a/docs/OBS/PowerShell/README.md b/docs/OBS/PowerShell/README.md new file mode 100644 index 000000000..5646615e7 --- /dev/null +++ b/docs/OBS/PowerShell/README.md @@ -0,0 +1,20 @@ +## OBS.PowerShell + + +### Script Properties + + +* [get_Beat](get_Beat.md) +* [get_Commands](get_Commands.md) +* [get_CurrentScene](get_CurrentScene.md) +* [get_Inputs](get_Inputs.md) +* [get_OBSPowerShellVersion](get_OBSPowerShellVersion.md) +* [get_OBSVersion](get_OBSVersion.md) +* [get_OBSWebSocketVersion](get_OBSWebSocketVersion.md) +* [get_Outputs](get_Outputs.md) +* [get_RandomExample](get_RandomExample.md) +* [get_RecordStatus](get_RecordStatus.md) +* [get_SceneItems](get_SceneItems.md) +* [get_Scenes](get_Scenes.md) +* [get_Statistics](get_Statistics.md) +* [get_StreamStatus](get_StreamStatus.md) diff --git a/docs/OBS/PowerShell/get_Beat.md b/docs/OBS/PowerShell/get_Beat.md new file mode 100644 index 000000000..0eb6eb3d2 --- /dev/null +++ b/docs/OBS/PowerShell/get_Beat.md @@ -0,0 +1,15 @@ +get_Beat +-------- + +### Synopsis +Gets the Beat + +--- + +### Description + +Gets the Beat Controller for obs-powershell. + +The beat controller allows you to control effects on a beat. + +--- diff --git a/docs/OBS.PowerShell.get_Commands.md b/docs/OBS/PowerShell/get_Commands.md similarity index 66% rename from docs/OBS.PowerShell.get_Commands.md rename to docs/OBS/PowerShell/get_Commands.md index 66ad27b84..22747c7d2 100644 --- a/docs/OBS.PowerShell.get_Commands.md +++ b/docs/OBS/PowerShell/get_Commands.md @@ -1,32 +1,22 @@ -OBS.PowerShell.get_Commands() ------------------------------ - - - +get_Commands +------------ ### Synopsis Gets obs-powershell commands - - --- - ### Description Gets the commands in obs-powershell. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell (Get-OBS).Commands ``` - - --- diff --git a/docs/OBS.PowerShell.get_CurrentScene.md b/docs/OBS/PowerShell/get_CurrentScene.md similarity index 66% rename from docs/OBS.PowerShell.get_CurrentScene.md rename to docs/OBS/PowerShell/get_CurrentScene.md index eb65c5b76..c4f79fec9 100644 --- a/docs/OBS.PowerShell.get_CurrentScene.md +++ b/docs/OBS/PowerShell/get_CurrentScene.md @@ -1,32 +1,22 @@ -OBS.PowerShell.get_CurrentScene() ---------------------------------- - - - +get_CurrentScene +---------------- ### Synopsis Gets the current scene - - --- - ### Description Gets the current scene in OBS. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBS | Select-Object -ExpandProperty CurrentScene ``` - - --- diff --git a/docs/OBS.PowerShell.get_Inputs.md b/docs/OBS/PowerShell/get_Inputs.md similarity index 68% rename from docs/OBS.PowerShell.get_Inputs.md rename to docs/OBS/PowerShell/get_Inputs.md index a9151eaa7..24a4257fd 100644 --- a/docs/OBS.PowerShell.get_Inputs.md +++ b/docs/OBS/PowerShell/get_Inputs.md @@ -1,31 +1,18 @@ -OBS.PowerShell.get_Inputs() ---------------------------- - - - +get_Inputs +---------- ### Synopsis Gets the loaded OBS inputs. - - --- - ### Description Gets the currently loaded inputs in OBS. - - --- - ### Related Links * Get-OBSInput - - - - --- diff --git a/docs/OBS.PowerShell.get_OBSPowerShellVersion.md b/docs/OBS/PowerShell/get_OBSPowerShellVersion.md similarity index 65% rename from docs/OBS.PowerShell.get_OBSPowerShellVersion.md rename to docs/OBS/PowerShell/get_OBSPowerShellVersion.md index 370767fb9..21ae8588d 100644 --- a/docs/OBS.PowerShell.get_OBSPowerShellVersion.md +++ b/docs/OBS/PowerShell/get_OBSPowerShellVersion.md @@ -1,32 +1,22 @@ -OBS.PowerShell.get_OBSPowerShellVersion() ------------------------------------------ - - - +get_OBSPowerShellVersion +------------------------ ### Synopsis Gets the obs-powershell version. - - --- - ### Description Gets the version of obs-powershell. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBS | Select-Object -ExpandProperty OBSPowerShellVersion ``` - - --- diff --git a/docs/OBS.PowerShell.get_OBSVersion.md b/docs/OBS/PowerShell/get_OBSVersion.md similarity index 66% rename from docs/OBS.PowerShell.get_OBSVersion.md rename to docs/OBS/PowerShell/get_OBSVersion.md index 2e049108b..55fa59403 100644 --- a/docs/OBS.PowerShell.get_OBSVersion.md +++ b/docs/OBS/PowerShell/get_OBSVersion.md @@ -1,32 +1,22 @@ -OBS.PowerShell.get_OBSVersion() -------------------------------- - - - +get_OBSVersion +-------------- ### Synopsis Gets the obs version. - - --- - ### Description Gets the version of obs. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBS | Select-Object -ExpandProperty OBSVersion ``` - - --- diff --git a/docs/OBS.PowerShell.get_OBSWebSocketVersion.md b/docs/OBS/PowerShell/get_OBSWebSocketVersion.md similarity index 62% rename from docs/OBS.PowerShell.get_OBSWebSocketVersion.md rename to docs/OBS/PowerShell/get_OBSWebSocketVersion.md index f8151df41..9f8bfb753 100644 --- a/docs/OBS.PowerShell.get_OBSWebSocketVersion.md +++ b/docs/OBS/PowerShell/get_OBSWebSocketVersion.md @@ -1,32 +1,22 @@ -OBS.PowerShell.get_OBSWebSocketVersion() ----------------------------------------- - - - +get_OBSWebSocketVersion +----------------------- ### Synopsis Gets the obs version. - - --- - ### Description Gets the version of obs. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBS | Select-Object -ExpandProperty OBSVersion ``` - - --- diff --git a/docs/OBS.PowerShell.get_Outputs.md b/docs/OBS/PowerShell/get_Outputs.md similarity index 68% rename from docs/OBS.PowerShell.get_Outputs.md rename to docs/OBS/PowerShell/get_Outputs.md index 87b010a92..549c53cbe 100644 --- a/docs/OBS.PowerShell.get_Outputs.md +++ b/docs/OBS/PowerShell/get_Outputs.md @@ -1,31 +1,18 @@ -OBS.PowerShell.get_Outputs() ----------------------------- - - - +get_Outputs +----------- ### Synopsis Gets the loaded OBS outputs. - - --- - ### Description Gets the currently loaded outputs in OBS. - - --- - ### Related Links * Get-OBSOutput - - - - --- diff --git a/docs/OBS/PowerShell/get_RandomExample.md b/docs/OBS/PowerShell/get_RandomExample.md new file mode 100644 index 000000000..53bc183d2 --- /dev/null +++ b/docs/OBS/PowerShell/get_RandomExample.md @@ -0,0 +1,10 @@ +get_RandomExample +----------------- + +### Synopsis + +--- + +### Description + +--- diff --git a/docs/OBS.PowerShell.get_RecordStatus.md b/docs/OBS/PowerShell/get_RecordStatus.md similarity index 63% rename from docs/OBS.PowerShell.get_RecordStatus.md rename to docs/OBS/PowerShell/get_RecordStatus.md index 251bf289b..e4297f6fb 100644 --- a/docs/OBS.PowerShell.get_RecordStatus.md +++ b/docs/OBS/PowerShell/get_RecordStatus.md @@ -1,31 +1,18 @@ -OBS.PowerShell.get_RecordStatus() ---------------------------------- - - - +get_RecordStatus +---------------- ### Synopsis Gets OBS record status. - - --- - ### Description Gets the record status of OBS. - - --- - ### Related Links * Get-OBSRecordStatus - - - - --- diff --git a/docs/OBS.PowerShell.get_SceneItems.md b/docs/OBS/PowerShell/get_SceneItems.md similarity index 67% rename from docs/OBS.PowerShell.get_SceneItems.md rename to docs/OBS/PowerShell/get_SceneItems.md index f6db951fe..20e656672 100644 --- a/docs/OBS.PowerShell.get_SceneItems.md +++ b/docs/OBS/PowerShell/get_SceneItems.md @@ -1,35 +1,20 @@ -OBS.PowerShell.get_SceneItems() -------------------------------- - - - +get_SceneItems +-------------- ### Synopsis Gets all obs scene items. - - --- - ### Description Gets every item in every scene in OBS. - - --- - ### Related Links * Get-OBSScene - - * Get-OBSSceneItem - - - - --- diff --git a/docs/OBS.PowerShell.get_Scenes.md b/docs/OBS/PowerShell/get_Scenes.md similarity index 68% rename from docs/OBS.PowerShell.get_Scenes.md rename to docs/OBS/PowerShell/get_Scenes.md index 6fc8b57a0..0a8e13134 100644 --- a/docs/OBS.PowerShell.get_Scenes.md +++ b/docs/OBS/PowerShell/get_Scenes.md @@ -1,31 +1,18 @@ -OBS.PowerShell.get_Scenes() ---------------------------- - - - +get_Scenes +---------- ### Synopsis Gets the loaded OBS scenes. - - --- - ### Description Gets the currently loaded scenes in OBS. - - --- - ### Related Links * Get-OBSScene - - - - --- diff --git a/docs/OBS/PowerShell/get_Statistics.md b/docs/OBS/PowerShell/get_Statistics.md new file mode 100644 index 000000000..4007daafa --- /dev/null +++ b/docs/OBS/PowerShell/get_Statistics.md @@ -0,0 +1,18 @@ +get_Statistics +-------------- + +### Synopsis +Gets OBS stats. + +--- + +### Description + +Gets OBS statistics + +--- + +### Related Links +* Get-OBSStats + +--- diff --git a/docs/OBS.PowerShell.get_Stats.md b/docs/OBS/PowerShell/get_Stats.md similarity index 92% rename from docs/OBS.PowerShell.get_Stats.md rename to docs/OBS/PowerShell/get_Stats.md index b23b8cd4d..4fae5f2df 100644 --- a/docs/OBS.PowerShell.get_Stats.md +++ b/docs/OBS/PowerShell/get_Stats.md @@ -1,31 +1,18 @@ OBS.PowerShell.get_Stats() -------------------------- - - - ### Synopsis Gets OBS stats. - - --- - ### Description Gets OBS statistics - - --- - ### Related Links * Get-OBSStats - - - - --- diff --git a/docs/OBS.PowerShell.get_StreamStatus.md b/docs/OBS/PowerShell/get_StreamStatus.md similarity index 63% rename from docs/OBS.PowerShell.get_StreamStatus.md rename to docs/OBS/PowerShell/get_StreamStatus.md index ec204f417..b1c571d30 100644 --- a/docs/OBS.PowerShell.get_StreamStatus.md +++ b/docs/OBS/PowerShell/get_StreamStatus.md @@ -1,31 +1,18 @@ -OBS.PowerShell.get_StreamStatus() ---------------------------------- - - - +get_StreamStatus +---------------- ### Synopsis Gets OBS stream status. - - --- - ### Description Gets the stream status of OBS. - - --- - ### Related Links * Get-OBSStreamStatus - - - - --- diff --git a/docs/OBS/Powershell/Effect/Command/README.md b/docs/OBS/Powershell/Effect/Command/README.md new file mode 100644 index 000000000..843e5b032 --- /dev/null +++ b/docs/OBS/Powershell/Effect/Command/README.md @@ -0,0 +1,7 @@ +## OBS.Powershell.Effect.Command + + +### Script Properties + + +* [get_EffectName](get_EffectName.md) diff --git a/docs/OBS/Powershell/Effect/Command/get_EffectName.md b/docs/OBS/Powershell/Effect/Command/get_EffectName.md new file mode 100644 index 000000000..e38aa3dab --- /dev/null +++ b/docs/OBS/Powershell/Effect/Command/get_EffectName.md @@ -0,0 +1,13 @@ +get_EffectName +-------------- + +### Synopsis +Gets the Effect Name + +--- + +### Description + +Gets the name of an Effect. + +--- diff --git a/docs/OBS/SceneItem/Animate.md b/docs/OBS/SceneItem/Animate.md new file mode 100644 index 000000000..9a7c76bc6 --- /dev/null +++ b/docs/OBS/SceneItem/Animate.md @@ -0,0 +1,26 @@ +OBS.SceneItem.Animate() +----------------------- + +### Synopsis +Animates scene items + +--- + +### Description + +Animates the motion of scene items within a frame. + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +$stars = Add-OBSBrowserSource -URI https://pssvg.start-automating.com/Examples/Stars.svg +$stars.FitToScreen() +$stars.Animate(@{ + scale = 0.1 +},"00:00:01") +``` + +--- diff --git a/docs/OBS/SceneItem/Center.md b/docs/OBS/SceneItem/Center.md new file mode 100644 index 000000000..338667ebb --- /dev/null +++ b/docs/OBS/SceneItem/Center.md @@ -0,0 +1,24 @@ +OBS.SceneItem.Center() +---------------------- + +### Synopsis +Centers a scene item + +--- + +### Description + +Sets the scene item alignment to center + +--- + +### Notes +Also corrects the position so that the image does not only appear in a quadrant. + +If a boolean argument is passed, and it is true, then this will PassThru instead of run. +(this can be used for animations) + +If an explicit null argument is passed, then the command will not wait for an OBS response. +(this will be slightly faster) + +--- diff --git a/docs/OBS/SceneItem/FitToScreen.md b/docs/OBS/SceneItem/FitToScreen.md new file mode 100644 index 000000000..25ff20afe --- /dev/null +++ b/docs/OBS/SceneItem/FitToScreen.md @@ -0,0 +1,22 @@ +OBS.SceneItem.FitToScreen() +--------------------------- + +### Synopsis +Fits an item to the screen + +--- + +### Description + +Centers an item and makes it fit to the screen. + +--- + +### Related Links +* Get-OBSVideoSettings + +* Get-OBSSceneItemTransform + +* Set-OBSSceneItemTransform + +--- diff --git a/docs/OBS/SceneItem/Move.md b/docs/OBS/SceneItem/Move.md new file mode 100644 index 000000000..e74fd1ea9 --- /dev/null +++ b/docs/OBS/SceneItem/Move.md @@ -0,0 +1,33 @@ +OBS.SceneItem.Move() +-------------------- + +### Synopsis +Moves a scene item + +--- + +### Description + +Moves a scene item throughout the screen. + +This converts it's arguments to .Animate arguments. Any single values will be assumed to be positionX/positionY + +--- + +### Related Links +* OBS.GetSceneItemList.Response.Animate + +--- + +### Examples +Load a source + +```PowerShell +$stars = Add-OBSBrowserSource -URI https://pssvg.start-automating.com/Examples/Stars.svg +# fit it to the screen +$stars.FitToScreen() +# Move it diagonally across the screen +$stars.Move("-50%","150%", "00:00:05") +``` + +--- diff --git a/docs/OBS/SceneItem/README.md b/docs/OBS/SceneItem/README.md new file mode 100644 index 000000000..e041f9b4c --- /dev/null +++ b/docs/OBS/SceneItem/README.md @@ -0,0 +1,18 @@ +## OBS.SceneItem + + +### Script Properties + + +* [get_Filters](get_Filters.md) +* [get_Input](get_Input.md) + + +### Script Methods + + +* [Animate()](Animate.md) +* [Center()](Center.md) +* [FitToScreen()](FitToScreen.md) +* [Move()](Move.md) +* [Stretch()](Stretch.md) diff --git a/docs/OBS/SceneItem/Stretch.md b/docs/OBS/SceneItem/Stretch.md new file mode 100644 index 000000000..8d18566af --- /dev/null +++ b/docs/OBS/SceneItem/Stretch.md @@ -0,0 +1,13 @@ +OBS.SceneItem.Stretch() +----------------------- + +### Synopsis +Stretches a scene item + +--- + +### Description + +Stretches a scene item by changing it's bounds. + +--- diff --git a/docs/OBS/SceneItem/get_Filters.md b/docs/OBS/SceneItem/get_Filters.md new file mode 100644 index 000000000..f8586f2e1 --- /dev/null +++ b/docs/OBS/SceneItem/get_Filters.md @@ -0,0 +1,29 @@ +get_Filters +----------- + +### Synopsis +Gets a Scene Item's filters + +--- + +### Description + +Gets the filters related to an OBS input. + +--- + +### Related Links +* Get-OBSSourceFilterList + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +$obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg +$obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 +$obsPowerShellIcon.Filters +``` + +--- diff --git a/docs/OBS/SceneItem/get_Input.md b/docs/OBS/SceneItem/get_Input.md new file mode 100644 index 000000000..181446b79 --- /dev/null +++ b/docs/OBS/SceneItem/get_Input.md @@ -0,0 +1,25 @@ +get_Input +--------- + +### Synopsis +Gets a Scene Item's Input + +--- + +### Description + +Gets the OBS Input related to the current scene item. + +This value is cached upon first request, as it will never change as long as the source item exists. + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +$stars = Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg +$stars.Input +``` + +--- diff --git a/docs/Open-OBSInputFiltersDialog.md b/docs/Open-OBSInputFiltersDialog.md index 57ef8fefd..d9b944d42 100644 --- a/docs/Open-OBSInputFiltersDialog.md +++ b/docs/Open-OBSInputFiltersDialog.md @@ -1,92 +1,57 @@ Open-OBSInputFiltersDialog -------------------------- - - - ### Synopsis Open-OBSInputFiltersDialog : OpenInputFiltersDialog - - --- - ### Description Opens the filters dialog of an input. - Open-OBSInputFiltersDialog calls the OBS WebSocket with a request of type OpenInputFiltersDialog. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputfiltersdialog](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputfiltersdialog) - - - - --- - ### Parameters #### **InputName** - Name of the input to open the dialog of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to open the dialog of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Open-OBSInputFiltersDialog [-InputName] [-PassThru] [-NoResponse] [] +Open-OBSInputFiltersDialog [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Open-OBSInputInteractDialog.md b/docs/Open-OBSInputInteractDialog.md index f96e239b4..d808f29c6 100644 --- a/docs/Open-OBSInputInteractDialog.md +++ b/docs/Open-OBSInputInteractDialog.md @@ -1,92 +1,57 @@ Open-OBSInputInteractDialog --------------------------- - - - ### Synopsis Open-OBSInputInteractDialog : OpenInputInteractDialog - - --- - ### Description Opens the interact dialog of an input. - Open-OBSInputInteractDialog calls the OBS WebSocket with a request of type OpenInputInteractDialog. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputinteractdialog](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputinteractdialog) - - - - --- - ### Parameters #### **InputName** - Name of the input to open the dialog of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to open the dialog of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Open-OBSInputInteractDialog [-InputName] [-PassThru] [-NoResponse] [] +Open-OBSInputInteractDialog [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Open-OBSInputPropertiesDialog.md b/docs/Open-OBSInputPropertiesDialog.md index 1f9f176e4..58602f616 100644 --- a/docs/Open-OBSInputPropertiesDialog.md +++ b/docs/Open-OBSInputPropertiesDialog.md @@ -1,92 +1,57 @@ Open-OBSInputPropertiesDialog ----------------------------- - - - ### Synopsis Open-OBSInputPropertiesDialog : OpenInputPropertiesDialog - - --- - ### Description Opens the properties dialog of an input. - Open-OBSInputPropertiesDialog calls the OBS WebSocket with a request of type OpenInputPropertiesDialog. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputpropertiesdialog](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputpropertiesdialog) - - - - --- - ### Parameters #### **InputName** - Name of the input to open the dialog of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to open the dialog of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Open-OBSInputPropertiesDialog [-InputName] [-PassThru] [-NoResponse] [] +Open-OBSInputPropertiesDialog [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Open-OBSSourceProjector.md b/docs/Open-OBSSourceProjector.md index 92480ac2a..5da12b44f 100644 --- a/docs/Open-OBSSourceProjector.md +++ b/docs/Open-OBSSourceProjector.md @@ -1,124 +1,73 @@ Open-OBSSourceProjector ----------------------- - - - ### Synopsis Open-OBSSourceProjector : OpenSourceProjector - - --- - ### Description Opens a projector for a source. Note: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release. - Open-OBSSourceProjector calls the OBS WebSocket with a request of type OpenSourceProjector. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#opensourceprojector](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#opensourceprojector) - - - - --- - ### Parameters #### **SourceName** - Name of the source to open a projector for - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to open a projector for +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MonitorIndex** - Monitor index, use `GetMonitorList` to obtain index - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |2 |true (ByPropertyName)| - - +|`[Double]`|false |3 |true (ByPropertyName)| #### **ProjectorGeometry** - Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|false |3 |true (ByPropertyName)| - - +|`[String]`|false |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Open-OBSSourceProjector [-SourceName] [[-MonitorIndex] ] [[-ProjectorGeometry] ] [-PassThru] [-NoResponse] [] +Open-OBSSourceProjector [[-SourceName] ] [[-SourceUuid] ] [[-MonitorIndex] ] [[-ProjectorGeometry] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Open-OBSVideoMixProjector.md b/docs/Open-OBSVideoMixProjector.md index 4e5a0d4c5..3917c9229 100644 --- a/docs/Open-OBSVideoMixProjector.md +++ b/docs/Open-OBSVideoMixProjector.md @@ -1,17 +1,11 @@ Open-OBSVideoMixProjector ------------------------- - - - ### Synopsis Open-OBSVideoMixProjector : OpenVideoMixProjector - - --- - ### Description Opens a projector for a specific output video mix. @@ -24,106 +18,54 @@ Mix types: Note: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release. - Open-OBSVideoMixProjector calls the OBS WebSocket with a request of type OpenVideoMixProjector. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openvideomixprojector](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openvideomixprojector) - - - - --- - ### Parameters #### **VideoMixType** - Type of mix to open - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **MonitorIndex** - Monitor index, use `GetMonitorList` to obtain index - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **ProjectorGeometry** - Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Open-OBSVideoMixProjector [-VideoMixType] [[-MonitorIndex] ] [[-ProjectorGeometry] ] [-PassThru] [-NoResponse] [] diff --git a/docs/README.md b/docs/README.md index 0749f08b6..b3daeca9c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -178,7 +178,6 @@ Because the obs-websocket cleanly documents it's protocol, most commands in obs- * [Full List Of Commands](obs-powershell-commands.md) * [Full list of websocket commands](obs-powershell-websocket-commands.md) - ## Depdendencies To use obs-powershell, you'll need OBS and PowerShell Core. You can run both of these on any operating system. @@ -190,5 +189,6 @@ Some commands in obs-powershell will not work unless you have additional softwar |Commands|Dependency| |-|-| |Add/Set-OBSVLCSource|[VLC](https://www.videolan.org/vlc/)| -|Add/Set-OBS3DFilter |[VLC](https://obsproject.com/forum/resources/3d-effect.1692/)| +|Add/Set-OBS3DFilter |[3D Effect](https://obsproject.com/forum/resources/3d-effect.1692/)| |Add/Set-OBSShaderFilter|[obs-shaderfilter 2.0+](https://obsproject.com/forum/resources/obs-shaderfilter.1736/) +|Add/Set/Get-OBSWaveformSource|[waveform source](https://obsproject.com/forum/resources/waveform.1423/) diff --git a/docs/Receive-OBS.md b/docs/Receive-OBS.md index a760059aa..3f8f6fab6 100644 --- a/docs/Receive-OBS.md +++ b/docs/Receive-OBS.md @@ -1,108 +1,56 @@ Receive-OBS ----------- - - - ### Synopsis Receives data from OBS - - --- - ### Description Receives responses from the OBS WebSocket - - --- - ### Parameters #### **MessageData** - The message data that has been received - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|--------------| |`[Object]`|false |named |true (ByValue)| - - #### **WaitForReponse** - If set will wait for a response from the message and expand the results. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - #### **SendEvent** - If set, will responsd to known events, like 'hello', and resend other events as PowerShell events - - - - - |Type |Required|Position|PipelineInput|Aliases| |----------|--------|--------|-------------|-------| |`[Switch]`|false |named |false |Resend | - - #### **WebSocketURI** - The OBS websocket URL. If not provided, this will default to loopback on port 4455. - - - - - |Type |Required|Position|PipelineInput|Aliases | |-------|--------|--------|-------------|------------| |`[Uri]`|true |named |false |WebSocketURL| - - #### **WebSocketToken** - A randomly generated password used to connect to OBS. You can see the websocket password in Tools -> obs-websocket settings -> show connect info - - - - - |Type |Required|Position|PipelineInput|Aliases | |----------|--------|--------|-------------|-----------------| |`[String]`|true |named |false |WebSocketPassword| - - - - --- - ### Syntax ```PowerShell Receive-OBS [-MessageData ] [-WaitForReponse] [] diff --git a/docs/Remove-OBS.md b/docs/Remove-OBS.md index a011974cc..70ad9c952 100644 --- a/docs/Remove-OBS.md +++ b/docs/Remove-OBS.md @@ -1,72 +1,46 @@ Remove-OBS ---------- - - - ### Synopsis Remove OBS - - --- - ### Description Removes items from OBS - - --- - ### Related Links * [Remove-OBSInput](Remove-OBSInput.md) - - * [Remove-OBSScene](Remove-OBSScene.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Remove-OBS -SourceName "foo" ``` +> EXAMPLE 2 -#### EXAMPLE 2 ```PowerShell Remove-OBS -SceneName "bar" ``` - - --- - ### Parameters #### **ItemName** - The name of the item we want to remove - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|--------------------------------------| |`[Object]`|true |1 |true (ByPropertyName)|SourceName
InputName
SceneName| - - #### **WhatIf** -WhatIf is an automatic variable that is created when a command has ```[CmdletBinding(SupportsShouldProcess)]```. -WhatIf is used to see what would happen, or return operations without executing them @@ -76,14 +50,10 @@ The name of the item we want to remove If you pass ```-Confirm:$false``` you will not be prompted. - If the command sets a ```[ConfirmImpact("Medium")]``` which is lower than ```$confirmImpactPreference```, you will not be prompted unless -Confirm is passed. - - --- - ### Syntax ```PowerShell Remove-OBS [-ItemName] [-WhatIf] [-Confirm] [] diff --git a/docs/Remove-OBSEffect.md b/docs/Remove-OBSEffect.md index 7193c44a3..169ec5676 100644 --- a/docs/Remove-OBSEffect.md +++ b/docs/Remove-OBSEffect.md @@ -1,65 +1,37 @@ Remove-OBSEffect ---------------- - - - ### Synopsis Removes OBS Effects - - --- - ### Description Removes effects currently loaded into OBS-PowerShell. - - --- - ### Related Links * [Get-OBSEffect](Get-OBSEffect.md) - - - - --- - ### Parameters #### **EffectName** - The name of the effect. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[String]`|true |1 |true (ByPropertyName)|Name | - - - - --- - ### Notes This removes effects from memory, but will not delete effect commands or remove effect scripts. - - --- - ### Syntax ```PowerShell Remove-OBSEffect [-EffectName] [] diff --git a/docs/Remove-OBSInput.md b/docs/Remove-OBSInput.md index 36f82cd55..cded200d3 100644 --- a/docs/Remove-OBSInput.md +++ b/docs/Remove-OBSInput.md @@ -1,94 +1,59 @@ Remove-OBSInput --------------- - - - ### Synopsis Remove-OBSInput : RemoveInput - - --- - ### Description Removes an existing input. Note: Will immediately remove all associated scene items. - Remove-OBSInput calls the OBS WebSocket with a request of type RemoveInput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeinput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeinput) - - - - --- - ### Parameters #### **InputName** - Name of the input to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to remove +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Remove-OBSInput [-InputName] [-PassThru] [-NoResponse] [] +Remove-OBSInput [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Remove-OBSProfile.md b/docs/Remove-OBSProfile.md index 38a1f935a..162e1299f 100644 --- a/docs/Remove-OBSProfile.md +++ b/docs/Remove-OBSProfile.md @@ -1,91 +1,49 @@ Remove-OBSProfile ----------------- - - - ### Synopsis Remove-OBSProfile : RemoveProfile - - --- - ### Description Removes a profile. If the current profile is chosen, it will change to a different profile first. - Remove-OBSProfile calls the OBS WebSocket with a request of type RemoveProfile. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeprofile](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeprofile) - - - - --- - ### Parameters #### **ProfileName** - Name of the profile to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Remove-OBSProfile [-ProfileName] [-PassThru] [-NoResponse] [] diff --git a/docs/Remove-OBSScene.md b/docs/Remove-OBSScene.md index a0e7db5f7..3878cd7d3 100644 --- a/docs/Remove-OBSScene.md +++ b/docs/Remove-OBSScene.md @@ -1,92 +1,57 @@ Remove-OBSScene --------------- - - - ### Synopsis Remove-OBSScene : RemoveScene - - --- - ### Description Removes a scene from OBS. - Remove-OBSScene calls the OBS WebSocket with a request of type RemoveScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removescene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removescene) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to remove +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Remove-OBSScene [-SceneName] [-PassThru] [-NoResponse] [] +Remove-OBSScene [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Remove-OBSSceneItem.md b/docs/Remove-OBSSceneItem.md index 2744195dd..2b87abd7a 100644 --- a/docs/Remove-OBSSceneItem.md +++ b/docs/Remove-OBSSceneItem.md @@ -1,109 +1,66 @@ Remove-OBSSceneItem ------------------- - - - ### Synopsis Remove-OBSSceneItem : RemoveSceneItem - - --- - ### Description Removes a scene item from a scene. Scenes only - Remove-OBSSceneItem calls the OBS WebSocket with a request of type RemoveSceneItem. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesceneitem](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesceneitem) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Remove-OBSSceneItem [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Remove-OBSSceneItem [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Remove-OBSSourceFilter.md b/docs/Remove-OBSSourceFilter.md index a3f2e266a..30566c234 100644 --- a/docs/Remove-OBSSourceFilter.md +++ b/docs/Remove-OBSSourceFilter.md @@ -1,107 +1,64 @@ Remove-OBSSourceFilter ---------------------- - - - ### Synopsis Remove-OBSSourceFilter : RemoveSourceFilter - - --- - ### Description Removes a filter from a source. - Remove-OBSSourceFilter calls the OBS WebSocket with a request of type RemoveSourceFilter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesourcefilter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesourcefilter) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Remove-OBSSourceFilter [-SourceName] [-FilterName] [-PassThru] [-NoResponse] [] +Remove-OBSSourceFilter [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Resume-OBSRecord.md b/docs/Resume-OBSRecord.md index 948447e75..da3266a59 100644 --- a/docs/Resume-OBSRecord.md +++ b/docs/Resume-OBSRecord.md @@ -1,87 +1,51 @@ Resume-OBSRecord ---------------- - - - ### Synopsis Resume-OBSRecord : ResumeRecord - - --- - ### Description Resumes the record output. - Resume-OBSRecord calls the OBS WebSocket with a request of type ResumeRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#resumerecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#resumerecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Resume-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Resume-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/Save-OBSReplayBuffer.md b/docs/Save-OBSReplayBuffer.md index 5df6b5445..5dc9ded51 100644 --- a/docs/Save-OBSReplayBuffer.md +++ b/docs/Save-OBSReplayBuffer.md @@ -1,87 +1,51 @@ Save-OBSReplayBuffer -------------------- - - - ### Synopsis Save-OBSReplayBuffer : SaveReplayBuffer - - --- - ### Description Saves the contents of the replay buffer output. - Save-OBSReplayBuffer calls the OBS WebSocket with a request of type SaveReplayBuffer. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savereplaybuffer](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savereplaybuffer) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Save-OBSReplayBuffer ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Save-OBSReplayBuffer [-PassThru] [-NoResponse] [] diff --git a/docs/Save-OBSSourceScreenshot.md b/docs/Save-OBSSourceScreenshot.md index 91f22c107..7dd274351 100644 --- a/docs/Save-OBSSourceScreenshot.md +++ b/docs/Save-OBSSourceScreenshot.md @@ -1,17 +1,11 @@ Save-OBSSourceScreenshot ------------------------ - - - ### Synopsis Save-OBSSourceScreenshot : SaveSourceScreenshot - - --- - ### Description Saves a screenshot of a source to the filesystem. @@ -21,152 +15,83 @@ If `imageWidth` and `imageHeight` are not specified, the compressed image will u **Compatible with inputs and scenes.** - Save-OBSSourceScreenshot calls the OBS WebSocket with a request of type SaveSourceScreenshot. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savesourcescreenshot](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savesourcescreenshot) - - - - --- - ### Parameters #### **SourceName** - Name of the source to take a screenshot of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to take a screenshot of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **ImageFormat** - Image compression format to use. Use `GetVersion` to get compatible image formats - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **ImageFilePath** - Path to save the screenshot file to. Eg. `C:\Users\user\Desktop\screenshot.png` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **ImageWidth** - Width to scale the screenshot to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |4 |true (ByPropertyName)| - - +|`[Double]`|false |5 |true (ByPropertyName)| #### **ImageHeight** - Height to scale the screenshot to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |5 |true (ByPropertyName)| - - +|`[Double]`|false |6 |true (ByPropertyName)| #### **ImageCompressionQuality** - Compression quality to use. 0 for high compression, 100 for uncompressed. -1 to use "default" (whatever that means, idk) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |6 |true (ByPropertyName)| - - +|`[Double]`|false |7 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Save-OBSSourceScreenshot [-SourceName] [-ImageFormat] [-ImageFilePath] [[-ImageWidth] ] [[-ImageHeight] ] [[-ImageCompressionQuality] ] [-PassThru] [-NoResponse] [] +Save-OBSSourceScreenshot [[-SourceName] ] [[-SourceUuid] ] [-ImageFormat] [-ImageFilePath] [[-ImageWidth] ] [[-ImageHeight] ] [[-ImageCompressionQuality] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Send-OBS.md b/docs/Send-OBS.md index 582b8cd40..f185d9f22 100644 --- a/docs/Send-OBS.md +++ b/docs/Send-OBS.md @@ -1,138 +1,71 @@ Send-OBS -------- - - - ### Synopsis Sends messages to the OBS websocket. - - --- - ### Description Sends one or more messages to the OBS websocket. - - --- - ### Related Links * [Receive-OBS](Receive-OBS.md) - - * [Watch-OBS](Watch-OBS.md) - - - - --- - ### Parameters #### **MessageData** - The data to send to the obs websocket. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|------------------------------|-------| |`[Object]`|false |1 |true (ByValue, ByPropertyName)|Payload| - - #### **StepTime** - If provided, will sleep after each step. If -StepTime is less than 10000 ticks, it will be treated as frames per second. If -SerialFrame was provied, -StepTime will be the number of frames to wait. - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[TimeSpan]`|false |2 |true (ByPropertyName)| - - #### **Parallel** - If set, will process a batch of requests in parallel. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - #### **SerialFrame** - If set, will process a batch of requests in parallel. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - #### **ReceiveBatch** - If set, will receive responses from batches of requests. - - - - - |Type |Required|Position|PipelineInput|Aliases | |----------|--------|--------|-------------|--------------| |`[Switch]`|false |named |false |ReceiveBatches| - - #### **NoResponse** - If set, will never attempt to receive a response. - - - - - |Type |Required|Position|PipelineInput|Aliases | |----------|--------|--------|-------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |false |NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBS [[-MessageData] ] [[-StepTime] ] [-Parallel] [-SerialFrame] [-ReceiveBatch] [-NoResponse] [] diff --git a/docs/Send-OBSCallVendorRequest.md b/docs/Send-OBSCallVendorRequest.md index 91ea9061e..7f3c680ba 100644 --- a/docs/Send-OBSCallVendorRequest.md +++ b/docs/Send-OBSCallVendorRequest.md @@ -1,17 +1,11 @@ Send-OBSCallVendorRequest ------------------------- - - - ### Synopsis Send-OBSCallVendorRequest : CallVendorRequest - - --- - ### Description Call a request registered to a vendor. @@ -19,106 +13,54 @@ Call a request registered to a vendor. A vendor is a unique name registered by a third-party plugin or script, which allows for custom requests and events to be added to obs-websocket. If a plugin or script implements vendor requests or events, documentation is expected to be provided with them. - Send-OBSCallVendorRequest calls the OBS WebSocket with a request of type CallVendorRequest. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#callvendorrequest](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#callvendorrequest) - - - - --- - ### Parameters #### **VendorName** - Name of the vendor to use - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **RequestType** - The request type to call - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **RequestData** - Object containing appropriate request data - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|false |3 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSCallVendorRequest [-VendorName] [-RequestType] [[-RequestData] ] [-PassThru] [-NoResponse] [] diff --git a/docs/Send-OBSCustomEvent.md b/docs/Send-OBSCustomEvent.md index 4a563af3c..7c1e646db 100644 --- a/docs/Send-OBSCustomEvent.md +++ b/docs/Send-OBSCustomEvent.md @@ -1,91 +1,49 @@ Send-OBSCustomEvent ------------------- - - - ### Synopsis Send-OBSCustomEvent : BroadcastCustomEvent - - --- - ### Description Broadcasts a `CustomEvent` to all WebSocket clients. Receivers are clients which are identified and subscribed. - Send-OBSCustomEvent calls the OBS WebSocket with a request of type BroadcastCustomEvent. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#broadcastcustomevent](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#broadcastcustomevent) - - - - --- - ### Parameters #### **EventData** - Data payload to emit to all receivers - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSCustomEvent [-EventData] [-PassThru] [-NoResponse] [] diff --git a/docs/Send-OBSOffsetMediaInputCursor.md b/docs/Send-OBSOffsetMediaInputCursor.md index d01fa169f..339782adb 100644 --- a/docs/Send-OBSOffsetMediaInputCursor.md +++ b/docs/Send-OBSOffsetMediaInputCursor.md @@ -1,109 +1,66 @@ Send-OBSOffsetMediaInputCursor ------------------------------ - - - ### Synopsis Send-OBSOffsetMediaInputCursor : OffsetMediaInputCursor - - --- - ### Description Offsets the current cursor position of a media input by the specified value. This request does not perform bounds checking of the cursor position. - Send-OBSOffsetMediaInputCursor calls the OBS WebSocket with a request of type OffsetMediaInputCursor. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#offsetmediainputcursor](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#offsetmediainputcursor) - - - - --- - ### Parameters #### **InputName** - Name of the media input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the media input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MediaCursorOffset** - Value to offset the current cursor position by - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Send-OBSOffsetMediaInputCursor [-InputName] [-MediaCursorOffset] [-PassThru] [-NoResponse] [] +Send-OBSOffsetMediaInputCursor [[-InputName] ] [[-InputUuid] ] [-MediaCursorOffset] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Send-OBSPauseRecord.md b/docs/Send-OBSPauseRecord.md index 6e42b42e4..611a2fec4 100644 --- a/docs/Send-OBSPauseRecord.md +++ b/docs/Send-OBSPauseRecord.md @@ -1,87 +1,51 @@ Send-OBSPauseRecord ------------------- - - - ### Synopsis Send-OBSPauseRecord : PauseRecord - - --- - ### Description Pauses the record output. - Send-OBSPauseRecord calls the OBS WebSocket with a request of type PauseRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pauserecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pauserecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Send-OBSPauseRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSPauseRecord [-PassThru] [-NoResponse] [] diff --git a/docs/Send-OBSPressInputPropertiesButton.md b/docs/Send-OBSPressInputPropertiesButton.md index 98034b9a6..11a2227c5 100644 --- a/docs/Send-OBSPressInputPropertiesButton.md +++ b/docs/Send-OBSPressInputPropertiesButton.md @@ -1,17 +1,11 @@ Send-OBSPressInputPropertiesButton ---------------------------------- - - - ### Synopsis Send-OBSPressInputPropertiesButton : PressInputPropertiesButton - - --- - ### Description Presses a button in the properties of an input. @@ -22,92 +16,55 @@ Some known `propertyName` values are: Note: Use this in cases where there is a button in the properties of an input that cannot be accessed in any other way. For example, browser sources, where there is a refresh button. - Send-OBSPressInputPropertiesButton calls the OBS WebSocket with a request of type PressInputPropertiesButton. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pressinputpropertiesbutton](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pressinputpropertiesbutton) - - - - --- - ### Parameters #### **InputName** - Name of the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PropertyName** - Name of the button property to press - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Send-OBSPressInputPropertiesButton [-InputName] [-PropertyName] [-PassThru] [-NoResponse] [] +Send-OBSPressInputPropertiesButton [[-InputName] ] [[-InputUuid] ] [-PropertyName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Send-OBSSleep.md b/docs/Send-OBSSleep.md index 1a6166d3d..d6580af96 100644 --- a/docs/Send-OBSSleep.md +++ b/docs/Send-OBSSleep.md @@ -1,106 +1,56 @@ Send-OBSSleep ------------- - - - ### Synopsis Send-OBSSleep : Sleep - - --- - ### Description Sleeps for a time duration or number of frames. Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`. - Send-OBSSleep calls the OBS WebSocket with a request of type Sleep. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sleep](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sleep) - - - - --- - ### Parameters #### **SleepMillis** - Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **SleepFrames** - Number of frames to sleep for (if `SERIAL_FRAME` mode) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSSleep [[-SleepMillis] ] [[-SleepFrames] ] [-PassThru] [-NoResponse] [] diff --git a/docs/Send-OBSStreamCaption.md b/docs/Send-OBSStreamCaption.md index 57631ff1b..ffa68b7ed 100644 --- a/docs/Send-OBSStreamCaption.md +++ b/docs/Send-OBSStreamCaption.md @@ -1,91 +1,49 @@ Send-OBSStreamCaption --------------------- - - - ### Synopsis Send-OBSStreamCaption : SendStreamCaption - - --- - ### Description Sends CEA-608 caption text over the stream output. - Send-OBSStreamCaption calls the OBS WebSocket with a request of type SendStreamCaption. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sendstreamcaption](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sendstreamcaption) - - - - --- - ### Parameters #### **CaptionText** - Caption text - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSStreamCaption [-CaptionText] [-PassThru] [-NoResponse] [] diff --git a/docs/Send-OBSTriggerHotkeyByKeySequence.md b/docs/Send-OBSTriggerHotkeyByKeySequence.md index 130507925..3162292ea 100644 --- a/docs/Send-OBSTriggerHotkeyByKeySequence.md +++ b/docs/Send-OBSTriggerHotkeyByKeySequence.md @@ -1,166 +1,86 @@ Send-OBSTriggerHotkeyByKeySequence ---------------------------------- - - - ### Synopsis Send-OBSTriggerHotkeyByKeySequence : TriggerHotkeyByKeySequence - - --- - ### Description Triggers a hotkey using a sequence of keys. +Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. Send-OBSTriggerHotkeyByKeySequence calls the OBS WebSocket with a request of type TriggerHotkeyByKeySequence. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybykeysequence](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybykeysequence) - - - - --- - ### Parameters #### **KeyId** - The OBS key ID to use. See https://github.com/obsproject/obs-studio/blob/master/libobs/obs-hotkeys.h - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |1 |true (ByPropertyName)| - - #### **KeyModifiers** - Object containing key modifiers to apply - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|false |2 |true (ByPropertyName)| - - #### **KeyModifiersshift** - Press Shift - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **KeyModifierscontrol** - Press CTRL - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **KeyModifiersalt** - Press ALT - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **KeyModifierscommand** - Press CMD (Mac) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSTriggerHotkeyByKeySequence [[-KeyId] ] [[-KeyModifiers] ] [-KeyModifiersshift] [-KeyModifierscontrol] [-KeyModifiersalt] [-KeyModifierscommand] [-PassThru] [-NoResponse] [] diff --git a/docs/Send-OBSTriggerHotkeyByName.md b/docs/Send-OBSTriggerHotkeyByName.md index f34099e28..314094055 100644 --- a/docs/Send-OBSTriggerHotkeyByName.md +++ b/docs/Send-OBSTriggerHotkeyByName.md @@ -1,92 +1,59 @@ Send-OBSTriggerHotkeyByName --------------------------- - - - ### Synopsis Send-OBSTriggerHotkeyByName : TriggerHotkeyByName - - --- - ### Description -Triggers a hotkey using its name. See `GetHotkeyList` +Triggers a hotkey using its name. See `GetHotkeyList`. +Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. Send-OBSTriggerHotkeyByName calls the OBS WebSocket with a request of type TriggerHotkeyByName. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybyname](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybyname) - - - - --- - ### Parameters #### **HotkeyName** - Name of the hotkey to trigger - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| +#### **ContextName** +Name of context of the hotkey to trigger +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Send-OBSTriggerHotkeyByName [-HotkeyName] [-PassThru] [-NoResponse] [] +Send-OBSTriggerHotkeyByName [-HotkeyName] [[-ContextName] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Send-OBSTriggerMediaInputAction.md b/docs/Send-OBSTriggerMediaInputAction.md index ed2d74dfd..ae9b0b240 100644 --- a/docs/Send-OBSTriggerMediaInputAction.md +++ b/docs/Send-OBSTriggerMediaInputAction.md @@ -1,107 +1,64 @@ Send-OBSTriggerMediaInputAction ------------------------------- - - - ### Synopsis Send-OBSTriggerMediaInputAction : TriggerMediaInputAction - - --- - ### Description Triggers an action on a media input. - Send-OBSTriggerMediaInputAction calls the OBS WebSocket with a request of type TriggerMediaInputAction. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggermediainputaction](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggermediainputaction) - - - - --- - ### Parameters #### **InputName** - Name of the media input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the media input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MediaAction** - Identifier of the `ObsMediaInputAction` enum - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Send-OBSTriggerMediaInputAction [-InputName] [-MediaAction] [-PassThru] [-NoResponse] [] +Send-OBSTriggerMediaInputAction [[-InputName] ] [[-InputUuid] ] [-MediaAction] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Send-OBSTriggerStudioModeTransition.md b/docs/Send-OBSTriggerStudioModeTransition.md index e16570db1..d0d0f73da 100644 --- a/docs/Send-OBSTriggerStudioModeTransition.md +++ b/docs/Send-OBSTriggerStudioModeTransition.md @@ -1,87 +1,51 @@ Send-OBSTriggerStudioModeTransition ----------------------------------- - - - ### Synopsis Send-OBSTriggerStudioModeTransition : TriggerStudioModeTransition - - --- - ### Description Triggers the current scene transition. Same functionality as the `Transition` button in studio mode. - Send-OBSTriggerStudioModeTransition calls the OBS WebSocket with a request of type TriggerStudioModeTransition. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerstudiomodetransition](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerstudiomodetransition) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Send-OBSTriggerStudioModeTransition ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSTriggerStudioModeTransition [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBS3BandEqualizerFilter.md b/docs/Set-OBS3BandEqualizerFilter.md index d85e58239..50fa44f21 100644 --- a/docs/Set-OBS3BandEqualizerFilter.md +++ b/docs/Set-OBS3BandEqualizerFilter.md @@ -1,93 +1,49 @@ Set-OBSEqualizerFilter ---------------------- - - - ### Synopsis Sets a Equalizer filter. - - --- - ### Description Adds or Changes a 3-band Equalizer Filter on an OBS Input. - - --- - ### Parameters #### **Low** - The change in low frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Mid** - The change in mid frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **High** - The change in high frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSEqualizerFilter [[-Low] ] [[-Mid] ] [[-High] ] [-Force] [] diff --git a/docs/Set-OBS3DFilter.md b/docs/Set-OBS3DFilter.md index 47006f4d3..217ea6216 100644 --- a/docs/Set-OBS3DFilter.md +++ b/docs/Set-OBS3DFilter.md @@ -1,184 +1,92 @@ Set-OBS3DFilter --------------- - - - ### Synopsis Sets an OBS 3D Filter. - - --- - ### Description Adds or Changes a 3D Filter on an OBS Input. This requires the [3D Effect](https://github.com/exeldro/obs-3d-effect). - - --- - ### Parameters #### **FieldOfView** - The Field of View - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **RotationX** - The Rotation along the X-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **RotationY** - The Rotation along the Y-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **RotationZ** - The Rotation along the Z-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |4 |true (ByPropertyName)| - - #### **PositionX** - The Position along the X-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |5 |true (ByPropertyName)| - - #### **PositionY** - The Position along the Y-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |6 |true (ByPropertyName)| - - #### **PositionZ** - The Position along the Z-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |7 |true (ByPropertyName)| - - #### **ScaleX** - The scale of the source along the X-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |8 |true (ByPropertyName)| - - #### **ScaleY** - The scale of the source along the Y-axis - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |9 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBS3DFilter [[-FieldOfView] ] [[-RotationX] ] [[-RotationY] ] [[-RotationZ] ] [[-PositionX] ] [[-PositionY] ] [[-PositionZ] ] [[-ScaleX] ] [[-ScaleY] ] [-Force] [] diff --git a/docs/Set-OBS3dSwapTransitionShader.md b/docs/Set-OBS3dSwapTransitionShader.md new file mode 100644 index 000000000..7e003b128 --- /dev/null +++ b/docs/Set-OBS3dSwapTransitionShader.md @@ -0,0 +1,119 @@ +Get-OBS3dSwapTransitionShader +----------------------------- + +### Synopsis +Get-OBS3dSwapTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-Reflection] ] [[-Perspective] ] [[-Depth] ] [[-BackgroundColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BackgroundColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |background_color| + +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **Depth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Perspective** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Reflection** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBS3dSwapTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-Reflection] ] [[-Perspective] ] [[-Depth] ] [[-BackgroundColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSAddShader.md b/docs/Set-OBSAddShader.md new file mode 100644 index 000000000..3273079cd --- /dev/null +++ b/docs/Set-OBSAddShader.md @@ -0,0 +1,77 @@ +Get-OBSAddShader +---------------- + +### Synopsis +Get-OBSAddShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OtherImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |other_image| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAddShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSAlphaBorderShader.md b/docs/Set-OBSAlphaBorderShader.md new file mode 100644 index 000000000..7670315ad --- /dev/null +++ b/docs/Set-OBSAlphaBorderShader.md @@ -0,0 +1,89 @@ +Get-OBSAlphaBorderShader +------------------------ + +### Synopsis +Get-OBSAlphaBorderShader [[-BorderColor] ] [[-BorderThickness] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAlphaBorderShader [[-BorderColor] ] [[-BorderThickness] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSAlphaGamingBentCameraShader.md b/docs/Set-OBSAlphaGamingBentCameraShader.md new file mode 100644 index 000000000..761886161 --- /dev/null +++ b/docs/Set-OBSAlphaGamingBentCameraShader.md @@ -0,0 +1,131 @@ +Get-OBSAlphaGamingBentCameraShader +---------------------------------- + +### Synopsis +Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LeftFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_flip_shadow| + +#### **LeftFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_flip_width| + +#### **LeftSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_side_shadow| + +#### **LeftSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |left_side_size| + +#### **LeftSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_side_width| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RightFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_flip_shadow| + +#### **RightFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_flip_width| + +#### **RightSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_side_shadow| + +#### **RightSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |right_side_size| + +#### **RightSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_side_width| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSAnimatedPathShader.md b/docs/Set-OBSAnimatedPathShader.md new file mode 100644 index 000000000..c2855cb1c --- /dev/null +++ b/docs/Set-OBSAnimatedPathShader.md @@ -0,0 +1,131 @@ +Get-OBSAnimatedPathShader +------------------------- + +### Synopsis +Get-OBSAnimatedPathShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-SpeedPercent] ] [[-PathMap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PathMap** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[String]`|false |named |False |path_map| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **Reverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAnimatedPathShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-SpeedPercent] ] [[-PathMap] ] [-Reverse ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSAnimatedTextureShader.md b/docs/Set-OBSAnimatedTextureShader.md new file mode 100644 index 000000000..3eba62697 --- /dev/null +++ b/docs/Set-OBSAnimatedTextureShader.md @@ -0,0 +1,209 @@ +Get-OBSAnimatedTextureShader +---------------------------- + +### Synopsis +Get-OBSAnimatedTextureShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-AnimationImage] ] [[-ColorizationImage] ] [[-PolarAngle] ] [[-PolarHeight] ] [[-SpeedHorizontalPercent] ] [[-SpeedVerticalPercent] ] [[-TintSpeedHorizontalPercent] ] [[-TintSpeedVerticalPercent] ] [[-Alpha] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Bounce] [-CenterAnimation] [-PolarAnimation] [-UseAnimationImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Alpha** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AnimationImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[String]`|false |named |False |Animation_Image| + +#### **Bounce** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CenterAnimation** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |center_animation| + +#### **ColorizationImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------------| +|`[String]`|false |named |False |Colorization_Image| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PolarAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |polar_angle| + +#### **PolarAnimation** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[Switch]`|false |named |False |polar_animation| + +#### **PolarHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |polar_height| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **Reverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedHorizontalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------------| +|`[Float]`|false |named |False |speed_horizontal_percent| + +#### **SpeedVerticalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |speed_vertical_percent| + +#### **TintSpeedHorizontalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |tint_speed_horizontal_percent| + +#### **TintSpeedVerticalPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------------| +|`[Float]`|false |named |False |tint_speed_vertical_percent| + +#### **UseAnimationImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------------| +|`[Switch]`|false |named |False |Use_Animation_Image_Color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAnimatedTextureShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-AnimationImage] ] [[-ColorizationImage] ] [-Reverse ] [-Bounce ] [-CenterAnimation ] [-PolarAnimation ] [[-PolarAngle] ] [[-PolarHeight] ] [[-SpeedHorizontalPercent] ] [[-SpeedVerticalPercent] ] [[-TintSpeedHorizontalPercent] ] [[-TintSpeedVerticalPercent] ] [[-Alpha] ] [-UseAnimationImageColor ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSAsciiShader.md b/docs/Set-OBSAsciiShader.md new file mode 100644 index 000000000..fb5b5cfa9 --- /dev/null +++ b/docs/Set-OBSAsciiShader.md @@ -0,0 +1,101 @@ +Get-OBSAsciiShader +------------------ + +### Synopsis +Get-OBSAsciiShader [[-Scale] ] [[-BaseColor] ] [[-CharacterSet] ] [[-Note] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Monochrome] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BaseColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |base_color| + +#### **CharacterSet** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |character_set| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Monochrome** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Note** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAsciiShader [[-Scale] ] [[-BaseColor] ] [-Monochrome ] [[-CharacterSet] ] [[-Note] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSAspectRatioShader.md b/docs/Set-OBSAspectRatioShader.md new file mode 100644 index 000000000..06e75861e --- /dev/null +++ b/docs/Set-OBSAspectRatioShader.md @@ -0,0 +1,131 @@ +Get-OBSAspectRatioShader +------------------------ + +### Synopsis +Get-OBSAspectRatioShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSAspectRatioShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSAudioOutputSource.md b/docs/Set-OBSAudioOutputSource.md index f3e8e01a1..28579f10e 100644 --- a/docs/Set-OBSAudioOutputSource.md +++ b/docs/Set-OBSAudioOutputSource.md @@ -1,121 +1,72 @@ Set-OBSAudioOutputSource ------------------------ - - - ### Synopsis Adds or sets an audio output source - - --- - ### Description Adds or sets an audio output source in OBS. This captures the audio that is being sent to an output device. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Add-OBSAudioOutputSource ``` +> EXAMPLE 2 -#### EXAMPLE 2 ```PowerShell Set-OBSAudioOutputSource -AudioDevice Speakers ``` - - --- - ### Parameters #### **AudioDevice** - The name of the audio device. This name or device ID of the audio device that should be captured. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------| |`[String]`|false |1 |true (ByPropertyName)|ItemValue
ItemName
DeviceID| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |2 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "AudioOutput$($AudioDevice)" will be the input source name. - - - - - -|Type |Required|Position|PipelineInput |Aliases | -|----------|--------|--------|---------------------|---------| -|`[String]`|false |3 |true (ByPropertyName)|InputName| - - +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |3 |true (ByPropertyName)|InputName
SourceName| #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Notes This command currently only supports capturing default audio on Windows. To add support for other operating systems, file an issue or open a pull request. - - --- - ### Syntax ```PowerShell Set-OBSAudioOutputSource [[-AudioDevice] ] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Set-OBSBackgroundRemovalShader.md b/docs/Set-OBSBackgroundRemovalShader.md new file mode 100644 index 000000000..a49d8ebfe --- /dev/null +++ b/docs/Set-OBSBackgroundRemovalShader.md @@ -0,0 +1,161 @@ +Get-OBSBackgroundRemovalShader +------------------------------ + +### Synopsis +Get-OBSBackgroundRemovalShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-Target] ] [[-Color] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-Convert709to601] [-Convert601to709] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Convert601to709** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Convert_601to709| + +#### **Convert709to601** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Convert_709to601| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Invert** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Target** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBackgroundRemovalShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-Target] ] [[-Color] ] [[-Opacity] ] [-Invert ] [-Convert709to601 ] [-Convert601to709 ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSBlendOpacityShader.md b/docs/Set-OBSBlendOpacityShader.md new file mode 100644 index 000000000..57f3bbaba --- /dev/null +++ b/docs/Set-OBSBlendOpacityShader.md @@ -0,0 +1,125 @@ +Get-OBSBlendOpacityShader +------------------------- + +### Synopsis +Get-OBSBlendOpacityShader [[-RotationOffset] ] [[-OpacityStartPercent] ] [[-OpacityEndPercent] ] [[-Spread] ] [[-Speed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OpacityEndPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------------| +|`[Float]`|false |named |False |Opacity_End_Percent| + +#### **OpacityStartPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |Opacity_Start_Percent| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Rotational** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RotationOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Rotation_Offset| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Spread** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBlendOpacityShader [-Vertical ] [-Rotational ] [[-RotationOffset] ] [[-OpacityStartPercent] ] [[-OpacityEndPercent] ] [[-Spread] ] [[-Speed] ] [-ApplyToAlphaLayer ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSBlinkShader.md b/docs/Set-OBSBlinkShader.md new file mode 100644 index 000000000..4c2ef4b14 --- /dev/null +++ b/docs/Set-OBSBlinkShader.md @@ -0,0 +1,77 @@ +Get-OBSBlinkShader +------------------ + +### Synopsis +Get-OBSBlinkShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBlinkShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSBloomShader.md b/docs/Set-OBSBloomShader.md new file mode 100644 index 000000000..9508b71d4 --- /dev/null +++ b/docs/Set-OBSBloomShader.md @@ -0,0 +1,95 @@ +Get-OBSBloomShader +------------------ + +### Synopsis +Get-OBSBloomShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AmpFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AngleSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |Angle_Steps| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RadiusSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Radius_Steps| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBloomShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSBorderShader.md b/docs/Set-OBSBorderShader.md new file mode 100644 index 000000000..1a0c697e1 --- /dev/null +++ b/docs/Set-OBSBorderShader.md @@ -0,0 +1,77 @@ +Get-OBSBorderShader +------------------- + +### Synopsis +Get-OBSBorderShader [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBorderShader [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSBoxBlurShader.md b/docs/Set-OBSBoxBlurShader.md new file mode 100644 index 000000000..1de90563b --- /dev/null +++ b/docs/Set-OBSBoxBlurShader.md @@ -0,0 +1,101 @@ +Get-OBSBoxBlurShader +-------------------- + +### Synopsis +Get-OBSBoxBlurShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MaskBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Mask_Bottom| + +#### **MaskLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Mask_Left| + +#### **MaskRight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Mask_Right| + +#### **MaskTop** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Mask_Top| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBoxBlurShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSBrowserSource.md b/docs/Set-OBSBrowserSource.md index e79e8496f..5c94662b2 100644 --- a/docs/Set-OBSBrowserSource.md +++ b/docs/Set-OBSBrowserSource.md @@ -1,214 +1,112 @@ Set-OBSBrowserSource -------------------- - - - ### Synopsis Sets a browser source - - --- - ### Description Adds or changes a browser source in OBS. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSBrowserSource -Uri https://pssvg.start-automating.com/Examples/Stars.svg ``` - - --- - ### Parameters #### **Uri** - The uri or file path to display. If the uri points to a local file, this will be preferred - - - - - |Type |Required|Position|PipelineInput |Aliases | |-------|--------|--------|---------------------|-----------------------------------------------| |`[Uri]`|false |1 |true (ByPropertyName)|Url
Href
Path
FilePath
FullName| - - #### **Width** - The width of the browser source. If none is provided, this will be the output width of the video settings. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |2 |true (ByPropertyName)| - - #### **Height** - The width of the browser source. If none is provided, this will be the output height of the video settings. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |3 |true (ByPropertyName)| - - #### **CSS** - The css style used to render the browser page. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |4 |true (ByPropertyName)| - - #### **ShutdownWhenHidden** - If set, the browser source will shutdown when it is hidden - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **RestartWhenActived** - If set, the browser source will restart when it is activated. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **RerouteAudio** - If set, audio from the browser source will be rerouted into OBS. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FramesPerSecond** - If provided, the browser source will render at a custom frame rate. - - - - - |Type |Required|Position|PipelineInput |Aliases| |---------|--------|--------|---------------------|-------| |`[Int32]`|false |5 |true (ByPropertyName)|FPS | - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |6 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - -|Type |Required|Position|PipelineInput | -|----------|--------|--------|---------------------| -|`[String]`|false |7 |true (ByPropertyName)| - - +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |7 |true (ByPropertyName)|InputName
SourceName| #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSBrowserSource [[-Uri] ] [[-Width] ] [[-Height] ] [[-CSS] ] [-ShutdownWhenHidden] [-RestartWhenActived] [-RerouteAudio] [[-FramesPerSecond] ] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Set-OBSBulgePinchShader.md b/docs/Set-OBSBulgePinchShader.md new file mode 100644 index 000000000..a0c99f99e --- /dev/null +++ b/docs/Set-OBSBulgePinchShader.md @@ -0,0 +1,107 @@ +Get-OBSBulgePinchShader +----------------------- + +### Synopsis +Get-OBSBulgePinchShader [[-Radius] ] [[-Magnitude] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Magnitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBulgePinchShader [[-Radius] ] [[-Magnitude] ] [[-CenterX] ] [[-CenterY] ] [-Animate ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSBurnShader.md b/docs/Set-OBSBurnShader.md new file mode 100644 index 000000000..db2f92fb7 --- /dev/null +++ b/docs/Set-OBSBurnShader.md @@ -0,0 +1,137 @@ +Get-OBSBurnShader +----------------- + +### Synopsis +Get-OBSBurnShader [[-BurnGradient] ] [[-Speed] ] [[-GradientAdjust] ] [[-DissolveValue] ] [[-SmokeHorizonalSpeed] ] [[-SmokeVerticalSpeed] ] [[-Iterations] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-ApplySmoke] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Animated** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ApplySmoke** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |Apply_Smoke| + +#### **ApplyToChannel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Apply_to_Channel| + +#### **BurnGradient** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |Burn_Gradient| + +#### **DissolveValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Dissolve_Value| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientAdjust** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Gradient_Adjust| + +#### **Iterations** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SmokeHorizonalSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |Smoke_Horizonal_Speed| + +#### **SmokeVerticalSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |Smoke_Vertical_Speed| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSBurnShader [[-BurnGradient] ] [[-Speed] ] [[-GradientAdjust] ] [[-DissolveValue] ] [-Animated ] [-ApplyToChannel ] [-ApplySmoke ] [[-SmokeHorizonalSpeed] ] [[-SmokeVerticalSpeed] ] [[-Iterations] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSCartoonShader.md b/docs/Set-OBSCartoonShader.md new file mode 100644 index 000000000..14b56e4cb --- /dev/null +++ b/docs/Set-OBSCartoonShader.md @@ -0,0 +1,143 @@ +Get-OBSCartoonShader +-------------------- + +### Synopsis +Get-OBSCartoonShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-HueSteps] ] [[-ValueSteps] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HueSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |hue_steps| + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ValueSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |value_steps| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCartoonShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-HueSteps] ] [[-ValueSteps] ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSCellShadedShader.md b/docs/Set-OBSCellShadedShader.md new file mode 100644 index 000000000..004a4eeca --- /dev/null +++ b/docs/Set-OBSCellShadedShader.md @@ -0,0 +1,95 @@ +Get-OBSCellShadedShader +----------------------- + +### Synopsis +Get-OBSCellShadedShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AmpFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AngleSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |Angle_Steps| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RadiusSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Radius_Steps| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCellShadedShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSChromaUVDistortionShader.md b/docs/Set-OBSChromaUVDistortionShader.md new file mode 100644 index 000000000..036fe326d --- /dev/null +++ b/docs/Set-OBSChromaUVDistortionShader.md @@ -0,0 +1,89 @@ +Get-OBSChromaUVDistortionShader +------------------------------- + +### Synopsis +Get-OBSChromaUVDistortionShader [[-Distortion] ] [[-Amplitude] ] [[-Chroma] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Amplitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Chroma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Distortion** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSChromaUVDistortionShader [[-Distortion] ] [[-Amplitude] ] [[-Chroma] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSChromaticAberrationShader.md b/docs/Set-OBSChromaticAberrationShader.md new file mode 100644 index 000000000..16ec8a6c1 --- /dev/null +++ b/docs/Set-OBSChromaticAberrationShader.md @@ -0,0 +1,119 @@ +Get-OBSChromaticAberrationShader +-------------------------------- + +### Synopsis +Get-OBSChromaticAberrationShader [[-Power] ] [[-Gamma] ] [[-NumIter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DistortRadial] [-DistortBarrel] [-OffsetSpectrumYcgco] [-OffsetSpectrumYuv] [-UseRandom] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DistortBarrel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |distort_barrel| + +#### **DistortRadial** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |distort_radial| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Gamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NumIter** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------| +|`[Int]`|false |named |False |num_iter| + +#### **OffsetSpectrumYcgco** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------------| +|`[Switch]`|false |named |False |offset_spectrum_ycgco| + +#### **OffsetSpectrumYuv** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |offset_spectrum_yuv| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseRandom** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |use_random| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSChromaticAberrationShader [[-Power] ] [[-Gamma] ] [[-NumIter] ] [-DistortRadial ] [-DistortBarrel ] [-OffsetSpectrumYcgco ] [-OffsetSpectrumYuv ] [-UseRandom ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSCircleMaskFilterShader.md b/docs/Set-OBSCircleMaskFilterShader.md new file mode 100644 index 000000000..510c1b8cc --- /dev/null +++ b/docs/Set-OBSCircleMaskFilterShader.md @@ -0,0 +1,107 @@ +Get-OBSCircleMaskFilterShader +----------------------------- + +### Synopsis +Get-OBSCircleMaskFilterShader [[-Radius] ] [[-CircleOffsetX] ] [[-CircleOffsetY] ] [[-SourceOffsetX] ] [[-SourceOffsetY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Antialiasing] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Antialiasing** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CircleOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Circle_Offset_X| + +#### **CircleOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Circle_Offset_Y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SourceOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Source_Offset_X| + +#### **SourceOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Source_Offset_Y| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCircleMaskFilterShader [[-Radius] ] [[-CircleOffsetX] ] [[-CircleOffsetY] ] [[-SourceOffsetX] ] [[-SourceOffsetY] ] [-Antialiasing ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSClockAnalogShader.md b/docs/Set-OBSClockAnalogShader.md new file mode 100644 index 000000000..2cf894bac --- /dev/null +++ b/docs/Set-OBSClockAnalogShader.md @@ -0,0 +1,137 @@ +Get-OBSClockAnalogShader +------------------------ + +### Synopsis +Get-OBSClockAnalogShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-HourHandleColor] ] [[-MinuteHandleColor] ] [[-SecondHandleColor] ] [[-OutlineColor] ] [[-TopLineColor] ] [[-BackgroundColor] ] [[-TimeOffsetHours] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BackgroundColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|----------------| +|`[System.Single[]]`|false |named |False |background_color| + +#### **CurrentTimeHour** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |current_time_hour| + +#### **CurrentTimeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_min| + +#### **CurrentTimeMs** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |current_time_ms| + +#### **CurrentTimeSec** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_sec| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HourHandleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |hour_handle_color| + +#### **MinuteHandleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-------------------| +|`[System.Single[]]`|false |named |False |minute_handle_color| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OutlineColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-------------| +|`[System.Single[]]`|false |named |False |outline_color| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SecondHandleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-------------------| +|`[System.Single[]]`|false |named |False |second_handle_color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeOffsetHours** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |time_offset_hours| + +#### **TopLineColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------------| +|`[System.Single[]]`|false |named |False |top_line_color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSClockAnalogShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-HourHandleColor] ] [[-MinuteHandleColor] ] [[-SecondHandleColor] ] [[-OutlineColor] ] [[-TopLineColor] ] [[-BackgroundColor] ] [[-TimeOffsetHours] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSClockDigitalLedShader.md b/docs/Set-OBSClockDigitalLedShader.md new file mode 100644 index 000000000..5c31ba02b --- /dev/null +++ b/docs/Set-OBSClockDigitalLedShader.md @@ -0,0 +1,131 @@ +Get-OBSClockDigitalLedShader +---------------------------- + +### Synopsis +Get-OBSClockDigitalLedShader [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-LedColor] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowMatrix] [-ShowOff] [-Ampm] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Ampm** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CurrentTimeHour** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |current_time_hour| + +#### **CurrentTimeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_min| + +#### **CurrentTimeSec** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_sec| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LedColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetHours** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **OffsetSeconds** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShowMatrix** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShowOff** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeMode** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSClockDigitalLedShader [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [-ShowMatrix ] [-ShowOff ] [-Ampm ] [[-LedColor] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSClockDigitalNixieShader.md b/docs/Set-OBSClockDigitalNixieShader.md new file mode 100644 index 000000000..5af84a4da --- /dev/null +++ b/docs/Set-OBSClockDigitalNixieShader.md @@ -0,0 +1,143 @@ +Get-OBSClockDigitalNixieShader +------------------------------ + +### Synopsis +Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-Corecolor] ] [[-Halocolor] ] [[-Flarecolor] ] [[-Anodecolor] ] [[-Anodehighlightscolor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Anodecolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Anodehighlightscolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Corecolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **CurrentTimeHour** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |current_time_hour| + +#### **CurrentTimeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_min| + +#### **CurrentTimeMs** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |current_time_ms| + +#### **CurrentTimeSec** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |current_time_sec| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Flarecolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Halocolor** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetHours** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **OffsetSeconds** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeMode** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-Corecolor] ] [[-Halocolor] ] [[-Flarecolor] ] [[-Anodecolor] ] [[-Anodehighlightscolor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSColorCorrectionFilter.md b/docs/Set-OBSColorCorrectionFilter.md index f802f0fdd..5bec94587 100644 --- a/docs/Set-OBSColorCorrectionFilter.md +++ b/docs/Set-OBSColorCorrectionFilter.md @@ -1,17 +1,11 @@ Set-OBSColorFilter ------------------ - - - ### Synopsis Sets a color filter - - --- - ### Description Adds or Changes a Color Correction Filter on an OBS Input. @@ -25,165 +19,85 @@ This allows you to: * Multiply pixels by a color * Add a color to all pixels - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri .\Assets\obs-powershell-animated-icon.svg | Set-OBSColorFilter -Opacity .5 ``` - - --- - ### Parameters #### **Opacity** - The opacity, as a number between 0 and 1. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Brightness** - The brightness, as a number between -1 and 1. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **Contrast** - The constrast, as a number between -4 and 4. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **Gamma** - The gamma correction, as a number between -3 and 3. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |4 |true (ByPropertyName)| - - #### **Saturation** - The saturation, as a number between -1 and 5. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |5 |true (ByPropertyName)| - - #### **Hue** - The change in hue, as represented in degrees around a color cicrle - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Double]`|false |6 |true (ByPropertyName)|Spin | - - #### **MultiplyColor** - Multiply this color by all pixels within the source. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |7 |true (ByPropertyName)| - - #### **AddColor** - Add all this color to all pixels within the source. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |8 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSColorFilter [[-Opacity] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Saturation] ] [[-Hue] ] [[-MultiplyColor] ] [[-AddColor] ] [-Force] [] diff --git a/docs/Set-OBSColorDepthShader.md b/docs/Set-OBSColorDepthShader.md new file mode 100644 index 000000000..7a2c10ffb --- /dev/null +++ b/docs/Set-OBSColorDepthShader.md @@ -0,0 +1,83 @@ +Get-OBSColorDepthShader +----------------------- + +### Synopsis +Get-OBSColorDepthShader [[-ColorDepth] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ColorDepth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixelSize** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSColorDepthShader [[-ColorDepth] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSColorFilter.md b/docs/Set-OBSColorFilter.md index f802f0fdd..5bec94587 100644 --- a/docs/Set-OBSColorFilter.md +++ b/docs/Set-OBSColorFilter.md @@ -1,17 +1,11 @@ Set-OBSColorFilter ------------------ - - - ### Synopsis Sets a color filter - - --- - ### Description Adds or Changes a Color Correction Filter on an OBS Input. @@ -25,165 +19,85 @@ This allows you to: * Multiply pixels by a color * Add a color to all pixels - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri .\Assets\obs-powershell-animated-icon.svg | Set-OBSColorFilter -Opacity .5 ``` - - --- - ### Parameters #### **Opacity** - The opacity, as a number between 0 and 1. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Brightness** - The brightness, as a number between -1 and 1. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **Contrast** - The constrast, as a number between -4 and 4. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **Gamma** - The gamma correction, as a number between -3 and 3. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |4 |true (ByPropertyName)| - - #### **Saturation** - The saturation, as a number between -1 and 5. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |5 |true (ByPropertyName)| - - #### **Hue** - The change in hue, as represented in degrees around a color cicrle - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Double]`|false |6 |true (ByPropertyName)|Spin | - - #### **MultiplyColor** - Multiply this color by all pixels within the source. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |7 |true (ByPropertyName)| - - #### **AddColor** - Add all this color to all pixels within the source. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |8 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSColorFilter [[-Opacity] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Saturation] ] [[-Hue] ] [[-MultiplyColor] ] [[-AddColor] ] [-Force] [] diff --git a/docs/Set-OBSColorGradeFilterShader.md b/docs/Set-OBSColorGradeFilterShader.md new file mode 100644 index 000000000..c6a05c9a1 --- /dev/null +++ b/docs/Set-OBSColorGradeFilterShader.md @@ -0,0 +1,101 @@ +Get-OBSColorGradeFilterShader +----------------------------- + +### Synopsis +Get-OBSColorGradeFilterShader [[-Notes] ] [[-Lut] ] [[-LutAmountPercent] ] [[-LutScalePercent] ] [[-LutOffsetPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Lut** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LutAmountPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------| +|`[Int]`|false |named |False |lut_amount_percent| + +#### **LutOffsetPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------| +|`[Int]`|false |named |False |lut_offset_percent| + +#### **LutScalePercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |lut_scale_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSColorGradeFilterShader [[-Notes] ] [[-Lut] ] [[-LutAmountPercent] ] [[-LutScalePercent] ] [[-LutOffsetPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSColorSource.md b/docs/Set-OBSColorSource.md index 2843dd802..d1f7065f0 100644 --- a/docs/Set-OBSColorSource.md +++ b/docs/Set-OBSColorSource.md @@ -1,105 +1,57 @@ Set-OBSColorSource ------------------ - - - ### Synopsis Adds a color source - - --- - ### Description Adds a color source to OBS. This displays a single 32-bit color (RGBA). - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Parameters #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |1 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |2 |true (ByPropertyName)|InputName| - - #### **Color** - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSColorSource [[-Scene] ] [[-Name] ] [[-Color] ] [-Force] [] diff --git a/docs/Set-OBSCornerPinShader.md b/docs/Set-OBSCornerPinShader.md new file mode 100644 index 000000000..6fc77671d --- /dev/null +++ b/docs/Set-OBSCornerPinShader.md @@ -0,0 +1,125 @@ +Get-OBSCornerPinShader +---------------------- + +### Synopsis +Get-OBSCornerPinShader [[-TopLeftX] ] [[-TopLeftY] ] [[-TopRightX] ] [[-TopRightY] ] [[-BottomLeftX] ] [[-BottomLeftY] ] [[-BottomRightX] ] [[-BottomRightY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AntialiasEdges] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AntialiasEdges** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[Switch]`|false |named |False |Antialias_Edges| + +#### **BottomLeftX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Bottom_Left_X| + +#### **BottomLeftY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Bottom_Left_Y| + +#### **BottomRightX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Bottom_Right_X| + +#### **BottomRightY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Bottom_Right_Y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TopLeftX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Top_Left_X| + +#### **TopLeftY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Top_Left_Y| + +#### **TopRightX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Top_Right_X| + +#### **TopRightY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Top_Right_Y| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCornerPinShader [-AntialiasEdges ] [[-TopLeftX] ] [[-TopLeftY] ] [[-TopRightX] ] [[-TopRightY] ] [[-BottomLeftX] ] [[-BottomLeftY] ] [[-BottomRightX] ] [[-BottomRightY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSCrtCurvatureShader.md b/docs/Set-OBSCrtCurvatureShader.md new file mode 100644 index 000000000..ab0280728 --- /dev/null +++ b/docs/Set-OBSCrtCurvatureShader.md @@ -0,0 +1,89 @@ +Get-OBSCrtCurvatureShader +------------------------- + +### Synopsis +Get-OBSCrtCurvatureShader [[-Strength] ] [[-Border] ] [[-Feathering] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Border** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Feathering** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCrtCurvatureShader [[-Strength] ] [[-Border] ] [[-Feathering] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSCurrentPreviewScene.md b/docs/Set-OBSCurrentPreviewScene.md index 2aaf43f41..52bf3a81e 100644 --- a/docs/Set-OBSCurrentPreviewScene.md +++ b/docs/Set-OBSCurrentPreviewScene.md @@ -1,94 +1,59 @@ Set-OBSCurrentPreviewScene -------------------------- - - - ### Synopsis Set-OBSCurrentPreviewScene : SetCurrentPreviewScene - - --- - ### Description Sets the current preview scene. Only available when studio mode is enabled. - Set-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type SetCurrentPreviewScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentpreviewscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentpreviewscene) - - - - --- - ### Parameters #### **SceneName** - -Scene to set as the current preview scene - - - - - +Scene name to set as the current preview scene |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +Scene UUID to set as the current preview scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSCurrentPreviewScene [-SceneName] [-PassThru] [-NoResponse] [] +Set-OBSCurrentPreviewScene [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSCurrentProfile.md b/docs/Set-OBSCurrentProfile.md index 454876e68..1fefa5ddd 100644 --- a/docs/Set-OBSCurrentProfile.md +++ b/docs/Set-OBSCurrentProfile.md @@ -1,91 +1,49 @@ Set-OBSCurrentProfile --------------------- - - - ### Synopsis Set-OBSCurrentProfile : SetCurrentProfile - - --- - ### Description Switches to a profile. - Set-OBSCurrentProfile calls the OBS WebSocket with a request of type SetCurrentProfile. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprofile](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprofile) - - - - --- - ### Parameters #### **ProfileName** - Name of the profile to switch to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentProfile [-ProfileName] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSCurrentProgramScene.md b/docs/Set-OBSCurrentProgramScene.md index 709400d67..75fc21e06 100644 --- a/docs/Set-OBSCurrentProgramScene.md +++ b/docs/Set-OBSCurrentProgramScene.md @@ -1,92 +1,57 @@ Set-OBSCurrentProgramScene -------------------------- - - - ### Synopsis Set-OBSCurrentProgramScene : SetCurrentProgramScene - - --- - ### Description Sets the current program scene. - Set-OBSCurrentProgramScene calls the OBS WebSocket with a request of type SetCurrentProgramScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprogramscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprogramscene) - - - - --- - ### Parameters #### **SceneName** - -Scene to set as the current program scene - - - - - +Scene name to set as the current program scene |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +Scene UUID to set as the current program scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSCurrentProgramScene [-SceneName] [-PassThru] [-NoResponse] [] +Set-OBSCurrentProgramScene [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSCurrentSceneCollection.md b/docs/Set-OBSCurrentSceneCollection.md index 80801e062..305645d77 100644 --- a/docs/Set-OBSCurrentSceneCollection.md +++ b/docs/Set-OBSCurrentSceneCollection.md @@ -1,93 +1,51 @@ Set-OBSCurrentSceneCollection ----------------------------- - - - ### Synopsis Set-OBSCurrentSceneCollection : SetCurrentSceneCollection - - --- - ### Description Switches to a scene collection. Note: This will block until the collection has finished changing. - Set-OBSCurrentSceneCollection calls the OBS WebSocket with a request of type SetCurrentSceneCollection. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenecollection](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenecollection) - - - - --- - ### Parameters #### **SceneCollectionName** - Name of the scene collection to switch to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentSceneCollection [-SceneCollectionName] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSCurrentSceneTransition.md b/docs/Set-OBSCurrentSceneTransition.md index ba9b67115..a430a405f 100644 --- a/docs/Set-OBSCurrentSceneTransition.md +++ b/docs/Set-OBSCurrentSceneTransition.md @@ -1,93 +1,51 @@ Set-OBSCurrentSceneTransition ----------------------------- - - - ### Synopsis Set-OBSCurrentSceneTransition : SetCurrentSceneTransition - - --- - ### Description Sets the current scene transition. Small note: While the namespace of scene transitions is generally unique, that uniqueness is not a guarantee as it is with other resources like inputs. - Set-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type SetCurrentSceneTransition. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransition](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransition) - - - - --- - ### Parameters #### **TransitionName** - Name of the transition to make active - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentSceneTransition [-TransitionName] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSCurrentSceneTransitionDuration.md b/docs/Set-OBSCurrentSceneTransitionDuration.md index 65932b4ad..770e8ac63 100644 --- a/docs/Set-OBSCurrentSceneTransitionDuration.md +++ b/docs/Set-OBSCurrentSceneTransitionDuration.md @@ -1,91 +1,49 @@ Set-OBSCurrentSceneTransitionDuration ------------------------------------- - - - ### Synopsis Set-OBSCurrentSceneTransitionDuration : SetCurrentSceneTransitionDuration - - --- - ### Description Sets the duration of the current scene transition, if it is not fixed. - Set-OBSCurrentSceneTransitionDuration calls the OBS WebSocket with a request of type SetCurrentSceneTransitionDuration. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionduration](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionduration) - - - - --- - ### Parameters #### **TransitionDuration** - Duration in milliseconds - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentSceneTransitionDuration [-TransitionDuration] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSCurrentSceneTransitionSettings.md b/docs/Set-OBSCurrentSceneTransitionSettings.md index 8a8732108..270a0f226 100644 --- a/docs/Set-OBSCurrentSceneTransitionSettings.md +++ b/docs/Set-OBSCurrentSceneTransitionSettings.md @@ -1,106 +1,56 @@ Set-OBSCurrentSceneTransitionSettings ------------------------------------- - - - ### Synopsis Set-OBSCurrentSceneTransitionSettings : SetCurrentSceneTransitionSettings - - --- - ### Description Sets the settings of the current scene transition. - Set-OBSCurrentSceneTransitionSettings calls the OBS WebSocket with a request of type SetCurrentSceneTransitionSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionsettings) - - - - --- - ### Parameters #### **TransitionSettings** - Settings object to apply to the transition. Can be `{}` - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |1 |true (ByPropertyName)| - - #### **Overlay** - Whether to overlay over the current settings or replace them - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentSceneTransitionSettings [-TransitionSettings] [-Overlay] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSCurveShader.md b/docs/Set-OBSCurveShader.md new file mode 100644 index 000000000..b2adf5321 --- /dev/null +++ b/docs/Set-OBSCurveShader.md @@ -0,0 +1,89 @@ +Get-OBSCurveShader +------------------ + +### Synopsis +Get-OBSCurveShader [[-Strength] ] [[-Scale] ] [[-CurveColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CurveColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |curve_color| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCurveShader [[-Strength] ] [[-Scale] ] [[-CurveColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSCutRectPerCornerShader.md b/docs/Set-OBSCutRectPerCornerShader.md new file mode 100644 index 000000000..2afa0f284 --- /dev/null +++ b/docs/Set-OBSCutRectPerCornerShader.md @@ -0,0 +1,125 @@ +Get-OBSCutRectPerCornerShader +----------------------------- + +### Synopsis +Get-OBSCutRectPerCornerShader [[-CornerTl] ] [[-CornerTr] ] [[-CornerBr] ] [[-CornerBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerBl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_bl| + +#### **CornerBr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_br| + +#### **CornerTl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_tl| + +#### **CornerTr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |corner_tr| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCutRectPerCornerShader [[-CornerTl] ] [[-CornerTr] ] [[-CornerBr] ] [[-CornerBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSCylinderShader.md b/docs/Set-OBSCylinderShader.md new file mode 100644 index 000000000..873c78048 --- /dev/null +++ b/docs/Set-OBSCylinderShader.md @@ -0,0 +1,83 @@ +Get-OBSCylinderShader +--------------------- + +### Synopsis +Get-OBSCylinderShader [[-CylinderFactor] ] [[-BackgroundCut] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BackgroundCut** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |background_cut| + +#### **CylinderFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |cylinder_factor| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSCylinderShader [[-CylinderFactor] ] [[-BackgroundCut] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDarkenShader.md b/docs/Set-OBSDarkenShader.md new file mode 100644 index 000000000..0d45d9a78 --- /dev/null +++ b/docs/Set-OBSDarkenShader.md @@ -0,0 +1,89 @@ +Get-OBSDarkenShader +------------------- + +### Synopsis +Get-OBSDarkenShader [[-OpacityPercentage] ] [[-FillPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FillPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Fill_Percentage| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OpacityPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |Opacity_Percentage| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDarkenShader [[-OpacityPercentage] ] [[-FillPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDeadPixelFixerShader.md b/docs/Set-OBSDeadPixelFixerShader.md new file mode 100644 index 000000000..7a0e34a40 --- /dev/null +++ b/docs/Set-OBSDeadPixelFixerShader.md @@ -0,0 +1,83 @@ +Get-OBSDeadPixelFixerShader +--------------------------- + +### Synopsis +Get-OBSDeadPixelFixerShader [[-DeadPixelX] ] [[-DeadPixelY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DeadPixelX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Dead_Pixel_X| + +#### **DeadPixelY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Dead_Pixel_Y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDeadPixelFixerShader [[-DeadPixelX] ] [[-DeadPixelY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDensitySatHueShader.md b/docs/Set-OBSDensitySatHueShader.md new file mode 100644 index 000000000..a30556382 --- /dev/null +++ b/docs/Set-OBSDensitySatHueShader.md @@ -0,0 +1,197 @@ +Get-OBSDensitySatHueShader +-------------------------- + +### Synopsis +Get-OBSDensitySatHueShader [[-Notes] ] [[-DensityR] ] [[-SaturationR] ] [[-HueShiftR] ] [[-DensityY] ] [[-SaturationY] ] [[-HueShiftY] ] [[-DensityG] ] [[-SaturationG] ] [[-HueShiftG] ] [[-DensityC] ] [[-SaturationC] ] [[-HueShiftC] ] [[-DensityB] ] [[-SaturationB] ] [[-HueShiftB] ] [[-DensityM] ] [[-SaturationM] ] [[-HueShiftM] ] [[-GlobalDensity] ] [[-GlobalSaturation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DensityB** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_b| + +#### **DensityC** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_c| + +#### **DensityG** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_g| + +#### **DensityM** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_m| + +#### **DensityR** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_r| + +#### **DensityY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |density_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlobalDensity** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |global_density| + +#### **GlobalSaturation** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |global_saturation| + +#### **HueShiftB** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_b| + +#### **HueShiftC** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_c| + +#### **HueShiftG** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_g| + +#### **HueShiftM** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_m| + +#### **HueShiftR** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_r| + +#### **HueShiftY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |hueShift_y| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SaturationB** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_b| + +#### **SaturationC** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_c| + +#### **SaturationG** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_g| + +#### **SaturationM** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_m| + +#### **SaturationR** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_r| + +#### **SaturationY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |saturation_y| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDensitySatHueShader [[-Notes] ] [[-DensityR] ] [[-SaturationR] ] [[-HueShiftR] ] [[-DensityY] ] [[-SaturationY] ] [[-HueShiftY] ] [[-DensityG] ] [[-SaturationG] ] [[-HueShiftG] ] [[-DensityC] ] [[-SaturationC] ] [[-HueShiftC] ] [[-DensityB] ] [[-SaturationB] ] [[-HueShiftB] ] [[-DensityM] ] [[-SaturationM] ] [[-HueShiftM] ] [[-GlobalDensity] ] [[-GlobalSaturation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDiffuseTransitionShader.md b/docs/Set-OBSDiffuseTransitionShader.md new file mode 100644 index 000000000..75675e21b --- /dev/null +++ b/docs/Set-OBSDiffuseTransitionShader.md @@ -0,0 +1,101 @@ +Get-OBSDiffuseTransitionShader +------------------------------ + +### Synopsis +Get-OBSDiffuseTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-NumSamples] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NumSamples** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |num_samples| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDiffuseTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-NumSamples] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDigitalRainShader.md b/docs/Set-OBSDigitalRainShader.md new file mode 100644 index 000000000..7260531c5 --- /dev/null +++ b/docs/Set-OBSDigitalRainShader.md @@ -0,0 +1,107 @@ +Get-OBSDigitalRainShader +------------------------ + +### Synopsis +Get-OBSDigitalRainShader [[-Font] ] [[-Noise] ] [[-BaseColor] ] [[-RainSpeed] ] [[-CharSpeed] ] [[-GlowContrast] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BaseColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |base_color| + +#### **CharSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |char_speed| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Font** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlowContrast** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |glow_contrast| + +#### **Noise** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RainSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |rain_speed| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDigitalRainShader [[-Font] ] [[-Noise] ] [[-BaseColor] ] [[-RainSpeed] ] [[-CharSpeed] ] [[-GlowContrast] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDisplaySource.md b/docs/Set-OBSDisplaySource.md index 903898e90..7cc9aa3b9 100644 --- a/docs/Set-OBSDisplaySource.md +++ b/docs/Set-OBSDisplaySource.md @@ -1,129 +1,75 @@ Set-OBSDisplaySource -------------------- - - - ### Synopsis Adds a display source - - --- - ### Description Adds a display source to OBS. This captures the contents of the display. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Add-OBSDisplaySource # Adds a display source of the primary monitor ``` +> EXAMPLE 2 -#### EXAMPLE 2 ```PowerShell Add-OBSDisplaySource -Display 2 # Adds a display source of the second monitor ``` - - --- - ### Parameters #### **Monitor** - The monitor number. This the number of the monitor you would like to capture. - - - - - |Type |Required|Position|PipelineInput |Aliases | |---------|--------|--------|---------------------|-------------------------------------------| |`[Int32]`|false |1 |true (ByPropertyName)|MonitorNumber
Display
DisplayNumber| - - #### **CaptureCursor** - If set, will capture the cursor. This will be set by default. If explicitly set to false, the cursor will not be captured. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |2 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |3 |true (ByPropertyName)|InputName| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSDisplaySource [[-Monitor] ] [-CaptureCursor] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Set-OBSDivideRotateShader.md b/docs/Set-OBSDivideRotateShader.md new file mode 100644 index 000000000..38615db21 --- /dev/null +++ b/docs/Set-OBSDivideRotateShader.md @@ -0,0 +1,101 @@ +Get-OBSDivideRotateShader +------------------------- + +### Synopsis +Get-OBSDivideRotateShader [[-IChannel0] ] [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |alpha_percentage| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **IChannel0** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |speed_percentage| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDivideRotateShader [[-IChannel0] ] [[-SpeedPercentage] ] [[-AlphaPercentage] ] [-ApplyToAlphaLayer ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDoodleShader.md b/docs/Set-OBSDoodleShader.md new file mode 100644 index 000000000..9727fc2fe --- /dev/null +++ b/docs/Set-OBSDoodleShader.md @@ -0,0 +1,137 @@ +Get-OBSDoodleShader +------------------- + +### Synopsis +Get-OBSDoodleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-DoodleScalePercent] ] [[-SnapPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **DoodleScalePercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |Doodle_Scale_Percent| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SnapPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |Snap_Percent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDoodleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-DoodleScalePercent] ] [[-SnapPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDrawingsShader.md b/docs/Set-OBSDrawingsShader.md new file mode 100644 index 000000000..825061a5e --- /dev/null +++ b/docs/Set-OBSDrawingsShader.md @@ -0,0 +1,83 @@ +Get-OBSDrawingsShader +--------------------- + +### Synopsis +Get-OBSDrawingsShader [[-AngleNum] ] [[-SampNum] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AngleNum** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SampNum** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDrawingsShader [[-AngleNum] ] [[-SampNum] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDropShadowShader.md b/docs/Set-OBSDropShadowShader.md new file mode 100644 index 000000000..70e474ccf --- /dev/null +++ b/docs/Set-OBSDropShadowShader.md @@ -0,0 +1,107 @@ +Get-OBSDropShadowShader +----------------------- + +### Synopsis +Get-OBSDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-Notes] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **IsAlphaPremultiplied** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------------| +|`[Switch]`|false |named |False |is_alpha_premultiplied| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShadowBlurSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |shadow_blur_size| + +#### **ShadowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |shadow_color| + +#### **ShadowOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_x| + +#### **ShadowOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_y| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-Notes] ] [[-ShadowColor] ] [-IsAlphaPremultiplied ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDrunkShader.md b/docs/Set-OBSDrunkShader.md new file mode 100644 index 000000000..7a27a5548 --- /dev/null +++ b/docs/Set-OBSDrunkShader.md @@ -0,0 +1,137 @@ +Get-OBSDrunkShader +------------------ + +### Synopsis +Get-OBSDrunkShader [[-ColorMatrix] ] [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeedPercent] ] [[-GlowColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **Blur** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |glow_color| + +#### **GlowPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |glow_percent| + +#### **MaxBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |max_brightness| + +#### **MinBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |min_brightness| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------------| +|`[Int]`|false |named |False |pulse_speed_percent| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDrunkShader [[-ColorMatrix] ] [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeedPercent] ] [-ApplyToAlphaLayer ] [[-GlowColor] ] [-Ease ] [-Glitch ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSDynamicMaskShader.md b/docs/Set-OBSDynamicMaskShader.md new file mode 100644 index 000000000..895c8d20a --- /dev/null +++ b/docs/Set-OBSDynamicMaskShader.md @@ -0,0 +1,221 @@ +Get-OBSDynamicMaskShader +------------------------ + +### Synopsis +Get-OBSDynamicMaskShader [[-InputSource] ] [[-RedBaseValue] ] [[-RedRedInputValue] ] [[-RedGreenInputValue] ] [[-RedBlueInputValue] ] [[-RedAlphaInputValue] ] [[-RedMultiplier] ] [[-GreenBaseValue] ] [[-GreenRedInputValue] ] [[-GreenGreenInputValue] ] [[-GreenBlueInputValue] ] [[-GreenAlphaInputValue] ] [[-GreenMultiplier] ] [[-BlueBaseValue] ] [[-BlueRedInputValue] ] [[-BlueGreenInputValue] ] [[-BlueBlueInputValue] ] [[-BlueAlphaInputValue] ] [[-BlueMultiplier] ] [[-AlphaBaseValue] ] [[-AlphaRedInputValue] ] [[-AlphaGreenInputValue] ] [[-AlphaBlueInputValue] ] [[-AlphaAlphaInputValue] ] [[-AlphaMultiplier] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |alpha_alpha_input_value| + +#### **AlphaBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |alpha_base_value| + +#### **AlphaBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |alpha_blue_input_value| + +#### **AlphaGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |alpha_green_input_value| + +#### **AlphaMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |alpha_multiplier| + +#### **AlphaRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |alpha_red_input_value| + +#### **BlueAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |blue_alpha_input_value| + +#### **BlueBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |blue_base_value| + +#### **BlueBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |blue_blue_input_value| + +#### **BlueGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |blue_green_input_value| + +#### **BlueMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |blue_multiplier| + +#### **BlueRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |blue_red_input_value| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GreenAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |green_alpha_input_value| + +#### **GreenBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |green_base_value| + +#### **GreenBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------------| +|`[Float]`|false |named |False |green_blue_input_value| + +#### **GreenGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------| +|`[Float]`|false |named |False |green_green_input_value| + +#### **GreenMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |green_multiplier| + +#### **GreenRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |green_red_input_value| + +#### **InputSource** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |input_source| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RedAlphaInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |red_alpha_input_value| + +#### **RedBaseValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |red_base_value| + +#### **RedBlueInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |red_blue_input_value| + +#### **RedGreenInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------| +|`[Float]`|false |named |False |red_green_input_value| + +#### **RedMultiplier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |red_multiplier| + +#### **RedRedInputValue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------------| +|`[Float]`|false |named |False |red_red_input_value| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSDynamicMaskShader [[-InputSource] ] [[-RedBaseValue] ] [[-RedRedInputValue] ] [[-RedGreenInputValue] ] [[-RedBlueInputValue] ] [[-RedAlphaInputValue] ] [[-RedMultiplier] ] [[-GreenBaseValue] ] [[-GreenRedInputValue] ] [[-GreenGreenInputValue] ] [[-GreenBlueInputValue] ] [[-GreenAlphaInputValue] ] [[-GreenMultiplier] ] [[-BlueBaseValue] ] [[-BlueRedInputValue] ] [[-BlueGreenInputValue] ] [[-BlueBlueInputValue] ] [[-BlueAlphaInputValue] ] [[-BlueMultiplier] ] [[-AlphaBaseValue] ] [[-AlphaRedInputValue] ] [[-AlphaGreenInputValue] ] [[-AlphaBlueInputValue] ] [[-AlphaAlphaInputValue] ] [[-AlphaMultiplier] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSEdgeDetectionShader.md b/docs/Set-OBSEdgeDetectionShader.md new file mode 100644 index 000000000..8be8a6643 --- /dev/null +++ b/docs/Set-OBSEdgeDetectionShader.md @@ -0,0 +1,137 @@ +Get-OBSEdgeDetectionShader +-------------------------- + +### Synopsis +Get-OBSEdgeDetectionShader [[-Sensitivity] ] [[-EdgeColor] ] [[-NonEdgeColor] ] [[-AlphaLevel] ] [[-RandF] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertEdge] [-EdgeMultiply] [-NonEdgeMultiply] [-AlphaChannel] [-AlphaInvert] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaChannel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |alpha_channel| + +#### **AlphaInvert** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |alpha_invert| + +#### **AlphaLevel** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |alpha_level| + +#### **EdgeColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |edge_color| + +#### **EdgeMultiply** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |edge_multiply| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertEdge** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |invert_edge| + +#### **NonEdgeColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[String]`|false |named |False |non_edge_color| + +#### **NonEdgeMultiply** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |non_edge_multiply| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **Sensitivity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEdgeDetectionShader [[-Sensitivity] ] [-InvertEdge ] [[-EdgeColor] ] [-EdgeMultiply ] [[-NonEdgeColor] ] [-NonEdgeMultiply ] [-AlphaChannel ] [[-AlphaLevel] ] [-AlphaInvert ] [[-RandF] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSEmbersShader.md b/docs/Set-OBSEmbersShader.md new file mode 100644 index 000000000..b20dd9715 --- /dev/null +++ b/docs/Set-OBSEmbersShader.md @@ -0,0 +1,203 @@ +Get-OBSEmbersShader +------------------- + +### Synopsis +Get-OBSEmbersShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-AnimationSpeed] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-MovementSpeedPercent] ] [[-LayersCount] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **AnimationSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Animation_Speed| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LayersCount** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Layers_Count| + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MovementDirectionHorizontal** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |Movement_Direction_Horizontal| + +#### **MovementDirectionVertical** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------------| +|`[Float]`|false |named |False |Movement_Direction_Vertical| + +#### **MovementSpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------------| +|`[Int]`|false |named |False |Movement_Speed_Percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEmbersShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-AnimationSpeed] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-MovementSpeedPercent] ] [[-LayersCount] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-AlphaPercentage] ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSEmbossColorShader.md b/docs/Set-OBSEmbossColorShader.md new file mode 100644 index 000000000..2094b0100 --- /dev/null +++ b/docs/Set-OBSEmbossColorShader.md @@ -0,0 +1,107 @@ +Get-OBSEmbossColorShader +------------------------ + +### Synopsis +Get-OBSEmbossColorShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-UpDownPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AmpFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **AngleSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |Angle_Steps| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RadiusSteps** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Radius_Steps| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UpDownPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |Up_Down_Percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEmbossColorShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-UpDownPercent] ] [-ApplyToAlphaLayer ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSEmbossShader.md b/docs/Set-OBSEmbossShader.md new file mode 100644 index 000000000..b054d901f --- /dev/null +++ b/docs/Set-OBSEmbossShader.md @@ -0,0 +1,83 @@ +Get-OBSEmbossShader +------------------- + +### Synopsis +Get-OBSEmbossShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-UseColor] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[Switch]`|false |named |False |Use_Color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSEmbossShader [-UseColor ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSEqualizerFilter.md b/docs/Set-OBSEqualizerFilter.md index d85e58239..50fa44f21 100644 --- a/docs/Set-OBSEqualizerFilter.md +++ b/docs/Set-OBSEqualizerFilter.md @@ -1,93 +1,49 @@ Set-OBSEqualizerFilter ---------------------- - - - ### Synopsis Sets a Equalizer filter. - - --- - ### Description Adds or Changes a 3-band Equalizer Filter on an OBS Input. - - --- - ### Parameters #### **Low** - The change in low frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Mid** - The change in mid frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **High** - The change in high frequencies. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSEqualizerFilter [[-Low] ] [[-Mid] ] [[-High] ] [-Force] [] diff --git a/docs/Set-OBSExeldroBentCameraShader.md b/docs/Set-OBSExeldroBentCameraShader.md new file mode 100644 index 000000000..d38ae0a1d --- /dev/null +++ b/docs/Set-OBSExeldroBentCameraShader.md @@ -0,0 +1,131 @@ +Get-OBSExeldroBentCameraShader +------------------------------ + +### Synopsis +Get-OBSExeldroBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LeftFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_flip_shadow| + +#### **LeftFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_flip_width| + +#### **LeftSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |left_side_shadow| + +#### **LeftSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |left_side_size| + +#### **LeftSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |left_side_width| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RightFlipShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_flip_shadow| + +#### **RightFlipWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_flip_width| + +#### **RightSideShadow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |right_side_shadow| + +#### **RightSideSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |right_side_size| + +#### **RightSideWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |right_side_width| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSExeldroBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFFMpegSource.md b/docs/Set-OBSFFMpegSource.md index 71c0dd2c6..feebd1e73 100644 --- a/docs/Set-OBSFFMpegSource.md +++ b/docs/Set-OBSFFMpegSource.md @@ -1,216 +1,115 @@ Set-OBSMediaSource ------------------ - - - ### Synopsis Adds a media source - - --- - ### Description Adds a media source to OBS. - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSMediaSource -FilePath My.mp4 ``` - - --- - ### Parameters #### **FilePath** - The path to the media file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-------------------------------------| -|`[String]`|true |1 |true (ByPropertyName)|FullName
LocalFile
local_file| - - +|`[String]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file| #### **CloseWhenInactive** - If set, the source will close when it is inactive. By default, this will be set to true. To explicitly set it to false, use -CloseWhenInactive:$false - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Loop** - If set, the source will automatically restart. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Switch]`|false |named |true (ByPropertyName)|Looping| - - #### **UseHardwareDecoding** - If set, will use hardware decoding, if available. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|HardwareDecoding
hw_decode| - - #### **ClearOnMediaEnd** - If set, will clear the output on the end of the media. If this is set to false, the media will freeze on the last frame. This is set to true by default. To explicitly set to false, use -ClearMediaEnd:$false - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|ClearOnEnd
NoFreezeFrameOnEnd| - - #### **FFMpegOption** - Any FFMpeg demuxer options. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|--------------------------------| |`[String]`|false |2 |true (ByPropertyName)|FFMpegOptions
FFMpeg_Options| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |4 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FitToScreen** - If set, will fit the input to the screen. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell -Set-OBSMediaSource [-FilePath] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +Set-OBSMediaSource [[-FilePath] ] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] ``` diff --git a/docs/Set-OBSFadeTransitionShader.md b/docs/Set-OBSFadeTransitionShader.md new file mode 100644 index 000000000..9ac586e6c --- /dev/null +++ b/docs/Set-OBSFadeTransitionShader.md @@ -0,0 +1,95 @@ +Get-OBSFadeTransitionShader +--------------------------- + +### Synopsis +Get-OBSFadeTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFadeTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFillColorGradientShader.md b/docs/Set-OBSFillColorGradientShader.md new file mode 100644 index 000000000..9b821e72f --- /dev/null +++ b/docs/Set-OBSFillColorGradientShader.md @@ -0,0 +1,101 @@ +Get-OBSFillColorGradientShader +------------------------------ + +### Synopsis +Get-OBSFillColorGradientShader [[-Fill] ] [[-GradientWidth] ] [[-GradientOffset] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Gradient_Offset| + +#### **GradientWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Gradient_Width| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorGradientShader [[-Fill] ] [[-GradientWidth] ] [[-GradientOffset] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFillColorLinearShader.md b/docs/Set-OBSFillColorLinearShader.md new file mode 100644 index 000000000..7f2c04005 --- /dev/null +++ b/docs/Set-OBSFillColorLinearShader.md @@ -0,0 +1,89 @@ +Get-OBSFillColorLinearShader +---------------------------- + +### Synopsis +Get-OBSFillColorLinearShader [[-Fill] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorLinearShader [[-Fill] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFillColorRadialDegreesShader.md b/docs/Set-OBSFillColorRadialDegreesShader.md new file mode 100644 index 000000000..c57d04d7d --- /dev/null +++ b/docs/Set-OBSFillColorRadialDegreesShader.md @@ -0,0 +1,107 @@ +Get-OBSFillColorRadialDegreesShader +----------------------------------- + +### Synopsis +Get-OBSFillColorRadialDegreesShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_X| + +#### **OffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_Y| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Start_Angle| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorRadialDegreesShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFillColorRadialPercentageShader.md b/docs/Set-OBSFillColorRadialPercentageShader.md new file mode 100644 index 000000000..8dfd505bf --- /dev/null +++ b/docs/Set-OBSFillColorRadialPercentageShader.md @@ -0,0 +1,107 @@ +Get-OBSFillColorRadialPercentageShader +-------------------------------------- + +### Synopsis +Get-OBSFillColorRadialPercentageShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Fill** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FillColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fill_Color| + +#### **FillDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |Fill_Direction| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_X| + +#### **OffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_Y| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Start_Angle| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFillColorRadialPercentageShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFilterTemplateShader.md b/docs/Set-OBSFilterTemplateShader.md new file mode 100644 index 000000000..2763f7e3f --- /dev/null +++ b/docs/Set-OBSFilterTemplateShader.md @@ -0,0 +1,149 @@ +Get-OBSFilterTemplateShader +--------------------------- + +### Synopsis +Get-OBSFilterTemplateShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFilterTemplateShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFire3Shader.md b/docs/Set-OBSFire3Shader.md new file mode 100644 index 000000000..2515dc6ac --- /dev/null +++ b/docs/Set-OBSFire3Shader.md @@ -0,0 +1,239 @@ +Get-OBSFire3Shader +------------------ + +### Synopsis +Get-OBSFire3Shader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-AlphaPercentage] ] [[-Speed] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-FlameSize] ] [[-SparkGridHeight] ] [[-FlameModifier] ] [[-FlameTongueSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-FullWidth] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FlameModifier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |Flame_Modifier| + +#### **FlameSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Flame_Size| + +#### **FlameTongueSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |Flame_Tongue_Size| + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FullWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |Full_Width| + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Invert** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MovementDirectionHorizontal** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |Movement_Direction_Horizontal| + +#### **MovementDirectionVertical** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------------------| +|`[Float]`|false |named |False |Movement_Direction_Vertical| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SparkGridHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |Spark_Grid_Height| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFire3Shader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-AlphaPercentage] ] [[-Speed] ] [-Invert ] [[-LumaMin] ] [[-LumaMinSmooth] ] [-ApplyToImage ] [-ReplaceImageColor ] [[-ColorToReplace] ] [-ApplyToSpecificColor ] [-FullWidth ] [[-FlameSize] ] [[-SparkGridHeight] ] [[-FlameModifier] ] [[-FlameTongueSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFireShader.md b/docs/Set-OBSFireShader.md new file mode 100644 index 000000000..99ce788bb --- /dev/null +++ b/docs/Set-OBSFireShader.md @@ -0,0 +1,143 @@ +Get-OBSFireShader +----------------- + +### Synopsis +Get-OBSFireShader [[-AlphaPercentage] ] [[-Speed] ] [[-FlameSize] ] [[-FireType] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FireType** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------| +|`[Int]`|false |named |False |Fire_Type| + +#### **FlameSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------| +|`[Int]`|false |named |False |Flame_Size| + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Invert** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFireShader [[-AlphaPercentage] ] [[-Speed] ] [[-FlameSize] ] [[-FireType] ] [-Invert ] [[-LumaMin] ] [[-LumaMinSmooth] ] [-ApplyToImage ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFireworks2Shader.md b/docs/Set-OBSFireworks2Shader.md new file mode 100644 index 000000000..54c300c8e --- /dev/null +++ b/docs/Set-OBSFireworks2Shader.md @@ -0,0 +1,77 @@ +Get-OBSFireworks2Shader +----------------------- + +### Synopsis +Get-OBSFireworks2Shader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFireworks2Shader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFireworksShader.md b/docs/Set-OBSFireworksShader.md new file mode 100644 index 000000000..79ddd0309 --- /dev/null +++ b/docs/Set-OBSFireworksShader.md @@ -0,0 +1,89 @@ +Get-OBSFireworksShader +---------------------- + +### Synopsis +Get-OBSFireworksShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowFlash] [-ShowStars] [-UseTransparancy] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShowFlash** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |show_flash| + +#### **ShowStars** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |show_stars| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UseTransparancy** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |use_transparancy| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFireworksShader [-ShowFlash ] [-ShowStars ] [-UseTransparancy ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFisheyeShader.md b/docs/Set-OBSFisheyeShader.md new file mode 100644 index 000000000..ca4f154b9 --- /dev/null +++ b/docs/Set-OBSFisheyeShader.md @@ -0,0 +1,89 @@ +Get-OBSFisheyeShader +-------------------- + +### Synopsis +Get-OBSFisheyeShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFisheyeShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFisheyeXyShader.md b/docs/Set-OBSFisheyeXyShader.md new file mode 100644 index 000000000..eebe2d2e3 --- /dev/null +++ b/docs/Set-OBSFisheyeXyShader.md @@ -0,0 +1,95 @@ +Get-OBSFisheyeXyShader +---------------------- + +### Synopsis +Get-OBSFisheyeXyShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-PowerX] ] [[-PowerY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PowerX** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |power_x| + +#### **PowerY** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |power_y| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFisheyeXyShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-PowerX] ] [[-PowerY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFlipShader.md b/docs/Set-OBSFlipShader.md new file mode 100644 index 000000000..2ab91e53a --- /dev/null +++ b/docs/Set-OBSFlipShader.md @@ -0,0 +1,83 @@ +Get-OBSFlipShader +----------------- + +### Synopsis +Get-OBSFlipShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Horizontal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFlipShader [-Horizontal ] [-Vertical ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSFrostedGlassShader.md b/docs/Set-OBSFrostedGlassShader.md new file mode 100644 index 000000000..9ec703727 --- /dev/null +++ b/docs/Set-OBSFrostedGlassShader.md @@ -0,0 +1,119 @@ +Get-OBSFrostedGlassShader +------------------------- + +### Synopsis +Get-OBSFrostedGlassShader [[-AlphaPercent] ] [[-Amount] ] [[-Scale] ] [[-BorderOffset] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Alpha_Percent| + +#### **Amount** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |Border_Color| + +#### **BorderOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Border_Offset| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HorizontalBorder** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |Horizontal_Border| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSFrostedGlassShader [[-AlphaPercent] ] [[-Amount] ] [[-Scale] ] [-Animate ] [-HorizontalBorder ] [[-BorderOffset] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGainFilter.md b/docs/Set-OBSGainFilter.md index 135986a0d..276404d4c 100644 --- a/docs/Set-OBSGainFilter.md +++ b/docs/Set-OBSGainFilter.md @@ -1,76 +1,46 @@ Set-OBSGainFilter ----------------- - - - ### Synopsis Sets a Gain filter. - - --- - ### Description Adds or Changes a Gain Filter on an OBS Input. This allows you to make the audio louder or softer. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | Set-OBSGainFilter -Gain 1.1 # Gains Audio by 1.1 decibels ``` - - --- - ### Parameters #### **Gain** - The Audio Gain, in decibels. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSGainFilter [[-Gain] ] [-Force] [] diff --git a/docs/Set-OBSGammaCorrectionShader.md b/docs/Set-OBSGammaCorrectionShader.md new file mode 100644 index 000000000..33c7bd29d --- /dev/null +++ b/docs/Set-OBSGammaCorrectionShader.md @@ -0,0 +1,95 @@ +Get-OBSGammaCorrectionShader +---------------------------- + +### Synopsis +Get-OBSGammaCorrectionShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blue** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Green** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Red** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGammaCorrectionShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGaussianBlurAdvancedShader.md b/docs/Set-OBSGaussianBlurAdvancedShader.md new file mode 100644 index 000000000..cafaf8c34 --- /dev/null +++ b/docs/Set-OBSGaussianBlurAdvancedShader.md @@ -0,0 +1,113 @@ +Get-OBSGaussianBlurAdvancedShader +--------------------------------- + +### Synopsis +Get-OBSGaussianBlurAdvancedShader [[-Directions] ] [[-Quality] ] [[-Size] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Directions** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MaskBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Mask_Bottom| + +#### **MaskLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Mask_Left| + +#### **MaskRight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Mask_Right| + +#### **MaskTop** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Mask_Top| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Quality** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **Size** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianBlurAdvancedShader [[-Directions] ] [[-Quality] ] [[-Size] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGaussianBlurShader.md b/docs/Set-OBSGaussianBlurShader.md new file mode 100644 index 000000000..fbe664236 --- /dev/null +++ b/docs/Set-OBSGaussianBlurShader.md @@ -0,0 +1,155 @@ +Get-OBSGaussianBlurShader +------------------------- + +### Synopsis +Get-OBSGaussianBlurShader [[-ViewProj] ] [[-Image] ] [[-ImageSize] ] [[-ImageTexel] ] [[-URadius] ] [[-UDiameter] ] [[-UTexelDelta] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-Kernel] ] [[-KernelTexel] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **ImageSize** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **ImageTexel** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **Kernel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **KernelTexel** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixelSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |pixel_size| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UDiameter** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------| +|`[Int]`|false |named |False |u_diameter| + +#### **URadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------| +|`[Int]`|false |named |False |u_radius| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UTexelDelta** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|------------| +|`[System.Single[]]`|false |named |False |u_texelDelta| + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianBlurShader [[-ViewProj] ] [[-Image] ] [[-ImageSize] ] [[-ImageTexel] ] [[-URadius] ] [[-UDiameter] ] [[-UTexelDelta] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-Kernel] ] [[-KernelTexel] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGaussianBlurSimpleShader.md b/docs/Set-OBSGaussianBlurSimpleShader.md new file mode 100644 index 000000000..08cf58d9d --- /dev/null +++ b/docs/Set-OBSGaussianBlurSimpleShader.md @@ -0,0 +1,101 @@ +Get-OBSGaussianBlurSimpleShader +------------------------------- + +### Synopsis +Get-OBSGaussianBlurSimpleShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MaskBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |Mask_Bottom| + +#### **MaskLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Mask_Left| + +#### **MaskRight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |Mask_Right| + +#### **MaskTop** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Mask_Top| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianBlurSimpleShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGaussianExampleShader.md b/docs/Set-OBSGaussianExampleShader.md new file mode 100644 index 000000000..7fe2a9fc9 --- /dev/null +++ b/docs/Set-OBSGaussianExampleShader.md @@ -0,0 +1,149 @@ +Get-OBSGaussianExampleShader +---------------------------- + +### Synopsis +Get-OBSGaussianExampleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-InitialImage] ] [[-BeforeImage] ] [[-AfterImage] ] [[-TextColor] ] [[-MaxDistance] ] [[-Exp] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AfterImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |after_image| + +#### **BeforeImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |before_image| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **Exp** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **InitialImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |initial_image| + +#### **MaxDistance** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |max_distance| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TextColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |text_color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianExampleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-InitialImage] ] [[-BeforeImage] ] [[-AfterImage] ] [[-TextColor] ] [[-MaxDistance] ] [[-Exp] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGaussianSimpleShader.md b/docs/Set-OBSGaussianSimpleShader.md new file mode 100644 index 000000000..a79364813 --- /dev/null +++ b/docs/Set-OBSGaussianSimpleShader.md @@ -0,0 +1,155 @@ +Get-OBSGaussianSimpleShader +--------------------------- + +### Synopsis +Get-OBSGaussianSimpleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Samples] ] [[-LOD] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **LOD** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **Samples** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGaussianSimpleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Samples] ] [[-LOD] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGbCameraShader.md b/docs/Set-OBSGbCameraShader.md new file mode 100644 index 000000000..00d602a6b --- /dev/null +++ b/docs/Set-OBSGbCameraShader.md @@ -0,0 +1,131 @@ +Get-OBSGbCameraShader +--------------------- + +### Synopsis +Get-OBSGbCameraShader [[-PixelSize] ] [[-DitherFactor] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Color1] ] [[-Color2] ] [[-Color3] ] [[-Color4] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AlternativeBayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlternativeBayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |alternative_bayer| + +#### **Brightness** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Color1** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_1| + +#### **Color2** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_2| + +#### **Color3** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_3| + +#### **Color4** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_4| + +#### **Contrast** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **DitherFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |dither_factor| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Gamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixelSize** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGbCameraShader [[-PixelSize] ] [[-DitherFactor] ] [-AlternativeBayer ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Color1] ] [[-Color2] ] [[-Color3] ] [[-Color4] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGlassShader.md b/docs/Set-OBSGlassShader.md new file mode 100644 index 000000000..a9e640b0a --- /dev/null +++ b/docs/Set-OBSGlassShader.md @@ -0,0 +1,131 @@ +Get-OBSGlassShader +------------------ + +### Synopsis +Get-OBSGlassShader [[-AlphaPercent] ] [[-OffsetAmount] ] [[-XSize] ] [[-YSize] ] [[-ReflectionOffset] ] [[-BorderOffset] ] [[-BorderColor] ] [[-GlassColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Alpha_Percent| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |Border_Color| + +#### **BorderOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Border_Offset| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlassColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |Glass_Color| + +#### **HorizontalBorder** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------| +|`[Switch]`|false |named |False |Horizontal_Border| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OffsetAmount** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Offset_Amount| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReflectionOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |Reflection_Offset| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **XSize** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **YSize** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlassShader [[-AlphaPercent] ] [[-OffsetAmount] ] [[-XSize] ] [[-YSize] ] [[-ReflectionOffset] ] [-HorizontalBorder ] [[-BorderOffset] ] [[-BorderColor] ] [[-GlassColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGlitchAnalogShader.md b/docs/Set-OBSGlitchAnalogShader.md new file mode 100644 index 000000000..a2d4886f8 --- /dev/null +++ b/docs/Set-OBSGlitchAnalogShader.md @@ -0,0 +1,161 @@ +Get-OBSGlitchAnalogShader +------------------------- + +### Synopsis +Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] ] [[-ScanLineJitterThresholdPercent] ] [[-VerticalJumpAmount] ] [[-VerticalSpeed] ] [[-HorizontalShake] ] [[-ColorDriftAmount] ] [[-ColorDriftSpeed] ] [[-PulseSpeedPercent] ] [[-AlphaPercent] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateColors] [-ApplyToAlphaLayer] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |alpha_percent| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorDriftAmount** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |color_drift_amount| + +#### **ColorDriftSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |color_drift_speed| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HorizontalShake** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |horizontal_shake| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------------| +|`[Int]`|false |named |False |pulse_speed_percent| + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **RotateColors** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |rotate_colors| + +#### **ScanLineJitterDisplacement** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------------------| +|`[Float]`|false |named |False |scan_line_jitter_displacement| + +#### **ScanLineJitterThresholdPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------------------------| +|`[Int]`|false |named |False |scan_line_jitter_threshold_percent| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VerticalJumpAmount** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |vertical_jump_amount| + +#### **VerticalSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |vertical_speed| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] ] [[-ScanLineJitterThresholdPercent] ] [[-VerticalJumpAmount] ] [[-VerticalSpeed] ] [[-HorizontalShake] ] [[-ColorDriftAmount] ] [[-ColorDriftSpeed] ] [[-PulseSpeedPercent] ] [[-AlphaPercent] ] [-RotateColors ] [-ApplyToAlphaLayer ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGlitchShader.md b/docs/Set-OBSGlitchShader.md new file mode 100644 index 000000000..9bd5cfbb6 --- /dev/null +++ b/docs/Set-OBSGlitchShader.md @@ -0,0 +1,83 @@ +Get-OBSGlitchShader +------------------- + +### Synopsis +Get-OBSGlitchShader [[-AMT] ] [[-SPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AMT** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SPEED** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlitchShader [[-AMT] ] [[-SPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGlowShader.md b/docs/Set-OBSGlowShader.md new file mode 100644 index 000000000..46c7373c1 --- /dev/null +++ b/docs/Set-OBSGlowShader.md @@ -0,0 +1,113 @@ +Get-OBSGlowShader +----------------- + +### Synopsis +Get-OBSGlowShader [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blur** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GlowPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |glow_percent| + +#### **MaxBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |max_brightness| + +#### **MinBrightness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |min_brightness| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |pulse_speed| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGlowShader [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeed] ] [-Ease ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSGradientShader.md b/docs/Set-OBSGradientShader.md new file mode 100644 index 000000000..a4c8f01cf --- /dev/null +++ b/docs/Set-OBSGradientShader.md @@ -0,0 +1,179 @@ +Get-OBSGradientShader +--------------------- + +### Synopsis +Get-OBSGradientShader [[-StartColor] ] [[-StartStep] ] [[-MiddleColor] ] [[-MiddleStep] ] [[-EndColor] ] [[-EndStep] ] [[-AlphaPercent] ] [[-PulseSpeed] ] [[-ColorToReplace] ] [[-GradientCenterWidthPercentage] ] [[-GradientCenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-RotateColors] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |alpha_percent| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **EndColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |end_color| + +#### **EndStep** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |end_step| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientCenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------------------| +|`[Int]`|false |named |False |gradient_center_height_percentage| + +#### **GradientCenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------------------------| +|`[Int]`|false |named |False |gradient_center_width_percentage| + +#### **Horizontal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MiddleColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |middle_color| + +#### **MiddleStep** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |middle_step| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PulseSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------| +|`[Int]`|false |named |False |pulse_speed| + +#### **RotateColors** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |rotate_colors| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |start_color| + +#### **StartStep** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |start_step| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSGradientShader [[-StartColor] ] [[-StartStep] ] [[-MiddleColor] ] [[-MiddleStep] ] [[-EndColor] ] [[-EndStep] ] [[-AlphaPercent] ] [[-PulseSpeed] ] [-Ease ] [-RotateColors ] [-ApplyToAlphaLayer ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [-Horizontal ] [-Vertical ] [[-GradientCenterWidthPercentage] ] [[-GradientCenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSHalftoneShader.md b/docs/Set-OBSHalftoneShader.md new file mode 100644 index 000000000..f9b030f89 --- /dev/null +++ b/docs/Set-OBSHalftoneShader.md @@ -0,0 +1,77 @@ +Get-OBSHalftoneShader +--------------------- + +### Synopsis +Get-OBSHalftoneShader [[-Threshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Threshold** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHalftoneShader [[-Threshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSHeatWaveSimpleShader.md b/docs/Set-OBSHeatWaveSimpleShader.md new file mode 100644 index 000000000..9c3daead6 --- /dev/null +++ b/docs/Set-OBSHeatWaveSimpleShader.md @@ -0,0 +1,95 @@ +Get-OBSHeatWaveSimpleShader +--------------------------- + +### Synopsis +Get-OBSHeatWaveSimpleShader [[-Rate] ] [[-Strength] ] [[-Distortion] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Distortion** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Rate** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHeatWaveSimpleShader [[-Rate] ] [[-Strength] ] [[-Distortion] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSHexagonShader.md b/docs/Set-OBSHexagonShader.md new file mode 100644 index 000000000..b33cac6d6 --- /dev/null +++ b/docs/Set-OBSHexagonShader.md @@ -0,0 +1,155 @@ +Get-OBSHexagonShader +-------------------- + +### Synopsis +Get-OBSHexagonShader [[-HexColor] ] [[-AlphaPercent] ] [[-Quantity] ] [[-BorderWidth] ] [[-SpeedPercent] ] [[-DistortX] ] [[-DistortY] ] [[-OffsetX] ] [[-OffsetY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Blend] [-Equilateral] [-ZoomAnimate] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |Alpha_Percent| + +#### **Blend** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **BorderWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |Border_Width| + +#### **DistortX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Distort_X| + +#### **DistortY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |Distort_Y| + +#### **Equilateral** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HexColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |Hex_Color| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_X| + +#### **OffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |Offset_Y| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Quantity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |Speed_Percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ZoomAnimate** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Zoom_Animate| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHexagonShader [[-HexColor] ] [[-AlphaPercent] ] [[-Quantity] ] [[-BorderWidth] ] [-Blend ] [-Equilateral ] [-ZoomAnimate ] [[-SpeedPercent] ] [-Glitch ] [[-DistortX] ] [[-DistortY] ] [[-OffsetX] ] [[-OffsetY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSHslHsvSaturationShader.md b/docs/Set-OBSHslHsvSaturationShader.md new file mode 100644 index 000000000..3abdab852 --- /dev/null +++ b/docs/Set-OBSHslHsvSaturationShader.md @@ -0,0 +1,101 @@ +Get-OBSHslHsvSaturationShader +----------------------------- + +### Synopsis +Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] ] [[-HslGamma] ] [[-HsvSaturationFactor] ] [[-HsvGamma] ] [[-AdjustmentOrder] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AdjustmentOrder** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HslGamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **HslSaturationFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **HsvGamma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **HsvSaturationFactor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] ] [[-HslGamma] ] [[-HsvSaturationFactor] ] [[-HsvGamma] ] [[-AdjustmentOrder] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSHueRotatonShader.md b/docs/Set-OBSHueRotatonShader.md new file mode 100644 index 000000000..24140b07f --- /dev/null +++ b/docs/Set-OBSHueRotatonShader.md @@ -0,0 +1,83 @@ +Get-OBSHueRotatonShader +----------------------- + +### Synopsis +Get-OBSHueRotatonShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HueOverride] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HueOverride** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Hue_Override| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSHueRotatonShader [[-Speed] ] [-HueOverride ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSInputAudioBalance.md b/docs/Set-OBSInputAudioBalance.md index 774fa2cd8..ccfa4fef1 100644 --- a/docs/Set-OBSInputAudioBalance.md +++ b/docs/Set-OBSInputAudioBalance.md @@ -1,107 +1,64 @@ Set-OBSInputAudioBalance ------------------------ - - - ### Synopsis Set-OBSInputAudioBalance : SetInputAudioBalance - - --- - ### Description Sets the audio balance of an input. - Set-OBSInputAudioBalance calls the OBS WebSocket with a request of type SetInputAudioBalance. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiobalance](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiobalance) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the audio balance of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the audio balance of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputAudioBalance** - New audio balance value - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputAudioBalance [-InputName] [-InputAudioBalance] [-PassThru] [-NoResponse] [] +Set-OBSInputAudioBalance [[-InputName] ] [[-InputUuid] ] [-InputAudioBalance] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSInputAudioMonitorType.md b/docs/Set-OBSInputAudioMonitorType.md index 3278ac6bb..6bd80fd7a 100644 --- a/docs/Set-OBSInputAudioMonitorType.md +++ b/docs/Set-OBSInputAudioMonitorType.md @@ -1,107 +1,64 @@ Set-OBSInputAudioMonitorType ---------------------------- - - - ### Synopsis Set-OBSInputAudioMonitorType : SetInputAudioMonitorType - - --- - ### Description Sets the audio monitor type of an input. - Set-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type SetInputAudioMonitorType. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiomonitortype](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiomonitortype) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the audio monitor type of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the audio monitor type of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MonitorType** - Audio monitor type - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputAudioMonitorType [-InputName] [-MonitorType] [-PassThru] [-NoResponse] [] +Set-OBSInputAudioMonitorType [[-InputName] ] [[-InputUuid] ] [-MonitorType] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSInputAudioSyncOffset.md b/docs/Set-OBSInputAudioSyncOffset.md index 373f69323..49907e6b3 100644 --- a/docs/Set-OBSInputAudioSyncOffset.md +++ b/docs/Set-OBSInputAudioSyncOffset.md @@ -1,107 +1,64 @@ Set-OBSInputAudioSyncOffset --------------------------- - - - ### Synopsis Set-OBSInputAudioSyncOffset : SetInputAudioSyncOffset - - --- - ### Description Sets the audio sync offset of an input. - Set-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type SetInputAudioSyncOffset. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiosyncoffset](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiosyncoffset) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the audio sync offset of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the audio sync offset of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputAudioSyncOffset** - New audio sync offset in milliseconds - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputAudioSyncOffset [-InputName] [-InputAudioSyncOffset] [-PassThru] [-NoResponse] [] +Set-OBSInputAudioSyncOffset [[-InputName] ] [[-InputUuid] ] [-InputAudioSyncOffset] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSInputAudioTracks.md b/docs/Set-OBSInputAudioTracks.md index 54b2e1384..3c475257f 100644 --- a/docs/Set-OBSInputAudioTracks.md +++ b/docs/Set-OBSInputAudioTracks.md @@ -1,107 +1,64 @@ Set-OBSInputAudioTracks ----------------------- - - - ### Synopsis Set-OBSInputAudioTracks : SetInputAudioTracks - - --- - ### Description Sets the enable state of audio tracks of an input. - Set-OBSInputAudioTracks calls the OBS WebSocket with a request of type SetInputAudioTracks. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiotracks](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiotracks) - - - - --- - ### Parameters #### **InputName** - Name of the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputAudioTracks** - Track settings to apply - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|true |2 |true (ByPropertyName)| - - +|`[PSObject]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputAudioTracks [-InputName] [-InputAudioTracks] [-PassThru] [-NoResponse] [] +Set-OBSInputAudioTracks [[-InputName] ] [[-InputUuid] ] [-InputAudioTracks] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSInputMute.md b/docs/Set-OBSInputMute.md index 9391b3dd9..ea33fb5f1 100644 --- a/docs/Set-OBSInputMute.md +++ b/docs/Set-OBSInputMute.md @@ -1,107 +1,64 @@ Set-OBSInputMute ---------------- - - - ### Synopsis Set-OBSInputMute : SetInputMute - - --- - ### Description Sets the audio mute state of an input. - Set-OBSInputMute calls the OBS WebSocket with a request of type SetInputMute. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputmute](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputmute) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the mute state of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the mute state of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputMuted** - Whether to mute the input or not - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputMute [-InputName] -InputMuted [-PassThru] [-NoResponse] [] +Set-OBSInputMute [[-InputName] ] [[-InputUuid] ] -InputMuted [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSInputName.md b/docs/Set-OBSInputName.md index b2beaa7db..19a4297d7 100644 --- a/docs/Set-OBSInputName.md +++ b/docs/Set-OBSInputName.md @@ -1,107 +1,64 @@ Set-OBSInputName ---------------- - - - ### Synopsis Set-OBSInputName : SetInputName - - --- - ### Description Sets the name of an input (rename). - Set-OBSInputName calls the OBS WebSocket with a request of type SetInputName. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputname](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputname) - - - - --- - ### Parameters #### **InputName** - Current input name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +Current input UUID +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **NewInputName** - New name for the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputName [-InputName] [-NewInputName] [-PassThru] [-NoResponse] [] +Set-OBSInputName [[-InputName] ] [[-InputUuid] ] [-NewInputName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSInputSettings.md b/docs/Set-OBSInputSettings.md index b8987bd37..6e0856308 100644 --- a/docs/Set-OBSInputSettings.md +++ b/docs/Set-OBSInputSettings.md @@ -1,122 +1,71 @@ Set-OBSInputSettings -------------------- - - - ### Synopsis Set-OBSInputSettings : SetInputSettings - - --- - ### Description Sets the settings of an input. - Set-OBSInputSettings calls the OBS WebSocket with a request of type SetInputSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputsettings) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the settings of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the settings of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputSettings** - Object of settings to apply - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|true |2 |true (ByPropertyName)| - - +|`[PSObject]`|true |3 |true (ByPropertyName)| #### **Overlay** - True == apply the settings on top of existing ones, False == reset the input to its defaults, then apply settings. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputSettings [-InputName] [-InputSettings] [-Overlay] [-PassThru] [-NoResponse] [] +Set-OBSInputSettings [[-InputName] ] [[-InputUuid] ] [-InputSettings] [-Overlay] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSInputVolume.md b/docs/Set-OBSInputVolume.md index 84c7233d2..44bf81a5d 100644 --- a/docs/Set-OBSInputVolume.md +++ b/docs/Set-OBSInputVolume.md @@ -1,122 +1,71 @@ Set-OBSInputVolume ------------------ - - - ### Synopsis Set-OBSInputVolume : SetInputVolume - - --- - ### Description Sets the volume setting of an input. - Set-OBSInputVolume calls the OBS WebSocket with a request of type SetInputVolume. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputvolume](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputvolume) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the volume of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the volume of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputVolumeMul** - Volume setting in mul - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |2 |true (ByPropertyName)| - - +|`[Double]`|false |3 |true (ByPropertyName)| #### **InputVolumeDb** - Volume setting in dB - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |3 |true (ByPropertyName)| - - +|`[Double]`|false |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputVolume [-InputName] [[-InputVolumeMul] ] [[-InputVolumeDb] ] [-PassThru] [-NoResponse] [] +Set-OBSInputVolume [[-InputName] ] [[-InputUuid] ] [[-InputVolumeMul] ] [[-InputVolumeDb] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSIntensityScopeShader.md b/docs/Set-OBSIntensityScopeShader.md new file mode 100644 index 000000000..392da7346 --- /dev/null +++ b/docs/Set-OBSIntensityScopeShader.md @@ -0,0 +1,83 @@ +Get-OBSIntensityScopeShader +--------------------------- + +### Synopsis +Get-OBSIntensityScopeShader [[-Gain] ] [[-Blend] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blend** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Gain** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSIntensityScopeShader [[-Gain] ] [[-Blend] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSInvertLumaShader.md b/docs/Set-OBSInvertLumaShader.md new file mode 100644 index 000000000..14e1b743a --- /dev/null +++ b/docs/Set-OBSInvertLumaShader.md @@ -0,0 +1,95 @@ +Get-OBSInvertLumaShader +----------------------- + +### Synopsis +Get-OBSInvertLumaShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertColor] [-InvertLuma] [-GammaCorrection] [-TestRamp] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GammaCorrection** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Gamma_Correction| + +#### **InvertColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Invert_Color| + +#### **InvertLuma** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |Invert_Luma| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TestRamp** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[Switch]`|false |named |False |Test_Ramp| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSInvertLumaShader [-InvertColor ] [-InvertLuma ] [-GammaCorrection ] [-TestRamp ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSLuminance2Shader.md b/docs/Set-OBSLuminance2Shader.md new file mode 100644 index 000000000..1b3afb79b --- /dev/null +++ b/docs/Set-OBSLuminance2Shader.md @@ -0,0 +1,119 @@ +Get-OBSLuminance2Shader +----------------------- + +### Synopsis +Get-OBSLuminance2Shader [[-Color] ] [[-LumaMax] ] [[-LumaMin] ] [[-LumaMaxSmooth] ] [[-LumaMinSmooth] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertAlphaChannel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertImageColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LumaMax** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMaxSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSLuminance2Shader [[-Color] ] [[-LumaMax] ] [[-LumaMin] ] [[-LumaMaxSmooth] ] [[-LumaMinSmooth] ] [-InvertImageColor ] [-InvertAlphaChannel ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSLuminanceAlphaShader.md b/docs/Set-OBSLuminanceAlphaShader.md new file mode 100644 index 000000000..ef0f0d526 --- /dev/null +++ b/docs/Set-OBSLuminanceAlphaShader.md @@ -0,0 +1,155 @@ +Get-OBSLuminanceAlphaShader +--------------------------- + +### Synopsis +Get-OBSLuminanceAlphaShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ColorMatrix] ] [[-Color] ] [[-MulVal] ] [[-AddVal] ] [[-Level] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AddVal** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |add_val| + +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **InvertAlphaChannel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Level** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MulVal** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |mul_val| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSLuminanceAlphaShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ColorMatrix] ] [[-Color] ] [[-MulVal] ] [[-AddVal] ] [[-Level] ] [-InvertAlphaChannel ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSLuminanceShader.md b/docs/Set-OBSLuminanceShader.md new file mode 100644 index 000000000..16e34f312 --- /dev/null +++ b/docs/Set-OBSLuminanceShader.md @@ -0,0 +1,101 @@ +Get-OBSLuminanceShader +---------------------- + +### Synopsis +Get-OBSLuminanceShader [[-Color] ] [[-Level] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertAlphaChannel** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InvertImageColor** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Level** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSLuminanceShader [[-Color] ] [[-Level] ] [-InvertImageColor ] [-InvertAlphaChannel ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSMarkdownSource.md b/docs/Set-OBSMarkdownSource.md new file mode 100644 index 000000000..2d0f0314d --- /dev/null +++ b/docs/Set-OBSMarkdownSource.md @@ -0,0 +1,75 @@ +Set-OBSMarkdownSource +--------------------- + +### Synopsis +Sets a markdown source + +--- + +### Description + +Adds or changes a markdown source in OBS. + +--- + +### Parameters +#### **Markdown** +The markdown text, or the path to a markdown file + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |1 |true (ByPropertyName)| + +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |3 |true (ByPropertyName)| + +#### **CSS** +The css style used to render the markdown. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSMarkdownSource [[-Markdown] ] [[-Width] ] [[-Height] ] [[-CSS] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Set-OBSMatrixShader.md b/docs/Set-OBSMatrixShader.md new file mode 100644 index 000000000..373688964 --- /dev/null +++ b/docs/Set-OBSMatrixShader.md @@ -0,0 +1,185 @@ +Get-OBSMatrixShader +------------------- + +### Synopsis +Get-OBSMatrixShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Mouse] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-Ratio] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertDirection] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **InvertDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Invert_Direction| + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **Loops** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **LumaMin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LumaMinSmooth** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Mouse** + +|Type |Required|Position|PipelineInput| +|-------------------|--------|--------|-------------| +|`[System.Single[]]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandActivationF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |rand_activation_f| + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandInstanceF** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |rand_instance_f| + +#### **Ratio** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSMatrixShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Mouse] ] [-InvertDirection ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-Ratio] ] [[-AlphaPercentage] ] [-ApplyToAlphaLayer ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSMediaInputCursor.md b/docs/Set-OBSMediaInputCursor.md index 0e2ee72e2..5a8d6f330 100644 --- a/docs/Set-OBSMediaInputCursor.md +++ b/docs/Set-OBSMediaInputCursor.md @@ -1,109 +1,66 @@ Set-OBSMediaInputCursor ----------------------- - - - ### Synopsis Set-OBSMediaInputCursor : SetMediaInputCursor - - --- - ### Description Sets the cursor position of a media input. This request does not perform bounds checking of the cursor position. - Set-OBSMediaInputCursor calls the OBS WebSocket with a request of type SetMediaInputCursor. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setmediainputcursor](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setmediainputcursor) - - - - --- - ### Parameters #### **InputName** - Name of the media input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the media input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MediaCursor** - New cursor position to set - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSMediaInputCursor [-InputName] [-MediaCursor] [-PassThru] [-NoResponse] [] +Set-OBSMediaInputCursor [[-InputName] ] [[-InputUuid] ] [-MediaCursor] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSMediaSource.md b/docs/Set-OBSMediaSource.md index 71c0dd2c6..feebd1e73 100644 --- a/docs/Set-OBSMediaSource.md +++ b/docs/Set-OBSMediaSource.md @@ -1,216 +1,115 @@ Set-OBSMediaSource ------------------ - - - ### Synopsis Adds a media source - - --- - ### Description Adds a media source to OBS. - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSMediaSource -FilePath My.mp4 ``` - - --- - ### Parameters #### **FilePath** - The path to the media file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-------------------------------------| -|`[String]`|true |1 |true (ByPropertyName)|FullName
LocalFile
local_file| - - +|`[String]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file| #### **CloseWhenInactive** - If set, the source will close when it is inactive. By default, this will be set to true. To explicitly set it to false, use -CloseWhenInactive:$false - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Loop** - If set, the source will automatically restart. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Switch]`|false |named |true (ByPropertyName)|Looping| - - #### **UseHardwareDecoding** - If set, will use hardware decoding, if available. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|HardwareDecoding
hw_decode| - - #### **ClearOnMediaEnd** - If set, will clear the output on the end of the media. If this is set to false, the media will freeze on the last frame. This is set to true by default. To explicitly set to false, use -ClearMediaEnd:$false - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|ClearOnEnd
NoFreezeFrameOnEnd| - - #### **FFMpegOption** - Any FFMpeg demuxer options. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|--------------------------------| |`[String]`|false |2 |true (ByPropertyName)|FFMpegOptions
FFMpeg_Options| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |4 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FitToScreen** - If set, will fit the input to the screen. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell -Set-OBSMediaSource [-FilePath] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +Set-OBSMediaSource [[-FilePath] ] [-CloseWhenInactive] [-Loop] [-UseHardwareDecoding] [-ClearOnMediaEnd] [[-FFMpegOption] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] ``` diff --git a/docs/Set-OBSMonitorSource.md b/docs/Set-OBSMonitorSource.md index 903898e90..7cc9aa3b9 100644 --- a/docs/Set-OBSMonitorSource.md +++ b/docs/Set-OBSMonitorSource.md @@ -1,129 +1,75 @@ Set-OBSDisplaySource -------------------- - - - ### Synopsis Adds a display source - - --- - ### Description Adds a display source to OBS. This captures the contents of the display. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Add-OBSDisplaySource # Adds a display source of the primary monitor ``` +> EXAMPLE 2 -#### EXAMPLE 2 ```PowerShell Add-OBSDisplaySource -Display 2 # Adds a display source of the second monitor ``` - - --- - ### Parameters #### **Monitor** - The monitor number. This the number of the monitor you would like to capture. - - - - - |Type |Required|Position|PipelineInput |Aliases | |---------|--------|--------|---------------------|-------------------------------------------| |`[Int32]`|false |1 |true (ByPropertyName)|MonitorNumber
Display
DisplayNumber| - - #### **CaptureCursor** - If set, will capture the cursor. This will be set by default. If explicitly set to false, the cursor will not be captured. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |2 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |3 |true (ByPropertyName)|InputName| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSDisplaySource [[-Monitor] ] [-CaptureCursor] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Set-OBSMultiplyShader.md b/docs/Set-OBSMultiplyShader.md new file mode 100644 index 000000000..76e066219 --- /dev/null +++ b/docs/Set-OBSMultiplyShader.md @@ -0,0 +1,77 @@ +Get-OBSMultiplyShader +--------------------- + +### Synopsis +Get-OBSMultiplyShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OtherImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |other_image| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSMultiplyShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSNightSkyShader.md b/docs/Set-OBSNightSkyShader.md new file mode 100644 index 000000000..d088124c6 --- /dev/null +++ b/docs/Set-OBSNightSkyShader.md @@ -0,0 +1,179 @@ +Get-OBSNightSkyShader +--------------------- + +### Synopsis +Get-OBSNightSkyShader [[-Speed] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-AlphaPercentage] ] [[-NumberStars] ] [[-SKYCOLOR] ] [[-STARCOLOR] ] [[-LIGHTSKY] ] [[-SKYLIGHTNESS] ] [[-MOONCOLOR] ] [[-MoonSize] ] [[-MoonBumpSize] ] [[-MoonPositionX] ] [[-MoonPositionY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IncludeClouds] [-IncludeMoon] [-ApplyToImage] [-ReplaceImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **CenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------------| +|`[Int]`|false |named |False |center_height_percentage| + +#### **CenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------------| +|`[Int]`|false |named |False |center_width_percentage| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **IncludeClouds** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Include_Clouds| + +#### **IncludeMoon** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[Switch]`|false |named |False |Include_Moon| + +#### **LIGHTSKY** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |LIGHT_SKY| + +#### **MoonBumpSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |moon_bump_size| + +#### **MOONCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |MOON_COLOR| + +#### **MoonPositionX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Moon_Position_x| + +#### **MoonPositionY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Moon_Position_y| + +#### **MoonSize** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |moon_size| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NumberStars** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |number_stars| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SKYCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |SKY_COLOR| + +#### **SKYLIGHTNESS** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |SKY_LIGHTNESS| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **STARCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |STAR_COLOR| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSNightSkyShader [[-Speed] ] [-IncludeClouds ] [-IncludeMoon ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-AlphaPercentage] ] [-ApplyToImage ] [-ReplaceImageColor ] [[-NumberStars] ] [[-SKYCOLOR] ] [[-STARCOLOR] ] [[-LIGHTSKY] ] [[-SKYLIGHTNESS] ] [[-MOONCOLOR] ] [[-MoonSize] ] [[-MoonBumpSize] ] [[-MoonPositionX] ] [[-MoonPositionY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSOpacityShader.md b/docs/Set-OBSOpacityShader.md new file mode 100644 index 000000000..950b992be --- /dev/null +++ b/docs/Set-OBSOpacityShader.md @@ -0,0 +1,77 @@ +Get-OBSOpacityShader +-------------------- + +### Synopsis +Get-OBSOpacityShader [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSOpacityShader [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSOutputSettings.md b/docs/Set-OBSOutputSettings.md index 45aa3e84c..b2e03aa2c 100644 --- a/docs/Set-OBSOutputSettings.md +++ b/docs/Set-OBSOutputSettings.md @@ -1,106 +1,56 @@ Set-OBSOutputSettings --------------------- - - - ### Synopsis Set-OBSOutputSettings : SetOutputSettings - - --- - ### Description Sets the settings of an output. - Set-OBSOutputSettings calls the OBS WebSocket with a request of type SetOutputSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setoutputsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setoutputsettings) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **OutputSettings** - Output settings - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSOutputSettings [-OutputName] [-OutputSettings] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSPagePeelShader.md b/docs/Set-OBSPagePeelShader.md new file mode 100644 index 000000000..5797684b3 --- /dev/null +++ b/docs/Set-OBSPagePeelShader.md @@ -0,0 +1,83 @@ +Get-OBSPagePeelShader +--------------------- + +### Synopsis +Get-OBSPagePeelShader [[-Speed] ] [[-Position] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Position** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPagePeelShader [[-Speed] ] [[-Position] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSPagePeelTransitionShader.md b/docs/Set-OBSPagePeelTransitionShader.md new file mode 100644 index 000000000..04b597945 --- /dev/null +++ b/docs/Set-OBSPagePeelTransitionShader.md @@ -0,0 +1,107 @@ +Get-OBSPagePeelTransitionShader +------------------------------- + +### Synopsis +Get-OBSPagePeelTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-PageColor] ] [[-PageTransparency] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ImageA** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_a| + +#### **ImageB** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |image_b| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |page_color| + +#### **PageTransparency** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |page_transparency| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPagePeelTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [-ConvertLinear ] [[-PageColor] ] [[-PageTransparency] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSPerlinNoiseShader.md b/docs/Set-OBSPerlinNoiseShader.md new file mode 100644 index 000000000..2ed65cd01 --- /dev/null +++ b/docs/Set-OBSPerlinNoiseShader.md @@ -0,0 +1,137 @@ +Get-OBSPerlinNoiseShader +------------------------ + +### Synopsis +Get-OBSPerlinNoiseShader [[-Speed] ] [[-SpeedHorizonal] ] [[-SpeedVertical] ] [[-Iterations] ] [[-WhiteNoise] ] [[-BlackNoise] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-Inverted] [-Multiply] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Animated** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ApplyToChannel** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |apply_to_channel| + +#### **BlackNoise** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |black_noise| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Inverted** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Iterations** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **Multiply** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **SpeedHorizonal** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |speed_horizonal| + +#### **SpeedVertical** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |speed_vertical| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **WhiteNoise** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |white_noise| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPerlinNoiseShader [[-Speed] ] [-Animated ] [-ApplyToChannel ] [-Inverted ] [-Multiply ] [[-SpeedHorizonal] ] [[-SpeedVertical] ] [[-Iterations] ] [[-WhiteNoise] ] [[-BlackNoise] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSPersistentData.md b/docs/Set-OBSPersistentData.md index 63d86aa88..444ed238a 100644 --- a/docs/Set-OBSPersistentData.md +++ b/docs/Set-OBSPersistentData.md @@ -1,121 +1,63 @@ Set-OBSPersistentData --------------------- - - - ### Synopsis Set-OBSPersistentData : SetPersistentData - - --- - ### Description Sets the value of a "slot" from the selected persistent data realm. - Set-OBSPersistentData calls the OBS WebSocket with a request of type SetPersistentData. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setpersistentdata](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setpersistentdata) - - - - --- - ### Parameters #### **Realm** - The data realm to select. `OBS_WEBSOCKET_DATA_REALM_GLOBAL` or `OBS_WEBSOCKET_DATA_REALM_PROFILE` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **SlotName** - The name of the slot to retrieve data from - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **SlotValue** - The value to apply to the slot - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |3 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSPersistentData [-Realm] [-SlotName] [-SlotValue] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSPieChartShader.md b/docs/Set-OBSPieChartShader.md new file mode 100644 index 000000000..f052dd633 --- /dev/null +++ b/docs/Set-OBSPieChartShader.md @@ -0,0 +1,215 @@ +Get-OBSPieChartShader +--------------------- + +### Synopsis +Get-OBSPieChartShader [[-InnerRadius] ] [[-OuterRadius] ] [[-StartAngle] ] [[-Total] ] [[-Part1] ] [[-Color1] ] [[-Part2] ] [[-Color2] ] [[-Part3] ] [[-Color3] ] [[-Part4] ] [[-Color4] ] [[-Part5] ] [[-Color5] ] [[-Part6] ] [[-Color6] ] [[-Part7] ] [[-Color7] ] [[-Part8] ] [[-Color8] ] [[-Part9] ] [[-Color9] ] [[-Part10] ] [[-Color10] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Color1** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_1| + +#### **Color10** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[String]`|false |named |False |color_10| + +#### **Color2** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_2| + +#### **Color3** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_3| + +#### **Color4** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_4| + +#### **Color5** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_5| + +#### **Color6** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_6| + +#### **Color7** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_7| + +#### **Color8** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_8| + +#### **Color9** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |color_9| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InnerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |inner_radius| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OuterRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |outer_radius| + +#### **Part1** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_1 | + +#### **Part10** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_10| + +#### **Part2** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_2 | + +#### **Part3** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_3 | + +#### **Part4** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_4 | + +#### **Part5** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_5 | + +#### **Part6** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_6 | + +#### **Part7** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_7 | + +#### **Part8** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_8 | + +#### **Part9** + +|Type |Required|Position|PipelineInput|Aliases| +|-------|--------|--------|-------------|-------| +|`[Int]`|false |named |False |part_9 | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StartAngle** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |start_angle| + +#### **Total** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPieChartShader [[-InnerRadius] ] [[-OuterRadius] ] [[-StartAngle] ] [[-Total] ] [[-Part1] ] [[-Color1] ] [[-Part2] ] [[-Color2] ] [[-Part3] ] [[-Color3] ] [[-Part4] ] [[-Color4] ] [[-Part5] ] [[-Color5] ] [[-Part6] ] [[-Color6] ] [[-Part7] ] [[-Color7] ] [[-Part8] ] [[-Color8] ] [[-Part9] ] [[-Color9] ] [[-Part10] ] [[-Color10] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSPixelationShader.md b/docs/Set-OBSPixelationShader.md new file mode 100644 index 000000000..ecf125657 --- /dev/null +++ b/docs/Set-OBSPixelationShader.md @@ -0,0 +1,89 @@ +Get-OBSPixelationShader +----------------------- + +### Synopsis +Get-OBSPixelationShader [[-TargetWidth] ] [[-TargetHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TargetHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Target_Height| + +#### **TargetWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |Target_Width| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPixelationShader [[-TargetWidth] ] [[-TargetHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSPixelationTransitionShader.md b/docs/Set-OBSPixelationTransitionShader.md new file mode 100644 index 000000000..3fb035b18 --- /dev/null +++ b/docs/Set-OBSPixelationTransitionShader.md @@ -0,0 +1,101 @@ +Get-OBSPixelationTransitionShader +--------------------------------- + +### Synopsis +Get-OBSPixelationTransitionShader [[-TransitionTime] ] [[-Power] ] [[-CenterX] ] [[-CenterY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **ConvertLinear** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |convert_linear| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TransitionTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |transition_time| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPixelationTransitionShader [[-TransitionTime] ] [-ConvertLinear ] [[-Power] ] [[-CenterX] ] [[-CenterY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSPlaylistSource.md b/docs/Set-OBSPlaylistSource.md index 94fb049a5..c5cf3acb8 100644 --- a/docs/Set-OBSPlaylistSource.md +++ b/docs/Set-OBSPlaylistSource.md @@ -1,230 +1,121 @@ Set-OBSVLCSource ---------------- - - - ### Synopsis Adds a VLC playlist source - - --- - ### Description Adds or sets VLC playlist sources to OBS. VLC must be installed for this to work. - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory ``` - - --- - ### Parameters #### **FilePath** - The path to the media file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |------------|--------|--------|---------------------|--------------------------------------------------| -|`[String[]]`|true |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| - - +|`[String[]]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| #### **Select** - What to select in the playlist. If a number is provided, this will select an index. If a string is provided, this will select the whole name or last part of a name, accepting wildcards. If an `[IO.FileInfo]` is provided, this will be the exact file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|--------------------------| |`[Object]`|false |2 |true (ByPropertyName)|SelectIndex
SelectName| - - #### **Shuffle** - If set, will shuffle the playlist - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Loop** - If set, the playlist will loop. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Switch]`|false |named |true (ByPropertyName)|Looping| - - #### **Subtitle** - If set, will show subtitles, if available. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------| |`[Switch]`|false |named |true (ByPropertyName)|ShowSubtitles
Subtitles| - - #### **AudioTrack** - The selected audio track number. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |3 |true (ByPropertyName)| - - #### **SubtitleTrack** - The selected subtitle track number. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |4 |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |5 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |6 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FitToScreen** - If set, will fit the input to the screen. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell -Set-OBSVLCSource [-FilePath] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +Set-OBSVLCSource [[-FilePath] ] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] ``` diff --git a/docs/Set-OBSPolarShader.md b/docs/Set-OBSPolarShader.md new file mode 100644 index 000000000..5897d8ac8 --- /dev/null +++ b/docs/Set-OBSPolarShader.md @@ -0,0 +1,113 @@ +Get-OBSPolarShader +------------------ + +### Synopsis +Get-OBSPolarShader [[-CenterX] ] [[-CenterY] ] [[-PointY] ] [[-Rotate] ] [[-Repeat] ] [[-Scale] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Flip] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Flip** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PointY** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |point_y| + +#### **Repeat** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Rotate** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Scale** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPolarShader [[-CenterX] ] [[-CenterY] ] [[-PointY] ] [-Flip ] [[-Rotate] ] [[-Repeat] ] [[-Scale] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSProfileParameter.md b/docs/Set-OBSProfileParameter.md index b01f12191..e31eba44e 100644 --- a/docs/Set-OBSProfileParameter.md +++ b/docs/Set-OBSProfileParameter.md @@ -1,121 +1,63 @@ Set-OBSProfileParameter ----------------------- - - - ### Synopsis Set-OBSProfileParameter : SetProfileParameter - - --- - ### Description Sets the value of a parameter in the current profile's configuration. - Set-OBSProfileParameter calls the OBS WebSocket with a request of type SetProfileParameter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setprofileparameter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setprofileparameter) - - - - --- - ### Parameters #### **ParameterCategory** - Category of the parameter to set - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **ParameterName** - Name of the parameter to set - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **ParameterValue** - Value of the parameter to set. Use `null` to delete - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |3 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSProfileParameter [-ParameterCategory] [-ParameterName] [-ParameterValue] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSPulseShader.md b/docs/Set-OBSPulseShader.md new file mode 100644 index 000000000..235344156 --- /dev/null +++ b/docs/Set-OBSPulseShader.md @@ -0,0 +1,137 @@ +Get-OBSPulseShader +------------------ + +### Synopsis +Get-OBSPulseShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **MaxGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |max_growth_pixels| + +#### **MinGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |min_growth_pixels| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSPulseShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRGBAPercentShader.md b/docs/Set-OBSRGBAPercentShader.md new file mode 100644 index 000000000..470f8a426 --- /dev/null +++ b/docs/Set-OBSRGBAPercentShader.md @@ -0,0 +1,95 @@ +Get-OBSRGBAPercentShader +------------------------ + +### Synopsis +Get-OBSRGBAPercentShader [[-RedPercent] ] [[-GreenPercent] ] [[-BluePercent] ] [[-AlphaPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BluePercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GreenPercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RedPercent** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRGBAPercentShader [[-RedPercent] ] [[-GreenPercent] ] [[-BluePercent] ] [[-AlphaPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRGSSAAShader.md b/docs/Set-OBSRGSSAAShader.md new file mode 100644 index 000000000..bed002782 --- /dev/null +++ b/docs/Set-OBSRGSSAAShader.md @@ -0,0 +1,89 @@ +Get-OBSRGSSAAShader +------------------- + +### Synopsis +Get-OBSRGSSAAShader [[-ColorSigma] ] [[-SpatialSigma] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ColorSigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpatialSigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRGSSAAShader [[-ColorSigma] ] [[-SpatialSigma] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRainWindowShader.md b/docs/Set-OBSRainWindowShader.md new file mode 100644 index 000000000..57f5b044c --- /dev/null +++ b/docs/Set-OBSRainWindowShader.md @@ -0,0 +1,107 @@ +Get-OBSRainWindowShader +----------------------- + +### Synopsis +Get-OBSRainWindowShader [[-Size] ] [[-BlurSize] ] [[-TrailStrength] ] [[-TrailColor] ] [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DebugShader] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BlurSize** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **DebugShader** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **Size** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **TrailColor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |trail_color| + +#### **TrailStrength** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |trail_strength| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRainWindowShader [[-Size] ] [[-BlurSize] ] [[-TrailStrength] ] [[-TrailColor] ] [[-Speed] ] [-DebugShader ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRainbowShader.md b/docs/Set-OBSRainbowShader.md new file mode 100644 index 000000000..36220daae --- /dev/null +++ b/docs/Set-OBSRainbowShader.md @@ -0,0 +1,149 @@ +Get-OBSRainbowShader +-------------------- + +### Synopsis +Get-OBSRainbowShader [[-Saturation] ] [[-Luminosity] ] [[-Spread] ] [[-Speed] ] [[-AlphaPercentage] ] [[-RotationOffset] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Luminosity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **Rotational** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RotationOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Rotation_Offset| + +#### **Saturation** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Spread** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRainbowShader [[-Saturation] ] [[-Luminosity] ] [[-Spread] ] [[-Speed] ] [[-AlphaPercentage] ] [-Vertical ] [-Rotational ] [[-RotationOffset] ] [-ApplyToImage ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRecordDirectory.md b/docs/Set-OBSRecordDirectory.md index ac5a0365c..52a323518 100644 --- a/docs/Set-OBSRecordDirectory.md +++ b/docs/Set-OBSRecordDirectory.md @@ -1,91 +1,49 @@ Set-OBSRecordDirectory ---------------------- - - - ### Synopsis Set-OBSRecordDirectory : SetRecordDirectory - - --- - ### Description Sets the current directory that the record output writes files to. - Set-OBSRecordDirectory calls the OBS WebSocket with a request of type SetRecordDirectory. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setrecorddirectory](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setrecorddirectory) - - - - --- - ### Parameters #### **RecordDirectory** - Output directory - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSRecordDirectory [-RecordDirectory] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSRectangularDropShadowShader.md b/docs/Set-OBSRectangularDropShadowShader.md new file mode 100644 index 000000000..a583748d5 --- /dev/null +++ b/docs/Set-OBSRectangularDropShadowShader.md @@ -0,0 +1,95 @@ +Get-OBSRectangularDropShadowShader +---------------------------------- + +### Synopsis +Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShadowBlurSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |shadow_blur_size| + +#### **ShadowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |shadow_color| + +#### **ShadowOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_x| + +#### **ShadowOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_y| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSReflectShader.md b/docs/Set-OBSReflectShader.md new file mode 100644 index 000000000..0c8c374d2 --- /dev/null +++ b/docs/Set-OBSReflectShader.md @@ -0,0 +1,95 @@ +Get-OBSReflectShader +-------------------- + +### Synopsis +Get-OBSReflectShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Horizontal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Vertical** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSReflectShader [-Horizontal ] [-Vertical ] [[-CenterXPercent] ] [[-CenterYPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRemovePartialPixelsShader.md b/docs/Set-OBSRemovePartialPixelsShader.md new file mode 100644 index 000000000..95bacf4d8 --- /dev/null +++ b/docs/Set-OBSRemovePartialPixelsShader.md @@ -0,0 +1,83 @@ +Get-OBSRemovePartialPixelsShader +-------------------------------- + +### Synopsis +Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MinimumAlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------| +|`[Int]`|false |named |False |minimum_alpha_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRenderDelayFilter.md b/docs/Set-OBSRenderDelayFilter.md index 4510cee58..03c9231c6 100644 --- a/docs/Set-OBSRenderDelayFilter.md +++ b/docs/Set-OBSRenderDelayFilter.md @@ -1,76 +1,46 @@ Set-OBSRenderDelayFilter ------------------------ - - - ### Synopsis Sets a RenderDelay filter. - - --- - ### Description Adds or Changes a RenderDelay Filter on an OBS Input. This changes the RenderDelay of an image. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | Set-OBSRenderDelayFilter -RenderDelay .75 ``` - - --- - ### Parameters #### **RenderDelay** - The RenderDelay. - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[TimeSpan]`|false |1 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSRenderDelayFilter [[-RenderDelay] ] [-Force] [] diff --git a/docs/Set-OBSRepeatShader.md b/docs/Set-OBSRepeatShader.md new file mode 100644 index 000000000..d65e1f118 --- /dev/null +++ b/docs/Set-OBSRepeatShader.md @@ -0,0 +1,155 @@ +Get-OBSRepeatShader +------------------- + +### Synopsis +Get-OBSRepeatShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Alpha] ] [[-Copies] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Alpha** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **ColorRangeMax** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_max| + +#### **ColorRangeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_min| + +#### **Copies** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRepeatShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Alpha] ] [[-Copies] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRepeatTextureShader.md b/docs/Set-OBSRepeatTextureShader.md new file mode 100644 index 000000000..e1eb176c7 --- /dev/null +++ b/docs/Set-OBSRepeatTextureShader.md @@ -0,0 +1,167 @@ +Get-OBSRepeatTextureShader +-------------------------- + +### Synopsis +Get-OBSRepeatTextureShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-TexImage] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Blend] ] [[-Copies] ] [[-Notes] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |alpha_percentage| + +#### **Blend** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ColorMatrix** + +|Type |Required|Position|PipelineInput|Aliases | +|---------------------|--------|--------|-------------|------------| +|`[System.Single[][]]`|false |named |False |color_matrix| + +#### **ColorRangeMax** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_max| + +#### **ColorRangeMin** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------------| +|`[System.Single[]]`|false |named |False |color_range_min| + +#### **Copies** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TexImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[String]`|false |named |False |tex_image| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRepeatTextureShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-TexImage] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Blend] ] [[-Copies] ] [[-Notes] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRgbColorWheelShader.md b/docs/Set-OBSRgbColorWheelShader.md new file mode 100644 index 000000000..92f676011 --- /dev/null +++ b/docs/Set-OBSRgbColorWheelShader.md @@ -0,0 +1,125 @@ +Get-OBSRgbColorWheelShader +-------------------------- + +### Synopsis +Get-OBSRgbColorWheelShader [[-Speed] ] [[-ColorDepth] ] [[-ColorToReplace] ] [[-AlphaPercentage] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **CenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------------| +|`[Int]`|false |named |False |center_height_percentage| + +#### **CenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------------| +|`[Int]`|false |named |False |center_width_percentage| + +#### **ColorDepth** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |color_depth| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRgbColorWheelShader [[-Speed] ] [[-ColorDepth] ] [-ApplyToImage ] [-ReplaceImageColor ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-AlphaPercentage] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRgbSplitShader.md b/docs/Set-OBSRgbSplitShader.md new file mode 100644 index 000000000..1ccf4fceb --- /dev/null +++ b/docs/Set-OBSRgbSplitShader.md @@ -0,0 +1,107 @@ +Get-OBSRgbSplitShader +--------------------- + +### Synopsis +Get-OBSRgbSplitShader [[-Redx] ] [[-Redy] ] [[-Greenx] ] [[-Greeny] ] [[-Bluex] ] [[-Bluey] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Bluex** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Bluey** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Greenx** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Greeny** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Redx** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Redy** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRgbSplitShader [[-Redx] ] [[-Redy] ] [[-Greenx] ] [[-Greeny] ] [[-Bluex] ] [[-Bluey] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRgbvisibilityShader.md b/docs/Set-OBSRgbvisibilityShader.md new file mode 100644 index 000000000..83716a07b --- /dev/null +++ b/docs/Set-OBSRgbvisibilityShader.md @@ -0,0 +1,113 @@ +Get-OBSRgbvisibilityShader +-------------------------- + +### Synopsis +Get-OBSRgbvisibilityShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-RedVisibility] ] [[-GreenVisibility] ] [[-BlueVisibility] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Blue** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BlueVisibility** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Green** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **GreenVisibility** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Red** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **RedVisibility** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRgbvisibilityShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-RedVisibility] ] [[-GreenVisibility] ] [[-BlueVisibility] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRippleShader.md b/docs/Set-OBSRippleShader.md new file mode 100644 index 000000000..d2ae46e4a --- /dev/null +++ b/docs/Set-OBSRippleShader.md @@ -0,0 +1,101 @@ +Get-OBSRippleShader +------------------- + +### Synopsis +Get-OBSRippleShader [[-DistanceFactor] ] [[-TimeFactor] ] [[-PowerFactor] ] [[-CenterPosX] ] [[-CenterPosY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterPosX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |center_pos_x| + +#### **CenterPosY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |center_pos_y| + +#### **DistanceFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |distance_factor| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PowerFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |power_factor| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **TimeFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |time_factor| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRippleShader [[-DistanceFactor] ] [[-TimeFactor] ] [[-PowerFactor] ] [[-CenterPosX] ] [[-CenterPosY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRotatingSourceShader.md b/docs/Set-OBSRotatingSourceShader.md new file mode 100644 index 000000000..263f7faf1 --- /dev/null +++ b/docs/Set-OBSRotatingSourceShader.md @@ -0,0 +1,107 @@ +Get-OBSRotatingSourceShader +--------------------------- + +### Synopsis +Get-OBSRotatingSourceShader [[-SpinSpeed] ] [[-Rotation] ] [[-Zoomin] ] [[-XCenter] ] [[-YCenter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-KeepAspectratio] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **KeepAspectratio** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |keep_aspectratio| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Rotation** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpinSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |spin_speed| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **XCenter** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |x_center| + +#### **YCenter** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |y_center| + +#### **Zoomin** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRotatingSourceShader [[-SpinSpeed] ] [[-Rotation] ] [[-Zoomin] ] [-KeepAspectratio ] [[-XCenter] ] [[-YCenter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRotatoeShader.md b/docs/Set-OBSRotatoeShader.md new file mode 100644 index 000000000..689971ec5 --- /dev/null +++ b/docs/Set-OBSRotatoeShader.md @@ -0,0 +1,185 @@ +Get-OBSRotatoeShader +-------------------- + +### Synopsis +Get-OBSRotatoeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-SpeedPercent] ] [[-AxisX] ] [[-AxisY] ] [[-AxisZ] ] [[-AngleDegrees] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateTransform] [-RotatePixels] [-RotateColors] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AngleDegrees** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Angle_Degrees| + +#### **AxisX** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |Axis_X | + +#### **AxisY** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |Axis_Y | + +#### **AxisZ** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |Axis_Z | + +#### **CenterHeightPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------------| +|`[Int]`|false |named |False |center_height_percentage| + +#### **CenterWidthPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------------| +|`[Int]`|false |named |False |center_width_percentage| + +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RotateColors** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |Rotate_Colors| + +#### **RotatePixels** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |Rotate_Pixels| + +#### **RotateTransform** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[Switch]`|false |named |False |Rotate_Transform| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRotatoeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-SpeedPercent] ] [[-AxisX] ] [[-AxisY] ] [[-AxisZ] ] [[-AngleDegrees] ] [-RotateTransform ] [-RotatePixels ] [-RotateColors ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRoundedRect2Shader.md b/docs/Set-OBSRoundedRect2Shader.md new file mode 100644 index 000000000..0e83e6f59 --- /dev/null +++ b/docs/Set-OBSRoundedRect2Shader.md @@ -0,0 +1,113 @@ +Get-OBSRoundedRect2Shader +------------------------- + +### Synopsis +Get-OBSRoundedRect2Shader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-FasterScan] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FasterScan** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |faster_scan| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRect2Shader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [-FasterScan ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRoundedRectPerCornerShader.md b/docs/Set-OBSRoundedRectPerCornerShader.md new file mode 100644 index 000000000..96e2b3661 --- /dev/null +++ b/docs/Set-OBSRoundedRectPerCornerShader.md @@ -0,0 +1,125 @@ +Get-OBSRoundedRectPerCornerShader +--------------------------------- + +### Synopsis +Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] ] [[-CornerRadiusTr] ] [[-CornerRadiusBr] ] [[-CornerRadiusBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadiusBl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_bl| + +#### **CornerRadiusBr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_br| + +#### **CornerRadiusTl** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_tl| + +#### **CornerRadiusTr** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |corner_radius_tr| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] ] [[-CornerRadiusTr] ] [[-CornerRadiusBr] ] [[-CornerRadiusBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRoundedRectPerSideShader.md b/docs/Set-OBSRoundedRectPerSideShader.md new file mode 100644 index 000000000..e86e8cbc7 --- /dev/null +++ b/docs/Set-OBSRoundedRectPerSideShader.md @@ -0,0 +1,125 @@ +Get-OBSRoundedRectPerSideShader +------------------------------- + +### Synopsis +Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] ] [[-CornerRadiusLeft] ] [[-CornerRadiusTop] ] [[-CornerRadiusRight] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaCutOff** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |alpha_cut_off| + +#### **BorderAlphaEnd** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |border_alpha_end| + +#### **BorderAlphaStart** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------------| +|`[Float]`|false |named |False |border_alpha_start| + +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadiusBottom** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------------| +|`[Int]`|false |named |False |corner_radius_bottom| + +#### **CornerRadiusLeft** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------------| +|`[Int]`|false |named |False |corner_radius_left| + +#### **CornerRadiusRight** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------------| +|`[Int]`|false |named |False |corner_radius_right| + +#### **CornerRadiusTop** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-----------------| +|`[Int]`|false |named |False |corner_radius_top| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] ] [[-CornerRadiusLeft] ] [[-CornerRadiusTop] ] [[-CornerRadiusRight] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRoundedRectShader.md b/docs/Set-OBSRoundedRectShader.md new file mode 100644 index 000000000..a0c93c93b --- /dev/null +++ b/docs/Set-OBSRoundedRectShader.md @@ -0,0 +1,89 @@ +Get-OBSRoundedRectShader +------------------------ + +### Synopsis +Get-OBSRoundedRectShader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedRectShader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRoundedStrokeGradientShader.md b/docs/Set-OBSRoundedStrokeGradientShader.md new file mode 100644 index 000000000..23e412682 --- /dev/null +++ b/docs/Set-OBSRoundedStrokeGradientShader.md @@ -0,0 +1,125 @@ +Get-OBSRoundedStrokeGradientShader +---------------------------------- + +### Synopsis +Get-OBSRoundedStrokeGradientShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-RotationSpeed] ] [[-BorderColorL] ] [[-BorderColorR] ] [[-CenterWidth] ] [[-CenterHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColorL** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |border_colorL| + +#### **BorderColorR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |border_colorR| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CenterHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |center_height| + +#### **CenterWidth** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|------------| +|`[Int]`|false |named |False |center_width| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MinimumAlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------| +|`[Int]`|false |named |False |minimum_alpha_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RotationSpeed** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|--------------| +|`[Int]`|false |named |False |rotation_speed| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedStrokeGradientShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-RotationSpeed] ] [[-BorderColorL] ] [[-BorderColorR] ] [[-CenterWidth] ] [[-CenterHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSRoundedStrokeShader.md b/docs/Set-OBSRoundedStrokeShader.md new file mode 100644 index 000000000..9a6b1f54c --- /dev/null +++ b/docs/Set-OBSRoundedStrokeShader.md @@ -0,0 +1,101 @@ +Get-OBSRoundedStrokeShader +-------------------------- + +### Synopsis +Get-OBSRoundedStrokeShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BorderColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |border_color| + +#### **BorderThickness** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |border_thickness| + +#### **CornerRadius** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |corner_radius| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **MinimumAlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------------| +|`[Int]`|false |named |False |minimum_alpha_percent| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSRoundedStrokeShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSScaleFilter.md b/docs/Set-OBSScaleFilter.md index 668faabe3..11bcf868f 100644 --- a/docs/Set-OBSScaleFilter.md +++ b/docs/Set-OBSScaleFilter.md @@ -1,107 +1,61 @@ Set-OBSScaleFilter ------------------ - - - ### Synopsis Sets a Scale filter. - - --- - ### Description Adds or Changes a Scale Filter on an OBS Input. This allows you to resize the image source. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | Set-OBSScaleFilter -Resolution "16:9" ``` - - --- - ### Parameters #### **Resolution** - The Resolution. Can either width x height (e.g. 1920x1080) or an aspect ratio (16:9). - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[String]`|false |1 |true (ByPropertyName)|Scale | - - #### **Sampling** - The sampling method. It will default to "lanczos". - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |2 |true (ByPropertyName)| - - #### **KeepAspectRatio** - If set, will keep the aspect ratio when scaling. This is only valid if the sampling method is set to "lanczos". - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[Switch]`|false |named |true (ByPropertyName)|Undistort| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSScaleFilter [[-Resolution] ] [[-Sampling] ] [-KeepAspectRatio] [-Force] [] diff --git a/docs/Set-OBSScanLineShader.md b/docs/Set-OBSScanLineShader.md new file mode 100644 index 000000000..2dc371b5d --- /dev/null +++ b/docs/Set-OBSScanLineShader.md @@ -0,0 +1,125 @@ +Get-OBSScanLineShader +--------------------- + +### Synopsis +Get-OBSScanLineShader [[-Speed] ] [[-Angle] ] [[-Floor] ] [[-Period] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Lengthwise] [-Animate] [-Shift] [-Boost] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Angle** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Boost** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Floor** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Lengthwise** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Period** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **Shift** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSScanLineShader [-Lengthwise ] [-Animate ] [[-Speed] ] [[-Angle] ] [-Shift ] [-Boost ] [[-Floor] ] [[-Period] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSceneItemBlendMode.md b/docs/Set-OBSSceneItemBlendMode.md index 1b70e4a30..dd7127fb5 100644 --- a/docs/Set-OBSSceneItemBlendMode.md +++ b/docs/Set-OBSSceneItemBlendMode.md @@ -1,124 +1,73 @@ Set-OBSSceneItemBlendMode ------------------------- - - - ### Synopsis Set-OBSSceneItemBlendMode : SetSceneItemBlendMode - - --- - ### Description Sets the blend mode of a scene item. Scenes and Groups - Set-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type SetSceneItemBlendMode. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemblendmode](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemblendmode) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemBlendMode** - New blend mode - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemBlendMode [-SceneName] [-SceneItemId] [-SceneItemBlendMode] [-PassThru] [-NoResponse] [] +Set-OBSSceneItemBlendMode [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-SceneItemBlendMode] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSceneItemEnabled.md b/docs/Set-OBSSceneItemEnabled.md index 697e6d04b..b4b09e744 100644 --- a/docs/Set-OBSSceneItemEnabled.md +++ b/docs/Set-OBSSceneItemEnabled.md @@ -1,124 +1,73 @@ Set-OBSSceneItemEnabled ----------------------- - - - ### Synopsis Set-OBSSceneItemEnabled : SetSceneItemEnabled - - --- - ### Description Sets the enable state of a scene item. Scenes and Groups - Set-OBSSceneItemEnabled calls the OBS WebSocket with a request of type SetSceneItemEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemenabled) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemEnabled** - New enable state of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemEnabled [-SceneName] [-SceneItemId] -SceneItemEnabled [-PassThru] [-NoResponse] [] +Set-OBSSceneItemEnabled [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] -SceneItemEnabled [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSceneItemIndex.md b/docs/Set-OBSSceneItemIndex.md index 87843f495..f338e5055 100644 --- a/docs/Set-OBSSceneItemIndex.md +++ b/docs/Set-OBSSceneItemIndex.md @@ -1,124 +1,73 @@ Set-OBSSceneItemIndex --------------------- - - - ### Synopsis Set-OBSSceneItemIndex : SetSceneItemIndex - - --- - ### Description Sets the index position of a scene item in a scene. Scenes and Groups - Set-OBSSceneItemIndex calls the OBS WebSocket with a request of type SetSceneItemIndex. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemindex](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemindex) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemIndex** - New index position of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |3 |true (ByPropertyName)| - - +|`[Double]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemIndex [-SceneName] [-SceneItemId] [-SceneItemIndex] [-PassThru] [-NoResponse] [] +Set-OBSSceneItemIndex [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-SceneItemIndex] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSceneItemLocked.md b/docs/Set-OBSSceneItemLocked.md index 387d1c01d..1b6f8ae64 100644 --- a/docs/Set-OBSSceneItemLocked.md +++ b/docs/Set-OBSSceneItemLocked.md @@ -1,124 +1,73 @@ Set-OBSSceneItemLocked ---------------------- - - - ### Synopsis Set-OBSSceneItemLocked : SetSceneItemLocked - - --- - ### Description Sets the lock state of a scene item. Scenes and Group - Set-OBSSceneItemLocked calls the OBS WebSocket with a request of type SetSceneItemLocked. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemlocked](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemlocked) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemLocked** - New lock state of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemLocked [-SceneName] [-SceneItemId] -SceneItemLocked [-PassThru] [-NoResponse] [] +Set-OBSSceneItemLocked [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] -SceneItemLocked [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSceneItemTransform.md b/docs/Set-OBSSceneItemTransform.md index fe924a00d..a9cbbb228 100644 --- a/docs/Set-OBSSceneItemTransform.md +++ b/docs/Set-OBSSceneItemTransform.md @@ -1,122 +1,71 @@ Set-OBSSceneItemTransform ------------------------- - - - ### Synopsis Set-OBSSceneItemTransform : SetSceneItemTransform - - --- - ### Description Sets the transform and crop info of a scene item. - Set-OBSSceneItemTransform calls the OBS WebSocket with a request of type SetSceneItemTransform. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemtransform](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemtransform) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemTransform** - Object containing scene item transform info to update - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|true |3 |true (ByPropertyName)| - - +|`[PSObject]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemTransform [-SceneName] [-SceneItemId] [-SceneItemTransform] [-PassThru] [-NoResponse] [] +Set-OBSSceneItemTransform [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-SceneItemTransform] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSceneName.md b/docs/Set-OBSSceneName.md index efe616894..77c9c71e7 100644 --- a/docs/Set-OBSSceneName.md +++ b/docs/Set-OBSSceneName.md @@ -1,107 +1,64 @@ Set-OBSSceneName ---------------- - - - ### Synopsis Set-OBSSceneName : SetSceneName - - --- - ### Description Sets the name of a scene (rename). - Set-OBSSceneName calls the OBS WebSocket with a request of type SetSceneName. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenename](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenename) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to be renamed - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to be renamed +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **NewSceneName** - New name for the scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneName [-SceneName] [-NewSceneName] [-PassThru] [-NoResponse] [] +Set-OBSSceneName [[-SceneName] ] [[-SceneUuid] ] [-NewSceneName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSceneSceneTransitionOverride.md b/docs/Set-OBSSceneSceneTransitionOverride.md index 1f4458615..3a0941716 100644 --- a/docs/Set-OBSSceneSceneTransitionOverride.md +++ b/docs/Set-OBSSceneSceneTransitionOverride.md @@ -1,122 +1,71 @@ Set-OBSSceneSceneTransitionOverride ----------------------------------- - - - ### Synopsis Set-OBSSceneSceneTransitionOverride : SetSceneSceneTransitionOverride - - --- - ### Description -Gets the scene transition overridden for a scene. - +Sets the scene transition overridden for a scene. Set-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type SetSceneSceneTransitionOverride. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenescenetransitionoverride](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenescenetransitionoverride) - - - - --- - ### Parameters #### **SceneName** - Name of the scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **TransitionName** - Name of the scene transition to use as override. Specify `null` to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|false |2 |true (ByPropertyName)| - - +|`[String]`|false |3 |true (ByPropertyName)| #### **TransitionDuration** - Duration to use for any overridden transition. Specify `null` to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |3 |true (ByPropertyName)| - - +|`[Double]`|false |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneSceneTransitionOverride [-SceneName] [[-TransitionName] ] [[-TransitionDuration] ] [-PassThru] [-NoResponse] [] +Set-OBSSceneSceneTransitionOverride [[-SceneName] ] [[-SceneUuid] ] [[-TransitionName] ] [[-TransitionDuration] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSScrollFilter.md b/docs/Set-OBSScrollFilter.md index 4e4b7842a..6aadac8d8 100644 --- a/docs/Set-OBSScrollFilter.md +++ b/docs/Set-OBSScrollFilter.md @@ -1,136 +1,74 @@ Set-OBSScrollFilter ------------------- - - - ### Synopsis Sets a scroll filter. - - --- - ### Description Adds or Changes a Scroll Filter on an OBS Input. This allows you to scroll horizontally or vertically. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | Set-OBSScrollFilter -HorizontalSpeed 100 -VerticalSpeed 100 ``` - - --- - ### Parameters #### **HorizontalSpeed** - The horizontal scroll speed. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Double]`|false |1 |true (ByPropertyName)|SpeedX
Speed_X
HSpeed| - - #### **VerticalSpeed** - The vertical scroll speed. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Double]`|false |2 |true (ByPropertyName)|SpeedY
Speed_Y
VSpeed| - - #### **NoLoop** - If set, will not loop - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **LimitWidth** - If provided, will limit the width. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|----------------------------------| |`[Double]`|false |3 |true (ByPropertyName)|LimitX
Limit_CX
WidthLimit| - - #### **LimitHeight** - If provided, will limit the height. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------| |`[Double]`|false |4 |true (ByPropertyName)|LimitY
Limit_CY
HeightLimit| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSScrollFilter [[-HorizontalSpeed] ] [[-VerticalSpeed] ] [-NoLoop] [[-LimitWidth] ] [[-LimitHeight] ] [-Force] [] diff --git a/docs/Set-OBSSeascapeShader.md b/docs/Set-OBSSeascapeShader.md new file mode 100644 index 000000000..671c6c0d6 --- /dev/null +++ b/docs/Set-OBSSeascapeShader.md @@ -0,0 +1,125 @@ +Get-OBSSeascapeShader +--------------------- + +### Synopsis +Get-OBSSeascapeShader [[-SEAHEIGHT] ] [[-SEACHOPPY] ] [[-SEASPEED] ] [[-SEAFREQ] ] [[-SEABASE] ] [[-SEAWATERCOLOR] ] [[-CAMERASPEED] ] [[-CAMERATURNSPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AA] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AA** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CAMERASPEED** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |CAMERA_SPEED| + +#### **CAMERATURNSPEED** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |CAMERA_TURN_SPEED| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **SEABASE** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[String]`|false |named |False |SEA_BASE| + +#### **SEACHOPPY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |SEA_CHOPPY| + +#### **SEAFREQ** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |SEA_FREQ| + +#### **SEAHEIGHT** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |SEA_HEIGHT| + +#### **SEASPEED** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------| +|`[Float]`|false |named |False |SEA_SPEED| + +#### **SEAWATERCOLOR** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[String]`|false |named |False |SEA_WATER_COLOR| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSeascapeShader [-AA ] [[-SEAHEIGHT] ] [[-SEACHOPPY] ] [[-SEASPEED] ] [[-SEAFREQ] ] [[-SEABASE] ] [[-SEAWATERCOLOR] ] [[-CAMERASPEED] ] [[-CAMERATURNSPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSeasickShader.md b/docs/Set-OBSSeasickShader.md new file mode 100644 index 000000000..09ebefc32 --- /dev/null +++ b/docs/Set-OBSSeasickShader.md @@ -0,0 +1,101 @@ +Get-OBSSeasickShader +-------------------- + +### Synopsis +Get-OBSSeasickShader [[-Notes] ] [[-Amplitude] ] [[-Speed] ] [[-Frequency] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Amplitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Frequency** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSeasickShader [[-Notes] ] [[-Amplitude] ] [[-Speed] ] [[-Frequency] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSelectiveColorShader.md b/docs/Set-OBSSelectiveColorShader.md new file mode 100644 index 000000000..7dcfc66a1 --- /dev/null +++ b/docs/Set-OBSSelectiveColorShader.md @@ -0,0 +1,137 @@ +Get-OBSSelectiveColorShader +--------------------------- + +### Synopsis +Get-OBSSelectiveColorShader [[-CutoffRed] ] [[-CutoffGreen] ] [[-CutoffBlue] ] [[-CutoffYellow] ] [[-AcceptanceAmplifier] ] [[-Notes] ] [[-BackgroundType] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowRed] [-ShowGreen] [-ShowBlue] [-ShowYellow] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AcceptanceAmplifier** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------------| +|`[Float]`|false |named |False |acceptance_Amplifier| + +#### **BackgroundType** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |background_type| + +#### **CutoffBlue** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |cutoff_Blue| + +#### **CutoffGreen** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |cutoff_Green| + +#### **CutoffRed** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |cutoff_Red| + +#### **CutoffYellow** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |cutoff_Yellow| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShowBlue** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------| +|`[Switch]`|false |named |False |show_Blue| + +#### **ShowGreen** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |show_Green| + +#### **ShowRed** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------| +|`[Switch]`|false |named |False |show_Red| + +#### **ShowYellow** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[Switch]`|false |named |False |show_Yellow| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSelectiveColorShader [[-CutoffRed] ] [[-CutoffGreen] ] [[-CutoffBlue] ] [[-CutoffYellow] ] [[-AcceptanceAmplifier] ] [-ShowRed ] [-ShowGreen ] [-ShowBlue ] [-ShowYellow ] [[-Notes] ] [[-BackgroundType] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSShaderFilter.md b/docs/Set-OBSShaderFilter.md index 83ebad520..b9e71b640 100644 --- a/docs/Set-OBSShaderFilter.md +++ b/docs/Set-OBSShaderFilter.md @@ -1,110 +1,86 @@ Set-OBSShaderFilter ------------------- - - - ### Synopsis Sets a Shader filter. - - --- - ### Description Adds or Changes a Shader Filter on an OBS Input. This requires that the [OBS Shader Filter](https://github.com/exeldro/obs-shaderfilter) is installed. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell 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 2 +```PowerShell +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 3 +```PowerShell +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 + } +``` --- - ### Parameters #### **ShaderText** - The text of the shader - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |1 |true (ByPropertyName)| - - #### **ShaderFile** - The file path to the shader, or the short file name of the shader. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|----------| |`[String]`|false |2 |true (ByPropertyName)|ShaderName| - - #### **ShaderSetting** - Any other settings for the shader. To see what the name of a shader setting is, change it in the user interface and then get the input's filters. - - - - - |Type |Required|Position|PipelineInput |Aliases | |------------|--------|--------|---------------------|--------------| |`[PSObject]`|false |3 |true (ByPropertyName)|ShaderSettings| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSShaderFilter [[-ShaderText] ] [[-ShaderFile] ] [[-ShaderSetting] ] [-Force] [] diff --git a/docs/Set-OBSShakeShader.md b/docs/Set-OBSShakeShader.md new file mode 100644 index 000000000..c6932f1e5 --- /dev/null +++ b/docs/Set-OBSShakeShader.md @@ -0,0 +1,167 @@ +Get-OBSShakeShader +------------------ + +### Synopsis +Get-OBSShakeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-LocalTime] ] [[-RandomScale] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Worble] [-RandomizeMovement] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LocalTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------| +|`[Float]`|false |named |False |local_time| + +#### **MaxGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |max_growth_pixels| + +#### **MinGrowthPixels** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |min_growth_pixels| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **RandomizeMovement** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------------| +|`[Switch]`|false |named |False |randomize_movement| + +#### **RandomScale** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |random_scale| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Speed** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +#### **Worble** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSShakeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-LocalTime] ] [[-RandomScale] ] [-Worble ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [-RandomizeMovement ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSharpnessFilter.md b/docs/Set-OBSSharpnessFilter.md index b21b97143..429abfdee 100644 --- a/docs/Set-OBSSharpnessFilter.md +++ b/docs/Set-OBSSharpnessFilter.md @@ -1,76 +1,46 @@ Set-OBSSharpnessFilter ---------------------- - - - ### Synopsis Sets a Sharpness filter. - - --- - ### Description Adds or Changes a Sharpness Filter on an OBS Input. This changes the sharpness of an image. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | Set-OBSSharpnessFilter -Sharpness .75 ``` - - --- - ### Parameters #### **Sharpness** - The Sharpness. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **Force** - If set, will remove a filter if one already exists. If this is not provided and the filter already exists, the settings of the filter will be changed. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - - - --- - ### Syntax ```PowerShell Set-OBSSharpnessFilter [[-Sharpness] ] [-Force] [] diff --git a/docs/Set-OBSShineShader.md b/docs/Set-OBSShineShader.md new file mode 100644 index 000000000..43194d999 --- /dev/null +++ b/docs/Set-OBSShineShader.md @@ -0,0 +1,155 @@ +Get-OBSShineShader +------------------ + +### Synopsis +Get-OBSShineShader [[-LTex] ] [[-ShineColor] ] [[-SpeedPercent] ] [[-GradientPercent] ] [[-DelayPercent] ] [[-Notes] ] [[-StartAdjust] ] [[-StopAdjust] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Hide] [-Reverse] [-OneDirection] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **DelayPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |delay_percent| + +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GradientPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |gradient_percent| + +#### **Hide** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LTex** + +|Type |Required|Position|PipelineInput|Aliases| +|----------|--------|--------|-------------|-------| +|`[String]`|false |named |False |l_tex | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **OneDirection** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[Switch]`|false |named |False |One_Direction| + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Reverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShineColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------| +|`[String]`|false |named |False |shine_color| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **StartAdjust** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |start_adjust| + +#### **StopAdjust** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------| +|`[Float]`|false |named |False |stop_adjust| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSShineShader [[-LTex] ] [[-ShineColor] ] [[-SpeedPercent] ] [[-GradientPercent] ] [[-DelayPercent] ] [-ApplyToAlphaLayer ] [-Ease ] [-Hide ] [-Reverse ] [-OneDirection ] [-Glitch ] [[-Notes] ] [[-StartAdjust] ] [[-StopAdjust] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSimpleGradientShader.md b/docs/Set-OBSSimpleGradientShader.md new file mode 100644 index 000000000..2dc4b4a37 --- /dev/null +++ b/docs/Set-OBSSimpleGradientShader.md @@ -0,0 +1,119 @@ +Get-OBSSimpleGradientShader +--------------------------- + +### Synopsis +Get-OBSSimpleGradientShader [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-LensFlair] [-AnimateLensFlair] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |alpha_percentage| + +#### **AnimateLensFlair** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------------| +|`[Switch]`|false |named |False |Animate_Lens_Flair| + +#### **ApplyToAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------------| +|`[Switch]`|false |named |False |Apply_To_Alpha_Layer| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **LensFlair** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[Switch]`|false |named |False |Lens_Flair| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |speed_percentage| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSimpleGradientShader [[-SpeedPercentage] ] [[-AlphaPercentage] ] [-LensFlair ] [-AnimateLensFlair ] [-ApplyToAlphaLayer ] [-ApplyToSpecificColor ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSimplexNoiseShader.md b/docs/Set-OBSSimplexNoiseShader.md new file mode 100644 index 000000000..399ba8482 --- /dev/null +++ b/docs/Set-OBSSimplexNoiseShader.md @@ -0,0 +1,125 @@ +Get-OBSSimplexNoiseShader +------------------------- + +### Synopsis +Get-OBSSimplexNoiseShader [[-SnapPercent] ] [[-SpeedPercent] ] [[-Resolution] ] [[-ForeColor] ] [[-BackColor] ] [[-AlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Fractal] [-UseAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Alpha_Percent| + +#### **BackColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Back_Color| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ForeColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------| +|`[String]`|false |named |False |Fore_Color| + +#### **Fractal** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Resolution** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SnapPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |Snap_Percent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Speed_Percent| + +#### **UseAlphaLayer** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[Switch]`|false |named |False |Use_Alpha_Layer| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSimplexNoiseShader [[-SnapPercent] ] [[-SpeedPercent] ] [[-Resolution] ] [-Fractal ] [-UseAlphaLayer ] [[-ForeColor] ] [[-BackColor] ] [[-AlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSmartDenoiseShader.md b/docs/Set-OBSSmartDenoiseShader.md new file mode 100644 index 000000000..507159a2b --- /dev/null +++ b/docs/Set-OBSSmartDenoiseShader.md @@ -0,0 +1,89 @@ +Get-OBSSmartDenoiseShader +------------------------- + +### Synopsis +Get-OBSSmartDenoiseShader [[-USigma] ] [[-UKSigma] ] [[-UThreshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UKSigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **USigma** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UThreshold** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSmartDenoiseShader [[-USigma] ] [[-UKSigma] ] [[-UThreshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSoundCloudSource.md b/docs/Set-OBSSoundCloudSource.md new file mode 100644 index 000000000..11bb87de0 --- /dev/null +++ b/docs/Set-OBSSoundCloudSource.md @@ -0,0 +1,176 @@ +Set-OBSSoundCloudSource +----------------------- + +### Synopsis +Sets a Sound Cloud Source + +--- + +### Description + +Adds or changes a Sound Cloud source OBS. +Sound Cloud Sources are Browser Sources that display a [SoundCloud Player Widget](https://developers.soundcloud.com/docs/api/html5-widget). + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-obssoundCloudSource -Uri https://soundcloud.com/outertone/sets/new-earth +``` + +--- + +### Parameters +#### **Uri** +The uri to display. This must point to a SoundCloud URL. + +|Type |Required|Position|PipelineInput |Aliases | +|-------|--------|--------|---------------------|---------------------------------------| +|`[Uri]`|false |1 |true (ByPropertyName)|Url
SoundCloudUri
SoundCloudUrl| + +#### **NoAutoPlay** +If set, will not autoplay. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoArtwork** +If set, will not display album artwork. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoPlayCount** +If set, will not display play count. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoUploaderInfo** +If set, will not display uploader info. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **TrackNumber** +If provided, will start playing at a given track number. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **ShowShare** +If set, will show a share link. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ShowDownload** +If set, will show a download link. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **ShowBuy** +If set, will show a buy link. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Color** +The color used for the SoundCloud audio bars and buttons. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |4 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |5 |true (ByPropertyName)| + +#### **CSS** +The css style used to render the browser page. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **ShutdownWhenHidden** +If set, the browser source will shutdown when it is hidden + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **RestartWhenActived** +If set, the browser source will restart when it is activated. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **RerouteAudio** +If set, audio from the browser source will be rerouted into OBS. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FramesPerSecond** +If provided, the browser source will render at a custom frame rate. + +|Type |Required|Position|PipelineInput |Aliases| +|---------|--------|--------|---------------------|-------| +|`[Int32]`|false |7 |true (ByPropertyName)|FPS | + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |8 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, then "SoundCloud" will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |9 |true (ByPropertyName)|InputName
SourceName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSSoundCloudSource [[-Uri] ] [-NoAutoPlay] [-NoArtwork] [-NoPlayCount] [-NoUploaderInfo] [[-TrackNumber] ] [-ShowShare] [-ShowDownload] [-ShowBuy] [[-Color] ] [[-Width] ] [[-Height] ] [[-CSS] ] [-ShutdownWhenHidden] [-RestartWhenActived] [-RerouteAudio] [[-FramesPerSecond] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Set-OBSSourceFilterEnabled.md b/docs/Set-OBSSourceFilterEnabled.md index 88cce3794..da0a536f2 100644 --- a/docs/Set-OBSSourceFilterEnabled.md +++ b/docs/Set-OBSSourceFilterEnabled.md @@ -1,122 +1,71 @@ Set-OBSSourceFilterEnabled -------------------------- - - - ### Synopsis Set-OBSSourceFilterEnabled : SetSourceFilterEnabled - - --- - ### Description Sets the enable state of a source filter. - Set-OBSSourceFilterEnabled calls the OBS WebSocket with a request of type SetSourceFilterEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterenabled) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **FilterEnabled** - New enable state of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSourceFilterEnabled [-SourceName] [-FilterName] -FilterEnabled [-PassThru] [-NoResponse] [] +Set-OBSSourceFilterEnabled [[-SourceName] ] [[-SourceUuid] ] [-FilterName] -FilterEnabled [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSourceFilterIndex.md b/docs/Set-OBSSourceFilterIndex.md index b1a89a7a6..9e02f7600 100644 --- a/docs/Set-OBSSourceFilterIndex.md +++ b/docs/Set-OBSSourceFilterIndex.md @@ -1,122 +1,71 @@ Set-OBSSourceFilterIndex ------------------------ - - - ### Synopsis Set-OBSSourceFilterIndex : SetSourceFilterIndex - - --- - ### Description Sets the index position of a filter on a source. - Set-OBSSourceFilterIndex calls the OBS WebSocket with a request of type SetSourceFilterIndex. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterindex](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterindex) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **FilterIndex** - New index position of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |3 |true (ByPropertyName)| - - +|`[Double]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSourceFilterIndex [-SourceName] [-FilterName] [-FilterIndex] [-PassThru] [-NoResponse] [] +Set-OBSSourceFilterIndex [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-FilterIndex] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSourceFilterName.md b/docs/Set-OBSSourceFilterName.md index ad99f9cb4..175403d96 100644 --- a/docs/Set-OBSSourceFilterName.md +++ b/docs/Set-OBSSourceFilterName.md @@ -1,122 +1,71 @@ Set-OBSSourceFilterName ----------------------- - - - ### Synopsis Set-OBSSourceFilterName : SetSourceFilterName - - --- - ### Description Sets the name of a source filter (rename). - Set-OBSSourceFilterName calls the OBS WebSocket with a request of type SetSourceFilterName. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltername](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltername) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Current name of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **NewFilterName** - New name for the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSourceFilterName [-SourceName] [-FilterName] [-NewFilterName] [-PassThru] [-NoResponse] [] +Set-OBSSourceFilterName [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-NewFilterName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSourceFilterSettings.md b/docs/Set-OBSSourceFilterSettings.md index df2aca9c6..ba553644c 100644 --- a/docs/Set-OBSSourceFilterSettings.md +++ b/docs/Set-OBSSourceFilterSettings.md @@ -1,137 +1,78 @@ Set-OBSSourceFilterSettings --------------------------- - - - ### Synopsis Set-OBSSourceFilterSettings : SetSourceFilterSettings - - --- - ### Description Sets the settings of a source filter. - Set-OBSSourceFilterSettings calls the OBS WebSocket with a request of type SetSourceFilterSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltersettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltersettings) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter to set the settings of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **FilterSettings** - Object of settings to apply - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|true |3 |true (ByPropertyName)| - - +|`[PSObject]`|true |4 |true (ByPropertyName)| #### **Overlay** - True == apply the settings on top of existing ones, False == reset the input to its defaults, then apply settings. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSourceFilterSettings [-SourceName] [-FilterName] [-FilterSettings] [-Overlay] [-PassThru] [-NoResponse] [] +Set-OBSSourceFilterSettings [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-FilterSettings] [-Overlay] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Set-OBSSpecularShineShader.md b/docs/Set-OBSSpecularShineShader.md new file mode 100644 index 000000000..c07c1e32d --- /dev/null +++ b/docs/Set-OBSSpecularShineShader.md @@ -0,0 +1,125 @@ +Get-OBSSpecularShineShader +-------------------------- + +### Synopsis +Get-OBSSpecularShineShader [[-Hint] ] [[-Roughness] ] [[-LightStrength] ] [[-LightPositionX] ] [[-LightPositionY] ] [[-FlattenNormal] ] [[-StretchNormalX] ] [[-StretchNormalY] ] [[-LightColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FlattenNormal** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Hint** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **LightColor** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------| +|`[System.Single[]]`|false |named |False |Light_Color| + +#### **LightPositionX** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LightPositionY** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **LightStrength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Roughness** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **StretchNormalX** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **StretchNormalY** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSpecularShineShader [[-Hint] ] [[-Roughness] ] [[-LightStrength] ] [[-LightPositionX] ] [[-LightPositionY] ] [[-FlattenNormal] ] [[-StretchNormalX] ] [[-StretchNormalY] ] [[-LightColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSpotlightShader.md b/docs/Set-OBSSpotlightShader.md new file mode 100644 index 000000000..a515a5876 --- /dev/null +++ b/docs/Set-OBSSpotlightShader.md @@ -0,0 +1,113 @@ +Get-OBSSpotlightShader +---------------------- + +### Synopsis +Get-OBSSpotlightShader [[-SpeedPercent] ] [[-FocusPercent] ] [[-SpotlightColor] ] [[-HorizontalOffset] ] [[-VerticalOffset] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **FocusPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Focus_Percent| + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HorizontalOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-----------------| +|`[Float]`|false |named |False |Horizontal_Offset| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|-------------| +|`[Float]`|false |named |False |Speed_Percent| + +#### **SpotlightColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|---------------| +|`[String]`|false |named |False |Spotlight_Color| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VerticalOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |Vertical_Offset| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSpotlightShader [[-SpeedPercent] ] [[-FocusPercent] ] [-Glitch ] [[-SpotlightColor] ] [[-HorizontalOffset] ] [[-VerticalOffset] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSStreamServiceSettings.md b/docs/Set-OBSStreamServiceSettings.md index 30231c684..0d51c1f82 100644 --- a/docs/Set-OBSStreamServiceSettings.md +++ b/docs/Set-OBSStreamServiceSettings.md @@ -1,108 +1,58 @@ Set-OBSStreamServiceSettings ---------------------------- - - - ### Synopsis Set-OBSStreamServiceSettings : SetStreamServiceSettings - - --- - ### Description Sets the current stream service settings (stream destination). Note: Simple RTMP settings can be set with type `rtmp_custom` and the settings fields `server` and `key`. - Set-OBSStreamServiceSettings calls the OBS WebSocket with a request of type SetStreamServiceSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstreamservicesettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstreamservicesettings) - - - - --- - ### Parameters #### **StreamServiceType** - Type of stream service to apply. Example: `rtmp_common` or `rtmp_custom` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **StreamServiceSettings** - Settings to apply to the service - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSStreamServiceSettings [-StreamServiceType] [-StreamServiceSettings] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSStudioModeEnabled.md b/docs/Set-OBSStudioModeEnabled.md index 313672e51..339519d63 100644 --- a/docs/Set-OBSStudioModeEnabled.md +++ b/docs/Set-OBSStudioModeEnabled.md @@ -1,91 +1,49 @@ Set-OBSStudioModeEnabled ------------------------ - - - ### Synopsis Set-OBSStudioModeEnabled : SetStudioModeEnabled - - --- - ### Description Enables or disables studio mode - Set-OBSStudioModeEnabled calls the OBS WebSocket with a request of type SetStudioModeEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstudiomodeenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstudiomodeenabled) - - - - --- - ### Parameters #### **StudioModeEnabled** - True == Enabled, False == Disabled - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSStudioModeEnabled -StudioModeEnabled [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSSwirlShader.md b/docs/Set-OBSSwirlShader.md new file mode 100644 index 000000000..29211abfa --- /dev/null +++ b/docs/Set-OBSSwirlShader.md @@ -0,0 +1,113 @@ +Get-OBSSwirlShader +------------------ + +### Synopsis +Get-OBSSwirlShader [[-Radius] ] [[-Angle] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Inverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Angle** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Inverse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSSwirlShader [[-Radius] ] [[-Angle] ] [[-CenterX] ] [[-CenterY] ] [-Animate ] [-Inverse ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSSwitchSource.md b/docs/Set-OBSSwitchSource.md new file mode 100644 index 000000000..d00a37c49 --- /dev/null +++ b/docs/Set-OBSSwitchSource.md @@ -0,0 +1,222 @@ +Set-OBSSwitchSource +------------------- + +### Synopsis +Adds a VLC playlist source + +--- + +### Description + +Adds or sets VLC playlist sources to OBS. +VLC must be installed for this to work. + +--- + +### Related Links +* [Add-OBSInput](Add-OBSInput.md) + +* [Set-OBSInputSettings](Set-OBSInputSettings.md) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory +``` + +--- + +### Parameters +#### **SourceList** +The path to the media file. + +|Type |Required|Position|PipelineInput |Aliases| +|------------|--------|--------|---------------------|-------| +|`[String[]]`|false |1 |true (ByPropertyName)|Sources| + +#### **Select** +What to select in the playlist. +If a number is provided, this will select an index. +If a string is provided, this will select the whole name or last part of a name, accepting wildcards. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------------------| +|`[Object]`|false |2 |true (ByPropertyName)|SelectIndex
SelectName| + +#### **Loop** +If set, the list of sources will loop. + +|Type |Required|Position|PipelineInput |Aliases| +|----------|--------|--------|---------------------|-------| +|`[Switch]`|false |named |true (ByPropertyName)|Looping| + +#### **TimeSwitch** +If set, will switch between sources. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **Interval** +The interval between sources + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[TimeSpan]`|false |3 |true (ByPropertyName)| + +#### **Duration** +The duration between sources that are switching at a time. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[TimeSpan]`|false |4 |true (ByPropertyName)| + +#### **TimeSwitchTo** +The item that will be switched in a TimeSwitch, after -Duration and -Interval. +Valid Values: + +* None +* Next +* Previous +* First +* Last +* Random + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **MediaStateSwitch** +If set, will switch on the underlying source's media state events. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **MediaStateChange** +The change in media state that should trigger a switch +Valid Values: + +* Playing +* Opening +* Buffering +* Paused +* Stopped +* Ended +* Error +* Playing +* NotOpening +* NotBuffering +* NotPaused +* NotStopped +* NotEnded +* NotError + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Object]`|false |6 |true (ByPropertyName)| + +#### **MediaSwitchTo** +When the source switcher is trigger by media end, this determines the next source that will be switched to. +Valid Values: + +* None +* Next +* Previous +* First +* Last +* Random + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |7 |true (ByPropertyName)| + +#### **TransitionName** +The name of the transition between sources. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |8 |true (ByPropertyName)| + +#### **TransitionProperty** +The properties sent to the transition. +Notice: this current requires confirmation in the UI. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |9 |true (ByPropertyName)| + +#### **ShowTransition** +The name of the transition used to show a source. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |10 |true (ByPropertyName)| + +#### **ShowTransitionProperty** +The properties sent to the show transition. +Notice: this current requires confirmation in the UI. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |11 |true (ByPropertyName)| + +#### **HideTransition** +The transition used to hide a source. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |12 |true (ByPropertyName)| + +#### **HideTransitionProperty** +The properties sent to the hide transition. +Notice: this current requires confirmation in the UI. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |13 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |14 |true (ByPropertyName)| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|------------------------| +|`[String]`|false |15 |true (ByPropertyName)|InputName
SourceName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FitToScreen** +If set, will fit the input to the screen. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSSwitchSource [[-SourceList] ] [[-Select] ] [-Loop] [-TimeSwitch] [[-Interval] ] [[-Duration] ] [[-TimeSwitchTo] ] [-MediaStateSwitch] [[-MediaStateChange] ] [[-MediaSwitchTo] ] [[-TransitionName] ] [[-TransitionProperty] ] [[-ShowTransition] ] [[-ShowTransitionProperty] ] [[-HideTransition] ] [[-HideTransitionProperty] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +``` diff --git a/docs/Set-OBSTBarPosition.md b/docs/Set-OBSTBarPosition.md index 0f03db0ba..f4ef2a9e7 100644 --- a/docs/Set-OBSTBarPosition.md +++ b/docs/Set-OBSTBarPosition.md @@ -1,108 +1,58 @@ Set-OBSTBarPosition ------------------- - - - ### Synopsis Set-OBSTBarPosition : SetTBarPosition - - --- - ### Description Sets the position of the TBar. **Very important note**: This will be deprecated and replaced in a future version of obs-websocket. - Set-OBSTBarPosition calls the OBS WebSocket with a request of type SetTBarPosition. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#settbarposition](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#settbarposition) - - - - --- - ### Parameters #### **Position** - New position - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|true |1 |true (ByPropertyName)| - - #### **Release** - Whether to release the TBar. Only set `false` if you know that you will be sending another position update - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSTBarPosition [-Position] [-Release] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSTetraShader.md b/docs/Set-OBSTetraShader.md new file mode 100644 index 000000000..0a05d4615 --- /dev/null +++ b/docs/Set-OBSTetraShader.md @@ -0,0 +1,179 @@ +Get-OBSTetraShader +------------------ + +### Synopsis +Get-OBSTetraShader [[-RedR] ] [[-RedG] ] [[-RedB] ] [[-YelR] ] [[-YelG] ] [[-YelB] ] [[-GrnR] ] [[-GrnG] ] [[-GrnB] ] [[-CynR] ] [[-CynG] ] [[-CynB] ] [[-BluR] ] [[-BluG] ] [[-BluB] ] [[-MagR] ] [[-MagG] ] [[-MagB] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **BluB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BluG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **BluR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **CynB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **CynG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **CynR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **GrnB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **GrnG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **GrnR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MagB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MagG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **MagR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RedB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **RedG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **RedR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **YelB** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **YelG** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **YelR** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTetraShader [[-RedR] ] [[-RedG] ] [[-RedB] ] [[-YelR] ] [[-YelG] ] [[-YelB] ] [[-GrnR] ] [[-GrnG] ] [[-GrnB] ] [[-CynR] ] [[-CynG] ] [[-CynB] ] [[-BluR] ] [[-BluG] ] [[-BluB] ] [[-MagR] ] [[-MagG] ] [[-MagB] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSThermalShader.md b/docs/Set-OBSThermalShader.md new file mode 100644 index 000000000..69e7f9061 --- /dev/null +++ b/docs/Set-OBSThermalShader.md @@ -0,0 +1,77 @@ +Get-OBSThermalShader +-------------------- + +### Synopsis +Get-OBSThermalShader [[-Strength] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Strength** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSThermalShader [[-Strength] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSTvCrtSubpixelShader.md b/docs/Set-OBSTvCrtSubpixelShader.md new file mode 100644 index 000000000..6e3aa0bda --- /dev/null +++ b/docs/Set-OBSTvCrtSubpixelShader.md @@ -0,0 +1,95 @@ +Get-OBSTvCrtSubpixelShader +-------------------------- + +### Synopsis +Get-OBSTvCrtSubpixelShader [[-ChannelWidth] ] [[-ChannelHeight] ] [[-HGap] ] [[-VGap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ChannelHeight** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ChannelWidth** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **HGap** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VGap** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTvCrtSubpixelShader [[-ChannelWidth] ] [[-ChannelHeight] ] [[-HGap] ] [[-VGap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSTwistShader.md b/docs/Set-OBSTwistShader.md new file mode 100644 index 000000000..e10d1ef23 --- /dev/null +++ b/docs/Set-OBSTwistShader.md @@ -0,0 +1,95 @@ +Get-OBSTwistShader +------------------ + +### Synopsis +Get-OBSTwistShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-Rotation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Rotation** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTwistShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-Rotation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSTwoPassDropShadowShader.md b/docs/Set-OBSTwoPassDropShadowShader.md new file mode 100644 index 000000000..6ba646467 --- /dev/null +++ b/docs/Set-OBSTwoPassDropShadowShader.md @@ -0,0 +1,149 @@ +Get-OBSTwoPassDropShadowShader +------------------------------ + +### Synopsis +Get-OBSTwoPassDropShadowShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **ElapsedTime** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|------------| +|`[Float]`|false |named |False |elapsed_time| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Image** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **IsAlphaPremultiplied** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------------| +|`[Switch]`|false |named |False |is_alpha_premultiplied| + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **RandF** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |rand_f | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **ShadowBlurSize** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |shadow_blur_size| + +#### **ShadowColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|------------| +|`[String]`|false |named |False |shadow_color| + +#### **ShadowOffsetX** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_x| + +#### **ShadowOffsetY** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|---------------| +|`[Int]`|false |named |False |shadow_offset_y| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **UvOffset** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|---------| +|`[System.Single[]]`|false |named |False |uv_offset| + +#### **UvPixelInterval** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|-----------------| +|`[System.Single[]]`|false |named |False |uv_pixel_interval| + +#### **UvScale** + +|Type |Required|Position|PipelineInput|Aliases | +|-------------------|--------|--------|-------------|--------| +|`[System.Single[]]`|false |named |False |uv_scale| + +#### **UvSize** + +|Type |Required|Position|PipelineInput|Aliases| +|-------------------|--------|--------|-------------|-------| +|`[System.Single[]]`|false |named |False |uv_size| + +#### **ViewProj** + +|Type |Required|Position|PipelineInput| +|---------------------|--------|--------|-------------| +|`[System.Single[][]]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSTwoPassDropShadowShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [-IsAlphaPremultiplied ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSVCRShader.md b/docs/Set-OBSVCRShader.md new file mode 100644 index 000000000..9a417b3e6 --- /dev/null +++ b/docs/Set-OBSVCRShader.md @@ -0,0 +1,107 @@ +Get-OBSVCRShader +---------------- + +### Synopsis +Get-OBSVCRShader [[-VerticalShift] ] [[-Distort] ] [[-Vignet] ] [[-Stripe] ] [[-VerticalFactor] ] [[-VerticalHeight] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Distort** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **Stripe** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **VerticalFactor** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |vertical_factor| + +#### **VerticalHeight** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|---------------| +|`[Float]`|false |named |False |vertical_height| + +#### **VerticalShift** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------------| +|`[Float]`|false |named |False |vertical_shift| + +#### **Vignet** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVCRShader [[-VerticalShift] ] [[-Distort] ] [[-Vignet] ] [[-Stripe] ] [[-VerticalFactor] ] [[-VerticalHeight] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSVHSShader.md b/docs/Set-OBSVHSShader.md new file mode 100644 index 000000000..752c8d25c --- /dev/null +++ b/docs/Set-OBSVHSShader.md @@ -0,0 +1,131 @@ +Get-OBSVHSShader +---------------- + +### Synopsis +Get-OBSVHSShader [[-Range] ] [[-OffsetIntensity] ] [[-NoiseQuality] ] [[-NoiseIntensity] ] [[-ColorOffsetIntensity] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **AlphaPercentage** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|----------------| +|`[Float]`|false |named |False |Alpha_Percentage| + +#### **ApplyToImage** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|--------------| +|`[Switch]`|false |named |False |Apply_To_Image| + +#### **ApplyToSpecificColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-----------------------| +|`[Switch]`|false |named |False |Apply_To_Specific_Color| + +#### **ColorOffsetIntensity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ColorToReplace** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|----------------| +|`[String]`|false |named |False |Color_To_Replace| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoiseIntensity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoiseQuality** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **OffsetIntensity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Range** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ReplaceImageColor** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------------| +|`[Switch]`|false |named |False |Replace_Image_Color| + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVHSShader [[-Range] ] [[-OffsetIntensity] ] [[-NoiseQuality] ] [[-NoiseIntensity] ] [[-ColorOffsetIntensity] ] [[-AlphaPercentage] ] [-ApplyToImage ] [-ReplaceImageColor ] [[-ColorToReplace] ] [-ApplyToSpecificColor ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSVLCSource.md b/docs/Set-OBSVLCSource.md index 94fb049a5..c5cf3acb8 100644 --- a/docs/Set-OBSVLCSource.md +++ b/docs/Set-OBSVLCSource.md @@ -1,230 +1,121 @@ Set-OBSVLCSource ---------------- - - - ### Synopsis Adds a VLC playlist source - - --- - ### Description Adds or sets VLC playlist sources to OBS. VLC must be installed for this to work. - - --- - ### Related Links * [Add-OBSInput](Add-OBSInput.md) - - * [Set-OBSInputSettings](Set-OBSInputSettings.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory ``` - - --- - ### Parameters #### **FilePath** - The path to the media file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |------------|--------|--------|---------------------|--------------------------------------------------| -|`[String[]]`|true |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| - - +|`[String[]]`|false |1 |true (ByPropertyName)|FullName
LocalFile
local_file
Playlist| #### **Select** - What to select in the playlist. If a number is provided, this will select an index. If a string is provided, this will select the whole name or last part of a name, accepting wildcards. If an `[IO.FileInfo]` is provided, this will be the exact file. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|--------------------------| |`[Object]`|false |2 |true (ByPropertyName)|SelectIndex
SelectName| - - #### **Shuffle** - If set, will shuffle the playlist - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Loop** - If set, the playlist will loop. - - - - - |Type |Required|Position|PipelineInput |Aliases| |----------|--------|--------|---------------------|-------| |`[Switch]`|false |named |true (ByPropertyName)|Looping| - - #### **Subtitle** - If set, will show subtitles, if available. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------| |`[Switch]`|false |named |true (ByPropertyName)|ShowSubtitles
Subtitles| - - #### **AudioTrack** - The selected audio track number. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |3 |true (ByPropertyName)| - - #### **SubtitleTrack** - The selected subtitle track number. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |4 |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |5 |true (ByPropertyName)| - - #### **Name** - The name of the input. If no name is provided, the last segment of the URI or file path will be the input name. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |6 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FitToScreen** - If set, will fit the input to the screen. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell -Set-OBSVLCSource [-FilePath] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] +Set-OBSVLCSource [[-FilePath] ] [[-Select] ] [-Shuffle] [-Loop] [-Subtitle] [[-AudioTrack] ] [[-SubtitleTrack] ] [[-Scene] ] [[-Name] ] [-Force] [-FitToScreen] [] ``` diff --git a/docs/Set-OBSVideoSettings.md b/docs/Set-OBSVideoSettings.md index f478f403d..0fcf54b6d 100644 --- a/docs/Set-OBSVideoSettings.md +++ b/docs/Set-OBSVideoSettings.md @@ -1,168 +1,86 @@ Set-OBSVideoSettings -------------------- - - - ### Synopsis Set-OBSVideoSettings : SetVideoSettings - - --- - ### Description Sets the current video settings. Note: Fields must be specified in pairs. For example, you cannot set only `baseWidth` without needing to specify `baseHeight`. - Set-OBSVideoSettings calls the OBS WebSocket with a request of type SetVideoSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setvideosettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setvideosettings) - - - - --- - ### Parameters #### **FpsNumerator** - Numerator of the fractional FPS value - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **FpsDenominator** - Denominator of the fractional FPS value - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **BaseWidth** - Width of the base (canvas) resolution in pixels - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **BaseHeight** - Height of the base (canvas) resolution in pixels - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |4 |true (ByPropertyName)| - - #### **OutputWidth** - Width of the output resolution in pixels - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |5 |true (ByPropertyName)| - - #### **OutputHeight** - Height of the output resolution in pixels - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |6 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSVideoSettings [[-FpsNumerator] ] [[-FpsDenominator] ] [[-BaseWidth] ] [[-BaseHeight] ] [[-OutputWidth] ] [[-OutputHeight] ] [-PassThru] [-NoResponse] [] diff --git a/docs/Set-OBSVignettingShader.md b/docs/Set-OBSVignettingShader.md new file mode 100644 index 000000000..b8d467837 --- /dev/null +++ b/docs/Set-OBSVignettingShader.md @@ -0,0 +1,95 @@ +Get-OBSVignettingShader +----------------------- + +### Synopsis +Get-OBSVignettingShader [[-InnerRadius] ] [[-OuterRadius] ] [[-Opacity] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **InnerRadius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Opacity** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **OuterRadius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVignettingShader [[-InnerRadius] ] [[-OuterRadius] ] [[-Opacity] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSVoronoiPixelationShader.md b/docs/Set-OBSVoronoiPixelationShader.md new file mode 100644 index 000000000..dcfc495cd --- /dev/null +++ b/docs/Set-OBSVoronoiPixelationShader.md @@ -0,0 +1,83 @@ +Get-OBSVoronoiPixelationShader +------------------------------ + +### Synopsis +Get-OBSVoronoiPixelationShader [[-PixH] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Alternative] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Alternative** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PixH** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSVoronoiPixelationShader [[-PixH] ] [-Alternative ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSWaveformSource.md b/docs/Set-OBSWaveformSource.md new file mode 100644 index 000000000..d042d0718 --- /dev/null +++ b/docs/Set-OBSWaveformSource.md @@ -0,0 +1,290 @@ +Set-OBSWaveformSource +--------------------- + +### Synopsis +OBS Waveform Source + +--- + +### Description + +Gets, Sets, or Adds a waveform source in OBS. +Waveform sources require the [Waveform Plugin](https://obsproject.com/forum/resources/waveform.1423/) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Add-OBSWaveformSource -Name "SpeakerWaveform" +``` + +--- + +### Parameters +#### **Width** +The width of the browser source. +If none is provided, this will be the output width of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |1 |true (ByPropertyName)| + +#### **Height** +The width of the browser source. +If none is provided, this will be the output height of the video settings. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |2 |true (ByPropertyName)| + +#### **AudioSource** +The audio source for the waveform. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |3 |true (ByPropertyName)| + +#### **DisplayMode** +The display mode for the waveform. +Valid Values: + +* curve +* bars +* stepped_bars +* level_meter +* stepped_level_meter + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| + +#### **RenderMode** +The render mode for the waveform. +Valid Values: + +* line +* solid +* gradient + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| + +#### **WindowMode** +The windowing mode for the waveform. +This is the mathematical function used to determine the current "window" of audio data. +Valid Values: + +* hann +* hamming +* blackman +* blackman_harris +* none + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |6 |true (ByPropertyName)| + +#### **Color** +The color used for the waveform. + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |7 |true (ByPropertyName)| + +#### **CrestColor** +The crest color used for the waveform. +This will be ignored if the render mode is not "gradient". + +|Type |Required|Position|PipelineInput | +|------------|--------|--------|---------------------| +|`[PSObject]`|false |8 |true (ByPropertyName)| + +#### **ChannelMode** +The channel mode for the waveform. +This can be either mono or stereo. +Valid Values: + +* mono +* stereo + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |9 |true (ByPropertyName)| + +#### **ChannelSpacing** +The number of pixels between each channel in stereo mode + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |10 |true (ByPropertyName)| + +#### **RadialLayout** +If set, will use a radial layout for the waveform +Radial layouts will ignore the desired height of the source and instead create a square. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **InvertRadialDirection** +If set, will invert the direction for a radial waveform. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **NoramlizeVolume** +If set, will normalize the volume displayed in the waveform. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **AutoFftSize** +If set, will automatically declare an FFTSize + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **FastPeak** +If set, will attempt to make audio peaks render faster. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +#### **BarWidth** +The width of the waveform bar. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |11 |true (ByPropertyName)| + +#### **BarGap** +The gap between waveform bars. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |12 |true (ByPropertyName)| + +#### **StepWidth** +The width of waveform bar step. +This is only valid when -DisplayMode is 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |13 |true (ByPropertyName)| + +#### **StepGap** +The gap between waveform bar steps. +This is only valid when -DisplayMode is 'stepped_bars' + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |14 |true (ByPropertyName)| + +#### **LowCutoff** +The low-frequency cutoff of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |15 |true (ByPropertyName)| + +#### **HighCutoff** +The high-frequency cutoff of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |16 |true (ByPropertyName)| + +#### **Floor** +The floor of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |17 |true (ByPropertyName)| + +#### **Ceiling** +The ceiling of the waveform. + +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |18 |true (ByPropertyName)| + +#### **Slope** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |19 |true (ByPropertyName)| + +#### **RollOffOctave** + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|--------------| +|`[Double]`|false |20 |true (ByPropertyName)|RollOffOctaves| + +#### **RollOffRate** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |21 |true (ByPropertyName)| + +#### **GradientRatio** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |22 |true (ByPropertyName)| + +#### **Deadzone** + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|false |23 |true (ByPropertyName)| + +#### **TemporalSmoothing** + +Valid Values: + +* none +* exp_moving_avg + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |24 |true (ByPropertyName)| + +#### **Scene** +The name of the scene. +If no scene name is provided, the current program scene will be used. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |25 |true (ByPropertyName)|SceneName| + +#### **Name** +The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|---------| +|`[String]`|false |26 |true (ByPropertyName)|InputName| + +#### **Force** +If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Switch]`|false |named |true (ByPropertyName)| + +--- + +### Syntax +```PowerShell +Set-OBSWaveformSource [[-Width] ] [[-Height] ] [[-AudioSource] ] [[-DisplayMode] ] [[-RenderMode] ] [[-WindowMode] ] [[-Color] ] [[-CrestColor] ] [[-ChannelMode] ] [[-ChannelSpacing] ] [-RadialLayout] [-InvertRadialDirection] [-NoramlizeVolume] [-AutoFftSize] [-FastPeak] [[-BarWidth] ] [[-BarGap] ] [[-StepWidth] ] [[-StepGap] ] [[-LowCutoff] ] [[-HighCutoff] ] [[-Floor] ] [[-Ceiling] ] [[-Slope] ] [[-RollOffOctave] ] [[-RollOffRate] ] [[-GradientRatio] ] [[-Deadzone] ] [[-TemporalSmoothing] ] [[-Scene] ] [[-Name] ] [-Force] [] +``` diff --git a/docs/Set-OBSWindowCaptureSource.md b/docs/Set-OBSWindowCaptureSource.md index ad0ad67d2..21e6cbd2a 100644 --- a/docs/Set-OBSWindowCaptureSource.md +++ b/docs/Set-OBSWindowCaptureSource.md @@ -1,193 +1,104 @@ Set-OBSWindowSource ------------------- - - - ### Synopsis Adds or sets a window capture source - - --- - ### Description Adds or sets a windows capture source in OBS. This captures the contents of a window. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow ``` - - --- - ### Parameters #### **WindowTitle** - The monitor number. This the number of the monitor you would like to capture. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------------------------------------| |`[String]`|false |1 |true (ByPropertyName)|ItemValue
ItemName
WindowName
MainWindowTitle| - - #### **CaptureMethod** - The number of the capture method. By default, automatic (0). - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |2 |true (ByPropertyName)| - - #### **CapturePriority** - The capture priority. - - - Valid Values: * ExactMatch * SameType * SameExecutable - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **CaptureCursor** - If set, will capture the cursor. This will be set by default. If explicitly set to false, the cursor will not be captured. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **ClientArea** - If set, will capture the client area. This will be set by default. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **ForceSDR** - If set, will force SDR. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |4 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |5 |true (ByPropertyName)|InputName| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSWindowSource [[-WindowTitle] ] [[-CaptureMethod] ] [[-CapturePriority] ] [-CaptureCursor] [-ClientArea] [-ForceSDR] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Set-OBSWindowSource.md b/docs/Set-OBSWindowSource.md index ad0ad67d2..21e6cbd2a 100644 --- a/docs/Set-OBSWindowSource.md +++ b/docs/Set-OBSWindowSource.md @@ -1,193 +1,104 @@ Set-OBSWindowSource ------------------- - - - ### Synopsis Adds or sets a window capture source - - --- - ### Description Adds or sets a windows capture source in OBS. This captures the contents of a window. - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow ``` - - --- - ### Parameters #### **WindowTitle** - The monitor number. This the number of the monitor you would like to capture. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------------------------------------------------------| |`[String]`|false |1 |true (ByPropertyName)|ItemValue
ItemName
WindowName
MainWindowTitle| - - #### **CaptureMethod** - The number of the capture method. By default, automatic (0). - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |2 |true (ByPropertyName)| - - #### **CapturePriority** - The capture priority. - - - Valid Values: * ExactMatch * SameType * SameExecutable - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **CaptureCursor** - If set, will capture the cursor. This will be set by default. If explicitly set to false, the cursor will not be captured. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **ClientArea** - If set, will capture the client area. This will be set by default. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **ForceSDR** - If set, will force SDR. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |4 |true (ByPropertyName)|SceneName| - - #### **Name** - The name of the input. If no name is provided, "Display $($Monitor + 1)" will be the input source name. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|---------| |`[String]`|false |5 |true (ByPropertyName)|InputName| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Set-OBSWindowSource [[-WindowTitle] ] [[-CaptureMethod] ] [[-CapturePriority] ] [-CaptureCursor] [-ClientArea] [-ForceSDR] [[-Scene] ] [[-Name] ] [-Force] [] diff --git a/docs/Set-OBSZigZagShader.md b/docs/Set-OBSZigZagShader.md new file mode 100644 index 000000000..236ef9fe4 --- /dev/null +++ b/docs/Set-OBSZigZagShader.md @@ -0,0 +1,125 @@ +Get-OBSZigZagShader +------------------- + +### Synopsis +Get-OBSZigZagShader [[-Radius] ] [[-Angle] ] [[-Period] ] [[-Amplitude] ] [[-CenterX] ] [[-CenterY] ] [[-Phase] ] [[-Animate] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Amplitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Angle** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Animate** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **CenterX** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_x| + +#### **CenterY** + +|Type |Required|Position|PipelineInput|Aliases | +|---------|--------|--------|-------------|--------| +|`[Float]`|false |named |False |center_y| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Period** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Phase** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **Radius** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZigZagShader [[-Radius] ] [[-Angle] ] [[-Period] ] [[-Amplitude] ] [[-CenterX] ] [[-CenterY] ] [[-Phase] ] [[-Animate] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSZoomBlurShader.md b/docs/Set-OBSZoomBlurShader.md new file mode 100644 index 000000000..5a397192f --- /dev/null +++ b/docs/Set-OBSZoomBlurShader.md @@ -0,0 +1,107 @@ +Get-OBSZoomBlurShader +--------------------- + +### Synopsis +Get-OBSZoomBlurShader [[-Samples] ] [[-Magnitude] ] [[-SpeedPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **Ease** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Glitch** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Magnitude** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Notes** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Samples** + +|Type |Required|Position|PipelineInput| +|-------|--------|--------|-------------| +|`[Int]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **SpeedPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|-------------| +|`[Int]`|false |named |False |speed_percent| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZoomBlurShader [[-Samples] ] [[-Magnitude] ] [[-SpeedPercent] ] [-Ease ] [-Glitch ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSZoomShader.md b/docs/Set-OBSZoomShader.md new file mode 100644 index 000000000..5124926cb --- /dev/null +++ b/docs/Set-OBSZoomShader.md @@ -0,0 +1,89 @@ +Get-OBSZoomShader +----------------- + +### Synopsis +Get-OBSZoomShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **Power** + +|Type |Required|Position|PipelineInput| +|---------|--------|--------|-------------| +|`[Float]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZoomShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Set-OBSZoomXYShader.md b/docs/Set-OBSZoomXYShader.md new file mode 100644 index 000000000..0983ab4c2 --- /dev/null +++ b/docs/Set-OBSZoomXYShader.md @@ -0,0 +1,95 @@ +Get-OBSZoomXYShader +------------------- + +### Synopsis +Get-OBSZoomXYShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-XPower] ] [[-YPower] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [] + +--- + +### Description + +--- + +### Parameters +#### **CenterXPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_x_percent| + +#### **CenterYPercent** + +|Type |Required|Position|PipelineInput|Aliases | +|-------|--------|--------|-------------|----------------| +|`[Int]`|false |named |False |center_y_percent| + +#### **FilterName** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[String]`|false |named |False | + +#### **Force** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **NoResponse** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **PassThru** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **ShaderText** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |ShaderContent| + +#### **SourceName** + +|Type |Required|Position|PipelineInput|Aliases | +|----------|--------|--------|-------------|-------------| +|`[String]`|false |named |False |SceneItemName| + +#### **UseShaderTime** + +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |False | + +#### **XPower** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |x_power| + +#### **YPower** + +|Type |Required|Position|PipelineInput|Aliases| +|---------|--------|--------|-------------|-------| +|`[Float]`|false |named |False |y_power| + +--- + +### Inputs +System.String + +--- + +### Outputs +* [Object](https://learn.microsoft.com/en-us/dotnet/api/System.Object) + +--- + +### Syntax +```PowerShell +Get-OBSZoomXYShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-XPower] ] [[-YPower] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force ] [-PassThru ] [-NoResponse ] [-UseShaderTime ] [] +``` diff --git a/docs/Show-OBS.md b/docs/Show-OBS.md index dede41754..877ab4ef2 100644 --- a/docs/Show-OBS.md +++ b/docs/Show-OBS.md @@ -1,177 +1,97 @@ Show-OBS -------- - - - ### Synopsis Shows content in OBS - - --- - ### Description Shows content in Open Broadcasting Studio - - --- - ### Examples -#### EXAMPLE 1 -```PowerShell +> EXAMPLE 1 + ' | Set-Content .\BlueRect.svg Show-OBS -FilePath .\BlueRect.svg -``` +> EXAMPLE 2 -#### EXAMPLE 2 ```PowerShell Show-OBS -FilePath *excited* -RootPath $home\Pictures\Gif ``` - - --- - ### Parameters #### **FilePath** - The path or URI to show in OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-------------------------------------| |`[String]`|true |1 |true (ByPropertyName)|FullName
Src
Uri
FileName| - - #### **Name** - The name of the source in OBS. If this is not provided, it will be derived from the -FilePath. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |2 |true (ByPropertyName)| - - #### **RootPath** - A root path. If not provided, this will be the root of the -FilePath (if it is a filepath). If the file path was a URI, the root path will be ignored. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **Scene** - The name of the scene. If no scene name is provided, the current program scene will be used. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |4 |true (ByPropertyName)| - - #### **Opacity** - The opacity to use for the input. If not provided, will default to 2/3rds. Will only be used when showing a browser source with a -FilePath - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |5 |true (ByPropertyName)| - - #### **SourceParameter** - Any parameters to pass to the source command. - - - - - |Type |Required|Position|PipelineInput | |---------------|--------|--------|---------------------| |`[IDictionary]`|false |6 |true (ByPropertyName)| - - #### **Force** - If set, will check if the source exists in the scene before creating it and removing any existing sources found. If not set, you will get an error if a source with the same name exists. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **FitToScreen** - If set, will make the input become the size of the screen. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Show-OBS [-FilePath] [[-Name] ] [[-RootPath] ] [[-Scene] ] [[-Opacity] ] [[-SourceParameter] ] [-Force] [-FitToScreen] [] diff --git a/docs/Start-OBSEffect.md b/docs/Start-OBSEffect.md index 2f94ce4ff..3bf955886 100644 --- a/docs/Start-OBSEffect.md +++ b/docs/Start-OBSEffect.md @@ -1,227 +1,121 @@ Start-OBSEffect --------------- - - - ### Synopsis Starts obs-powershell effects. - - --- - ### Description Starts an effect in OBS PowerShell. An effect is either a series of messages or a command that can produce a series of messages. - - --- - ### Related Links * [Get-OBSEffect](Get-OBSEffect.md) - - - - --- - ### Parameters #### **EffectName** - The name of the effect. - - - - - |Type |Required|Position|PipelineInput| |------------|--------|--------|-------------| |`[String[]]`|true |named |false | - - #### **Duration** - The duration of the effect. If provided, all effects should use this duration. If not provided, each effect should use it's own duration. - - - - - |Type |Required|Position|PipelineInput| |------------|--------|--------|-------------| |`[TimeSpan]`|false |named |false | - - #### **EffectParameter** - The parameters passed to the effect. - - - - - |Type |Required|Position|PipelineInput |Aliases | |---------------|--------|--------|---------------------|----------------| |`[IDictionary]`|false |named |true (ByPropertyName)|EffectParameters| - - #### **EffectArgument** - The arguments passed to the effect. - - - - - |Type |Required|Position|PipelineInput|Aliases | |--------------|--------|--------|-------------|---------------| |`[PSObject[]]`|false |named |false |EffectArguments| - - #### **Step** - If provided, will step thru running - - - - - |Type |Required|Position|PipelineInput |Aliases| |---------|--------|--------|---------------------|-------| |`[Int32]`|false |named |true (ByPropertyName)|ticks | - - #### **SceneItemID** - The SceneItemID. If this is provided, the effect will be given a target. - - - - - |Type |Required|Position|PipelineInput | |---------|--------|--------|---------------------| |`[Int32]`|false |named |true (ByPropertyName)| - - #### **SceneName** - The SceneName. If this is provided with a -SceneItemID or -SourceName, the effect will be given a target. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |named |true (ByPropertyName)| - - #### **FilterName** - The Filter Name. If this is provided with a -SourceName, the effect will be given a target. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |named |true (ByPropertyName)| - - #### **SourceName** - The Source Name. If this is provided with a -FitlerName -or -SceneName, the effect will be given a target. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |named |true (ByPropertyName)| - - #### **Loop** - If set, will loop the effect. - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | - - #### **LoopCount** - If provided, will loop the effect a number of times. - - - - - |Type |Required|Position|PipelineInput| |---------|--------|--------|-------------| |`[Int32]`|false |named |false | - - #### **Bounce** - If set, will bounce the effect (flip it / reverse it) - - - - - |Type |Required|Position|PipelineInput| |----------|--------|--------|-------------| |`[Switch]`|false |named |false | +#### **Reverse** +If set, will reverse an effect. - - +|Type |Required|Position|PipelineInput| +|----------|--------|--------|-------------| +|`[Switch]`|false |named |false | --- - ### Syntax ```PowerShell -Start-OBSEffect -EffectName [-Duration ] [-EffectParameter ] [-EffectArgument ] [-Step ] [-SceneItemID ] [-SceneName ] [-FilterName ] [-SourceName ] [-Loop] [-LoopCount ] [-Bounce] [] +Start-OBSEffect -EffectName [-Duration ] [-EffectParameter ] [-EffectArgument ] [-Step ] [-SceneItemID ] [-SceneName ] [-FilterName ] [-SourceName ] [-Loop] [-LoopCount ] [-Bounce] [-Reverse] [] ``` diff --git a/docs/Start-OBSOutput.md b/docs/Start-OBSOutput.md index cd52dfb0d..75e139c20 100644 --- a/docs/Start-OBSOutput.md +++ b/docs/Start-OBSOutput.md @@ -1,91 +1,49 @@ Start-OBSOutput --------------- - - - ### Synopsis Start-OBSOutput : StartOutput - - --- - ### Description Starts an output. - Start-OBSOutput calls the OBS WebSocket with a request of type StartOutput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startoutput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startoutput) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSOutput [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/Start-OBSRecord.md b/docs/Start-OBSRecord.md index d3dcefe26..e07ac1ca5 100644 --- a/docs/Start-OBSRecord.md +++ b/docs/Start-OBSRecord.md @@ -1,87 +1,51 @@ Start-OBSRecord --------------- - - - ### Synopsis Start-OBSRecord : StartRecord - - --- - ### Description Starts the record output. - Start-OBSRecord calls the OBS WebSocket with a request of type StartRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/Start-OBSReplayBuffer.md b/docs/Start-OBSReplayBuffer.md index d4010d202..c1543c47d 100644 --- a/docs/Start-OBSReplayBuffer.md +++ b/docs/Start-OBSReplayBuffer.md @@ -1,87 +1,51 @@ Start-OBSReplayBuffer --------------------- - - - ### Synopsis Start-OBSReplayBuffer : StartReplayBuffer - - --- - ### Description Starts the replay buffer output. - Start-OBSReplayBuffer calls the OBS WebSocket with a request of type StartReplayBuffer. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startreplaybuffer](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startreplaybuffer) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSReplayBuffer ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSReplayBuffer [-PassThru] [-NoResponse] [] diff --git a/docs/Start-OBSStream.md b/docs/Start-OBSStream.md index 5dc6e683c..77fc48eb5 100644 --- a/docs/Start-OBSStream.md +++ b/docs/Start-OBSStream.md @@ -1,87 +1,51 @@ Start-OBSStream --------------- - - - ### Synopsis Start-OBSStream : StartStream - - --- - ### Description Starts the stream output. - Start-OBSStream calls the OBS WebSocket with a request of type StartStream. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSStream ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSStream [-PassThru] [-NoResponse] [] diff --git a/docs/Start-OBSVirtualCam.md b/docs/Start-OBSVirtualCam.md index 20036275e..06d1fb449 100644 --- a/docs/Start-OBSVirtualCam.md +++ b/docs/Start-OBSVirtualCam.md @@ -1,87 +1,51 @@ Start-OBSVirtualCam ------------------- - - - ### Synopsis Start-OBSVirtualCam : StartVirtualCam - - --- - ### Description Starts the virtualcam output. - Start-OBSVirtualCam calls the OBS WebSocket with a request of type StartVirtualCam. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startvirtualcam](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startvirtualcam) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSVirtualCam ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSVirtualCam [-PassThru] [-NoResponse] [] diff --git a/docs/Start-Recording.md b/docs/Start-Recording.md index d3dcefe26..e07ac1ca5 100644 --- a/docs/Start-Recording.md +++ b/docs/Start-Recording.md @@ -1,87 +1,51 @@ Start-OBSRecord --------------- - - - ### Synopsis Start-OBSRecord : StartRecord - - --- - ### Description Starts the record output. - Start-OBSRecord calls the OBS WebSocket with a request of type StartRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/Start-Streaming.md b/docs/Start-Streaming.md index 5dc6e683c..77fc48eb5 100644 --- a/docs/Start-Streaming.md +++ b/docs/Start-Streaming.md @@ -1,87 +1,51 @@ Start-OBSStream --------------- - - - ### Synopsis Start-OBSStream : StartStream - - --- - ### Description Starts the stream output. - Start-OBSStream calls the OBS WebSocket with a request of type StartStream. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSStream ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSStream [-PassThru] [-NoResponse] [] diff --git a/docs/Stop-OBSEffect.md b/docs/Stop-OBSEffect.md index 7e912ccc5..a9b0aaacf 100644 --- a/docs/Stop-OBSEffect.md +++ b/docs/Stop-OBSEffect.md @@ -1,17 +1,11 @@ Stop-OBSEffect -------------- - - - ### Synopsis Stops obs-powershell effects. - - --- - ### Description Stops an effect in OBS PowerShell. @@ -22,46 +16,25 @@ However, OBS effects can be bounced or running in a loop. If these effects are stopped, they will not continue to loop or bounce. - - --- - ### Related Links * [Get-OBSEffect](Get-OBSEffect.md) - - * [Start-OBSEffect](Start-OBSEffect.md) - - - - --- - ### Parameters #### **EffectName** - The name of the effect. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - - - --- - ### Syntax ```PowerShell Stop-OBSEffect [-EffectName] [] diff --git a/docs/Stop-OBSOutput.md b/docs/Stop-OBSOutput.md index f19cf0381..078e63343 100644 --- a/docs/Stop-OBSOutput.md +++ b/docs/Stop-OBSOutput.md @@ -1,91 +1,49 @@ Stop-OBSOutput -------------- - - - ### Synopsis Stop-OBSOutput : StopOutput - - --- - ### Description Stops an output. - Stop-OBSOutput calls the OBS WebSocket with a request of type StopOutput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopoutput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopoutput) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSOutput [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/Stop-OBSRecord.md b/docs/Stop-OBSRecord.md index a9379ed9d..8eda8bebf 100644 --- a/docs/Stop-OBSRecord.md +++ b/docs/Stop-OBSRecord.md @@ -1,87 +1,51 @@ Stop-OBSRecord -------------- - - - ### Synopsis Stop-OBSRecord : StopRecord - - --- - ### Description Stops the record output. - Stop-OBSRecord calls the OBS WebSocket with a request of type StopRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/Stop-OBSReplayBuffer.md b/docs/Stop-OBSReplayBuffer.md index 23577ff8c..0c5b3d8e3 100644 --- a/docs/Stop-OBSReplayBuffer.md +++ b/docs/Stop-OBSReplayBuffer.md @@ -1,87 +1,51 @@ Stop-OBSReplayBuffer -------------------- - - - ### Synopsis Stop-OBSReplayBuffer : StopReplayBuffer - - --- - ### Description Stops the replay buffer output. - Stop-OBSReplayBuffer calls the OBS WebSocket with a request of type StopReplayBuffer. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopreplaybuffer](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopreplaybuffer) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSReplayBuffer ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSReplayBuffer [-PassThru] [-NoResponse] [] diff --git a/docs/Stop-OBSStream.md b/docs/Stop-OBSStream.md index 03af55d3a..364aa144a 100644 --- a/docs/Stop-OBSStream.md +++ b/docs/Stop-OBSStream.md @@ -1,87 +1,51 @@ Stop-OBSStream -------------- - - - ### Synopsis Stop-OBSStream : StopStream - - --- - ### Description Stops the stream output. - Stop-OBSStream calls the OBS WebSocket with a request of type StopStream. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSStream ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSStream [-PassThru] [-NoResponse] [] diff --git a/docs/Stop-OBSVirtualCam.md b/docs/Stop-OBSVirtualCam.md index 182a457b7..1e9a3aff6 100644 --- a/docs/Stop-OBSVirtualCam.md +++ b/docs/Stop-OBSVirtualCam.md @@ -1,87 +1,51 @@ Stop-OBSVirtualCam ------------------ - - - ### Synopsis Stop-OBSVirtualCam : StopVirtualCam - - --- - ### Description Stops the virtualcam output. - Stop-OBSVirtualCam calls the OBS WebSocket with a request of type StopVirtualCam. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopvirtualcam](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopvirtualcam) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSVirtualCam ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSVirtualCam [-PassThru] [-NoResponse] [] diff --git a/docs/Stop-Recording.md b/docs/Stop-Recording.md index a9379ed9d..8eda8bebf 100644 --- a/docs/Stop-Recording.md +++ b/docs/Stop-Recording.md @@ -1,87 +1,51 @@ Stop-OBSRecord -------------- - - - ### Synopsis Stop-OBSRecord : StopRecord - - --- - ### Description Stops the record output. - Stop-OBSRecord calls the OBS WebSocket with a request of type StopRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/Stop-Streaming.md b/docs/Stop-Streaming.md index 03af55d3a..364aa144a 100644 --- a/docs/Stop-Streaming.md +++ b/docs/Stop-Streaming.md @@ -1,87 +1,51 @@ Stop-OBSStream -------------- - - - ### Synopsis Stop-OBSStream : StopStream - - --- - ### Description Stops the stream output. - Stop-OBSStream calls the OBS WebSocket with a request of type StopStream. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSStream ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSStream [-PassThru] [-NoResponse] [] diff --git a/docs/Switch-OBSInputMute.md b/docs/Switch-OBSInputMute.md index 6ebc3a2a8..e58efd06b 100644 --- a/docs/Switch-OBSInputMute.md +++ b/docs/Switch-OBSInputMute.md @@ -1,92 +1,57 @@ Switch-OBSInputMute ------------------- - - - ### Synopsis Switch-OBSInputMute : ToggleInputMute - - --- - ### Description Toggles the audio mute state of an input. - Switch-OBSInputMute calls the OBS WebSocket with a request of type ToggleInputMute. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleinputmute](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleinputmute) - - - - --- - ### Parameters #### **InputName** - Name of the input to toggle the mute state of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to toggle the mute state of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Switch-OBSInputMute [-InputName] [-PassThru] [-NoResponse] [] +Switch-OBSInputMute [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/Switch-OBSOutput.md b/docs/Switch-OBSOutput.md index 36e097aeb..be1790853 100644 --- a/docs/Switch-OBSOutput.md +++ b/docs/Switch-OBSOutput.md @@ -1,91 +1,49 @@ Switch-OBSOutput ---------------- - - - ### Synopsis Switch-OBSOutput : ToggleOutput - - --- - ### Description Toggles the status of an output. - Switch-OBSOutput calls the OBS WebSocket with a request of type ToggleOutput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleoutput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleoutput) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSOutput [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/Switch-OBSRecord.md b/docs/Switch-OBSRecord.md index 48470acac..01bc733e0 100644 --- a/docs/Switch-OBSRecord.md +++ b/docs/Switch-OBSRecord.md @@ -1,87 +1,51 @@ Switch-OBSRecord ---------------- - - - ### Synopsis Switch-OBSRecord : ToggleRecord - - --- - ### Description Toggles the status of the record output. - Switch-OBSRecord calls the OBS WebSocket with a request of type ToggleRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/Switch-OBSRecordPause.md b/docs/Switch-OBSRecordPause.md index 6baff9673..b398f2dbf 100644 --- a/docs/Switch-OBSRecordPause.md +++ b/docs/Switch-OBSRecordPause.md @@ -1,87 +1,51 @@ Switch-OBSRecordPause --------------------- - - - ### Synopsis Switch-OBSRecordPause : ToggleRecordPause - - --- - ### Description Toggles pause on the record output. - Switch-OBSRecordPause calls the OBS WebSocket with a request of type ToggleRecordPause. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecordpause](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecordpause) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSRecordPause ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSRecordPause [-PassThru] [-NoResponse] [] diff --git a/docs/Switch-OBSReplayBuffer.md b/docs/Switch-OBSReplayBuffer.md index b331182b5..c857ffcec 100644 --- a/docs/Switch-OBSReplayBuffer.md +++ b/docs/Switch-OBSReplayBuffer.md @@ -1,87 +1,51 @@ Switch-OBSReplayBuffer ---------------------- - - - ### Synopsis Switch-OBSReplayBuffer : ToggleReplayBuffer - - --- - ### Description Toggles the state of the replay buffer output. - Switch-OBSReplayBuffer calls the OBS WebSocket with a request of type ToggleReplayBuffer. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglereplaybuffer](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglereplaybuffer) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSReplayBuffer ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSReplayBuffer [-PassThru] [-NoResponse] [] diff --git a/docs/Switch-OBSStream.md b/docs/Switch-OBSStream.md index 9072b3c8d..0be5ef1b9 100644 --- a/docs/Switch-OBSStream.md +++ b/docs/Switch-OBSStream.md @@ -1,87 +1,51 @@ Switch-OBSStream ---------------- - - - ### Synopsis Switch-OBSStream : ToggleStream - - --- - ### Description Toggles the status of the stream output. - Switch-OBSStream calls the OBS WebSocket with a request of type ToggleStream. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglestream](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglestream) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSStream ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSStream [-PassThru] [-NoResponse] [] diff --git a/docs/Switch-OBSVirtualCam.md b/docs/Switch-OBSVirtualCam.md index 93fa66c5c..28bf67f44 100644 --- a/docs/Switch-OBSVirtualCam.md +++ b/docs/Switch-OBSVirtualCam.md @@ -1,87 +1,51 @@ Switch-OBSVirtualCam -------------------- - - - ### Synopsis Switch-OBSVirtualCam : ToggleVirtualCam - - --- - ### Description Toggles the state of the virtualcam output. - Switch-OBSVirtualCam calls the OBS WebSocket with a request of type ToggleVirtualCam. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglevirtualcam](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglevirtualcam) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSVirtualCam ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSVirtualCam [-PassThru] [-NoResponse] [] diff --git a/docs/Watch-OBS.md b/docs/Watch-OBS.md index 2a4074b4b..5b98f7d2e 100644 --- a/docs/Watch-OBS.md +++ b/docs/Watch-OBS.md @@ -1,94 +1,64 @@ Watch-OBS --------- - - - ### Synopsis Watches OBS - - --- - ### Description Watches the OBS websocket for events. - - --- - ### Related Links * [Connect-OBS](Connect-OBS.md) - - * [Receive-OBS](Receive-OBS.md) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Watch-OBS -WebSocketToken 12345 # Obviously, replace this with your password. ``` +> EXAMPLE 2 -#### EXAMPLE 2 ```PowerShell Watch-OBS # If you turn off authentication on OBS ``` - - --- - ### Parameters #### **WebSocketURI** - The OBS websocket URL. If not provided, this will default to loopback on port 4455. - - - - - |Type |Required|Position|PipelineInput |Aliases | |-------|--------|--------|---------------------|------------| |`[Uri]`|false |1 |true (ByPropertyName)|WebSocketURL| - - #### **WebSocketToken** - A randomly generated password used to connect to OBS. You can see the websocket password in Tools -> obs-websocket settings -> show connect info - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------| |`[String]`|false |2 |true (ByPropertyName)|WebSocketPassword| +#### **BufferSize** +The size of the buffer to use when receiving messages from the websocket. - - +|Type |Required|Position|PipelineInput | +|---------|--------|--------|---------------------| +|`[Int32]`|false |3 |true (ByPropertyName)| --- - ### Syntax ```PowerShell -Watch-OBS [[-WebSocketURI] ] [[-WebSocketToken] ] [] +Watch-OBS [[-WebSocketURI] ] [[-WebSocketToken] ] [[-BufferSize] ] [] ``` diff --git a/docs/_data/Help/Add-OBS3BandEqualizerFilter.json b/docs/_data/Help/Add-OBS3BandEqualizerFilter.json new file mode 100644 index 000000000..29c3a8a85 --- /dev/null +++ b/docs/_data/Help/Add-OBS3BandEqualizerFilter.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Sets a Equalizer filter.", + "Description": "Adds or Changes a 3-band Equalizer Filter on an OBS Input.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBS3DFilter.json b/docs/_data/Help/Add-OBS3DFilter.json new file mode 100644 index 000000000..c9f2f15a3 --- /dev/null +++ b/docs/_data/Help/Add-OBS3DFilter.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Sets an OBS 3D Filter.", + "Description": "Adds or Changes a 3D Filter on an OBS Input. \nThis requires the [3D Effect](https://github.com/exeldro/obs-3d-effect).", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBS3dSwapTransitionShader.json b/docs/_data/Help/Add-OBS3dSwapTransitionShader.json new file mode 100644 index 000000000..9304b6700 --- /dev/null +++ b/docs/_data/Help/Add-OBS3dSwapTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBS3dSwapTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-Reflection] ] [[-Perspective] ] [[-Depth] ] [[-BackgroundColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSAddShader.json b/docs/_data/Help/Add-OBSAddShader.json new file mode 100644 index 000000000..65dcd33b8 --- /dev/null +++ b/docs/_data/Help/Add-OBSAddShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAddShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSAlphaBorderShader.json b/docs/_data/Help/Add-OBSAlphaBorderShader.json new file mode 100644 index 000000000..4b5d0cbfc --- /dev/null +++ b/docs/_data/Help/Add-OBSAlphaBorderShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAlphaBorderShader [[-BorderColor] ] [[-BorderThickness] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSAlphaGamingBentCameraShader.json b/docs/_data/Help/Add-OBSAlphaGamingBentCameraShader.json new file mode 100644 index 000000000..e40b97e64 --- /dev/null +++ b/docs/_data/Help/Add-OBSAlphaGamingBentCameraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSAnimatedPathShader.json b/docs/_data/Help/Add-OBSAnimatedPathShader.json new file mode 100644 index 000000000..c3060fe1d --- /dev/null +++ b/docs/_data/Help/Add-OBSAnimatedPathShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAnimatedPathShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-SpeedPercent] ] [[-PathMap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSAnimatedTextureShader.json b/docs/_data/Help/Add-OBSAnimatedTextureShader.json new file mode 100644 index 000000000..31ace01a0 --- /dev/null +++ b/docs/_data/Help/Add-OBSAnimatedTextureShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAnimatedTextureShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-AnimationImage] ] [[-ColorizationImage] ] [[-PolarAngle] ] [[-PolarHeight] ] [[-SpeedHorizontalPercent] ] [[-SpeedVerticalPercent] ] [[-TintSpeedHorizontalPercent] ] [[-TintSpeedVerticalPercent] ] [[-Alpha] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Bounce] [-CenterAnimation] [-PolarAnimation] [-UseAnimationImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSAsciiShader.json b/docs/_data/Help/Add-OBSAsciiShader.json new file mode 100644 index 000000000..f55fcc6aa --- /dev/null +++ b/docs/_data/Help/Add-OBSAsciiShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAsciiShader [[-Scale] ] [[-BaseColor] ] [[-CharacterSet] ] [[-Note] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Monochrome] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSAspectRatioShader.json b/docs/_data/Help/Add-OBSAspectRatioShader.json new file mode 100644 index 000000000..2affb92f9 --- /dev/null +++ b/docs/_data/Help/Add-OBSAspectRatioShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAspectRatioShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSAudioOutputSource.json b/docs/_data/Help/Add-OBSAudioOutputSource.json new file mode 100644 index 000000000..092206748 --- /dev/null +++ b/docs/_data/Help/Add-OBSAudioOutputSource.json @@ -0,0 +1,44 @@ +{ + "Synopsis": "Adds or sets an audio output source", + "Description": "Adds or sets an audio output source in OBS. This captures the audio that is being sent to an output device.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + "This command currently only supports capturing default audio on Windows. \nTo add support for other operating systems, file an issue or open a pull request." + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSAudioOutputSource" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Set-OBSAudioOutputSource -AudioDevice Speakers" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSBackgroundRemovalShader.json b/docs/_data/Help/Add-OBSBackgroundRemovalShader.json new file mode 100644 index 000000000..2d460871b --- /dev/null +++ b/docs/_data/Help/Add-OBSBackgroundRemovalShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBackgroundRemovalShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-Target] ] [[-Color] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-Convert709to601] [-Convert601to709] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSBlendOpacityShader.json b/docs/_data/Help/Add-OBSBlendOpacityShader.json new file mode 100644 index 000000000..a6d378c06 --- /dev/null +++ b/docs/_data/Help/Add-OBSBlendOpacityShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBlendOpacityShader [[-RotationOffset] ] [[-OpacityStartPercent] ] [[-OpacityEndPercent] ] [[-Spread] ] [[-Speed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSBlinkShader.json b/docs/_data/Help/Add-OBSBlinkShader.json new file mode 100644 index 000000000..376fc91b5 --- /dev/null +++ b/docs/_data/Help/Add-OBSBlinkShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBlinkShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSBloomShader.json b/docs/_data/Help/Add-OBSBloomShader.json new file mode 100644 index 000000000..b0ed430cd --- /dev/null +++ b/docs/_data/Help/Add-OBSBloomShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBloomShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSBorderShader.json b/docs/_data/Help/Add-OBSBorderShader.json new file mode 100644 index 000000000..e916649e4 --- /dev/null +++ b/docs/_data/Help/Add-OBSBorderShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBorderShader [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSBoxBlurShader.json b/docs/_data/Help/Add-OBSBoxBlurShader.json new file mode 100644 index 000000000..b7c6450ad --- /dev/null +++ b/docs/_data/Help/Add-OBSBoxBlurShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBoxBlurShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSBrowserSource.json b/docs/_data/Help/Add-OBSBrowserSource.json new file mode 100644 index 000000000..3f7240c75 --- /dev/null +++ b/docs/_data/Help/Add-OBSBrowserSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a browser source", + "Description": "Adds or changes a browser source in OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSBrowserSource -Uri https://pssvg.start-automating.com/Examples/Stars.svg" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSBulgePinchShader.json b/docs/_data/Help/Add-OBSBulgePinchShader.json new file mode 100644 index 000000000..be8927cc5 --- /dev/null +++ b/docs/_data/Help/Add-OBSBulgePinchShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBulgePinchShader [[-Radius] ] [[-Magnitude] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSBurnShader.json b/docs/_data/Help/Add-OBSBurnShader.json new file mode 100644 index 000000000..5ba3887fa --- /dev/null +++ b/docs/_data/Help/Add-OBSBurnShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBurnShader [[-BurnGradient] ] [[-Speed] ] [[-GradientAdjust] ] [[-DissolveValue] ] [[-SmokeHorizonalSpeed] ] [[-SmokeVerticalSpeed] ] [[-Iterations] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-ApplySmoke] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSCartoonShader.json b/docs/_data/Help/Add-OBSCartoonShader.json new file mode 100644 index 000000000..88074a631 --- /dev/null +++ b/docs/_data/Help/Add-OBSCartoonShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCartoonShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-HueSteps] ] [[-ValueSteps] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSCellShadedShader.json b/docs/_data/Help/Add-OBSCellShadedShader.json new file mode 100644 index 000000000..f58cef3f2 --- /dev/null +++ b/docs/_data/Help/Add-OBSCellShadedShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCellShadedShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSChromaUVDistortionShader.json b/docs/_data/Help/Add-OBSChromaUVDistortionShader.json new file mode 100644 index 000000000..b44fc1c65 --- /dev/null +++ b/docs/_data/Help/Add-OBSChromaUVDistortionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSChromaUVDistortionShader [[-Distortion] ] [[-Amplitude] ] [[-Chroma] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSChromaticAberrationShader.json b/docs/_data/Help/Add-OBSChromaticAberrationShader.json new file mode 100644 index 000000000..6cc5a22fa --- /dev/null +++ b/docs/_data/Help/Add-OBSChromaticAberrationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSChromaticAberrationShader [[-Power] ] [[-Gamma] ] [[-NumIter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DistortRadial] [-DistortBarrel] [-OffsetSpectrumYcgco] [-OffsetSpectrumYuv] [-UseRandom] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSCircleMaskFilterShader.json b/docs/_data/Help/Add-OBSCircleMaskFilterShader.json new file mode 100644 index 000000000..fb16ac976 --- /dev/null +++ b/docs/_data/Help/Add-OBSCircleMaskFilterShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCircleMaskFilterShader [[-Radius] ] [[-CircleOffsetX] ] [[-CircleOffsetY] ] [[-SourceOffsetX] ] [[-SourceOffsetY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Antialiasing] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSClockAnalogShader.json b/docs/_data/Help/Add-OBSClockAnalogShader.json new file mode 100644 index 000000000..ec1db7dfd --- /dev/null +++ b/docs/_data/Help/Add-OBSClockAnalogShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSClockAnalogShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-HourHandleColor] ] [[-MinuteHandleColor] ] [[-SecondHandleColor] ] [[-OutlineColor] ] [[-TopLineColor] ] [[-BackgroundColor] ] [[-TimeOffsetHours] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSClockDigitalLedShader.json b/docs/_data/Help/Add-OBSClockDigitalLedShader.json new file mode 100644 index 000000000..419b04585 --- /dev/null +++ b/docs/_data/Help/Add-OBSClockDigitalLedShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSClockDigitalLedShader [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-LedColor] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowMatrix] [-ShowOff] [-Ampm] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSClockDigitalNixieShader.json b/docs/_data/Help/Add-OBSClockDigitalNixieShader.json new file mode 100644 index 000000000..21739b95a --- /dev/null +++ b/docs/_data/Help/Add-OBSClockDigitalNixieShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-Corecolor] ] [[-Halocolor] ] [[-Flarecolor] ] [[-Anodecolor] ] [[-Anodehighlightscolor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSColorCorrectionFilter.json b/docs/_data/Help/Add-OBSColorCorrectionFilter.json new file mode 100644 index 000000000..8acc546da --- /dev/null +++ b/docs/_data/Help/Add-OBSColorCorrectionFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a color filter", + "Description": "Adds or Changes a Color Correction Filter on an OBS Input. \nThis allows you to: \n* Change Opacity on any source \n* Correct gamma \n* Spin the hue \n* Saturate or Desaturate an image \n* Change the contrast \n* Brighten the image \n* Multiply pixels by a color \n* Add a color to all pixels", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri .\\Assets\\obs-powershell-animated-icon.svg | \n Set-OBSColorFilter -Opacity .5" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSColorDepthShader.json b/docs/_data/Help/Add-OBSColorDepthShader.json new file mode 100644 index 000000000..f27fcb23a --- /dev/null +++ b/docs/_data/Help/Add-OBSColorDepthShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSColorDepthShader [[-ColorDepth] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSColorFilter.json b/docs/_data/Help/Add-OBSColorFilter.json new file mode 100644 index 000000000..8acc546da --- /dev/null +++ b/docs/_data/Help/Add-OBSColorFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a color filter", + "Description": "Adds or Changes a Color Correction Filter on an OBS Input. \nThis allows you to: \n* Change Opacity on any source \n* Correct gamma \n* Spin the hue \n* Saturate or Desaturate an image \n* Change the contrast \n* Brighten the image \n* Multiply pixels by a color \n* Add a color to all pixels", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri .\\Assets\\obs-powershell-animated-icon.svg | \n Set-OBSColorFilter -Opacity .5" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSColorGradeFilterShader.json b/docs/_data/Help/Add-OBSColorGradeFilterShader.json new file mode 100644 index 000000000..b06631ebe --- /dev/null +++ b/docs/_data/Help/Add-OBSColorGradeFilterShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSColorGradeFilterShader [[-Notes] ] [[-Lut] ] [[-LutAmountPercent] ] [[-LutScalePercent] ] [[-LutOffsetPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSColorSource.json b/docs/_data/Help/Add-OBSColorSource.json new file mode 100644 index 000000000..63681dd66 --- /dev/null +++ b/docs/_data/Help/Add-OBSColorSource.json @@ -0,0 +1,36 @@ +{ + "Synopsis": "Adds a color source", + "Description": "Adds a color source to OBS. This displays a single 32-bit color (RGBA).", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSCornerPinShader.json b/docs/_data/Help/Add-OBSCornerPinShader.json new file mode 100644 index 000000000..b86acea1f --- /dev/null +++ b/docs/_data/Help/Add-OBSCornerPinShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCornerPinShader [[-TopLeftX] ] [[-TopLeftY] ] [[-TopRightX] ] [[-TopRightY] ] [[-BottomLeftX] ] [[-BottomLeftY] ] [[-BottomRightX] ] [[-BottomRightY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AntialiasEdges] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSCrtCurvatureShader.json b/docs/_data/Help/Add-OBSCrtCurvatureShader.json new file mode 100644 index 000000000..f22cd33ef --- /dev/null +++ b/docs/_data/Help/Add-OBSCrtCurvatureShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCrtCurvatureShader [[-Strength] ] [[-Border] ] [[-Feathering] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSCurveShader.json b/docs/_data/Help/Add-OBSCurveShader.json new file mode 100644 index 000000000..bdde1131c --- /dev/null +++ b/docs/_data/Help/Add-OBSCurveShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCurveShader [[-Strength] ] [[-Scale] ] [[-CurveColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSCutRectPerCornerShader.json b/docs/_data/Help/Add-OBSCutRectPerCornerShader.json new file mode 100644 index 000000000..1de0ae52d --- /dev/null +++ b/docs/_data/Help/Add-OBSCutRectPerCornerShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCutRectPerCornerShader [[-CornerTl] ] [[-CornerTr] ] [[-CornerBr] ] [[-CornerBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSCylinderShader.json b/docs/_data/Help/Add-OBSCylinderShader.json new file mode 100644 index 000000000..5774b470e --- /dev/null +++ b/docs/_data/Help/Add-OBSCylinderShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCylinderShader [[-CylinderFactor] ] [[-BackgroundCut] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDarkenShader.json b/docs/_data/Help/Add-OBSDarkenShader.json new file mode 100644 index 000000000..9f2837528 --- /dev/null +++ b/docs/_data/Help/Add-OBSDarkenShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDarkenShader [[-OpacityPercentage] ] [[-FillPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDeadPixelFixerShader.json b/docs/_data/Help/Add-OBSDeadPixelFixerShader.json new file mode 100644 index 000000000..5e80f1339 --- /dev/null +++ b/docs/_data/Help/Add-OBSDeadPixelFixerShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDeadPixelFixerShader [[-DeadPixelX] ] [[-DeadPixelY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDensitySatHueShader.json b/docs/_data/Help/Add-OBSDensitySatHueShader.json new file mode 100644 index 000000000..91dc11503 --- /dev/null +++ b/docs/_data/Help/Add-OBSDensitySatHueShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDensitySatHueShader [[-Notes] ] [[-DensityR] ] [[-SaturationR] ] [[-HueShiftR] ] [[-DensityY] ] [[-SaturationY] ] [[-HueShiftY] ] [[-DensityG] ] [[-SaturationG] ] [[-HueShiftG] ] [[-DensityC] ] [[-SaturationC] ] [[-HueShiftC] ] [[-DensityB] ] [[-SaturationB] ] [[-HueShiftB] ] [[-DensityM] ] [[-SaturationM] ] [[-HueShiftM] ] [[-GlobalDensity] ] [[-GlobalSaturation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDiffuseTransitionShader.json b/docs/_data/Help/Add-OBSDiffuseTransitionShader.json new file mode 100644 index 000000000..60618b4a7 --- /dev/null +++ b/docs/_data/Help/Add-OBSDiffuseTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDiffuseTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-NumSamples] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDigitalRainShader.json b/docs/_data/Help/Add-OBSDigitalRainShader.json new file mode 100644 index 000000000..92e7f0912 --- /dev/null +++ b/docs/_data/Help/Add-OBSDigitalRainShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDigitalRainShader [[-Font] ] [[-Noise] ] [[-BaseColor] ] [[-RainSpeed] ] [[-CharSpeed] ] [[-GlowContrast] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDisplaySource.json b/docs/_data/Help/Add-OBSDisplaySource.json new file mode 100644 index 000000000..e4c134f1a --- /dev/null +++ b/docs/_data/Help/Add-OBSDisplaySource.json @@ -0,0 +1,44 @@ +{ + "Synopsis": "Adds a display source", + "Description": "Adds a display source to OBS. This captures the contents of the display.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSDisplaySource # Adds a display source of the primary monitor" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Add-OBSDisplaySource -Display 2 # Adds a display source of the second monitor" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDivideRotateShader.json b/docs/_data/Help/Add-OBSDivideRotateShader.json new file mode 100644 index 000000000..41662a5db --- /dev/null +++ b/docs/_data/Help/Add-OBSDivideRotateShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDivideRotateShader [[-IChannel0] ] [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDoodleShader.json b/docs/_data/Help/Add-OBSDoodleShader.json new file mode 100644 index 000000000..41105c78e --- /dev/null +++ b/docs/_data/Help/Add-OBSDoodleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDoodleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-DoodleScalePercent] ] [[-SnapPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDrawingsShader.json b/docs/_data/Help/Add-OBSDrawingsShader.json new file mode 100644 index 000000000..9f29446bf --- /dev/null +++ b/docs/_data/Help/Add-OBSDrawingsShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDrawingsShader [[-AngleNum] ] [[-SampNum] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDropShadowShader.json b/docs/_data/Help/Add-OBSDropShadowShader.json new file mode 100644 index 000000000..8c563d2a7 --- /dev/null +++ b/docs/_data/Help/Add-OBSDropShadowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-Notes] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDrunkShader.json b/docs/_data/Help/Add-OBSDrunkShader.json new file mode 100644 index 000000000..b5d121d86 --- /dev/null +++ b/docs/_data/Help/Add-OBSDrunkShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDrunkShader [[-ColorMatrix] ] [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeedPercent] ] [[-GlowColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSDynamicMaskShader.json b/docs/_data/Help/Add-OBSDynamicMaskShader.json new file mode 100644 index 000000000..753b04007 --- /dev/null +++ b/docs/_data/Help/Add-OBSDynamicMaskShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDynamicMaskShader [[-InputSource] ] [[-RedBaseValue] ] [[-RedRedInputValue] ] [[-RedGreenInputValue] ] [[-RedBlueInputValue] ] [[-RedAlphaInputValue] ] [[-RedMultiplier] ] [[-GreenBaseValue] ] [[-GreenRedInputValue] ] [[-GreenGreenInputValue] ] [[-GreenBlueInputValue] ] [[-GreenAlphaInputValue] ] [[-GreenMultiplier] ] [[-BlueBaseValue] ] [[-BlueRedInputValue] ] [[-BlueGreenInputValue] ] [[-BlueBlueInputValue] ] [[-BlueAlphaInputValue] ] [[-BlueMultiplier] ] [[-AlphaBaseValue] ] [[-AlphaRedInputValue] ] [[-AlphaGreenInputValue] ] [[-AlphaBlueInputValue] ] [[-AlphaAlphaInputValue] ] [[-AlphaMultiplier] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSEdgeDetectionShader.json b/docs/_data/Help/Add-OBSEdgeDetectionShader.json new file mode 100644 index 000000000..d364ada5e --- /dev/null +++ b/docs/_data/Help/Add-OBSEdgeDetectionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEdgeDetectionShader [[-Sensitivity] ] [[-EdgeColor] ] [[-NonEdgeColor] ] [[-AlphaLevel] ] [[-RandF] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertEdge] [-EdgeMultiply] [-NonEdgeMultiply] [-AlphaChannel] [-AlphaInvert] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSEmbersShader.json b/docs/_data/Help/Add-OBSEmbersShader.json new file mode 100644 index 000000000..c25091fba --- /dev/null +++ b/docs/_data/Help/Add-OBSEmbersShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEmbersShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-AnimationSpeed] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-MovementSpeedPercent] ] [[-LayersCount] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSEmbossColorShader.json b/docs/_data/Help/Add-OBSEmbossColorShader.json new file mode 100644 index 000000000..a9e344e0c --- /dev/null +++ b/docs/_data/Help/Add-OBSEmbossColorShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEmbossColorShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-UpDownPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSEmbossShader.json b/docs/_data/Help/Add-OBSEmbossShader.json new file mode 100644 index 000000000..026c5ce18 --- /dev/null +++ b/docs/_data/Help/Add-OBSEmbossShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEmbossShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-UseColor] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSEqualizierFilter.json b/docs/_data/Help/Add-OBSEqualizierFilter.json new file mode 100644 index 000000000..29c3a8a85 --- /dev/null +++ b/docs/_data/Help/Add-OBSEqualizierFilter.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Sets a Equalizer filter.", + "Description": "Adds or Changes a 3-band Equalizer Filter on an OBS Input.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSExeldroBentCameraShader.json b/docs/_data/Help/Add-OBSExeldroBentCameraShader.json new file mode 100644 index 000000000..97ae580e0 --- /dev/null +++ b/docs/_data/Help/Add-OBSExeldroBentCameraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSExeldroBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFFMpegSource.json b/docs/_data/Help/Add-OBSFFMpegSource.json new file mode 100644 index 000000000..441822c93 --- /dev/null +++ b/docs/_data/Help/Add-OBSFFMpegSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a media source", + "Description": "Adds a media source to OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSMediaSource -FilePath My.mp4" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFadeTransitionShader.json b/docs/_data/Help/Add-OBSFadeTransitionShader.json new file mode 100644 index 000000000..bc051a0d4 --- /dev/null +++ b/docs/_data/Help/Add-OBSFadeTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFadeTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFillColorGradientShader.json b/docs/_data/Help/Add-OBSFillColorGradientShader.json new file mode 100644 index 000000000..bf65f0cd9 --- /dev/null +++ b/docs/_data/Help/Add-OBSFillColorGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorGradientShader [[-Fill] ] [[-GradientWidth] ] [[-GradientOffset] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFillColorLinearShader.json b/docs/_data/Help/Add-OBSFillColorLinearShader.json new file mode 100644 index 000000000..6da086b3c --- /dev/null +++ b/docs/_data/Help/Add-OBSFillColorLinearShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorLinearShader [[-Fill] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFillColorRadialDegreesShader.json b/docs/_data/Help/Add-OBSFillColorRadialDegreesShader.json new file mode 100644 index 000000000..7ad1a1b70 --- /dev/null +++ b/docs/_data/Help/Add-OBSFillColorRadialDegreesShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorRadialDegreesShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFillColorRadialPercentageShader.json b/docs/_data/Help/Add-OBSFillColorRadialPercentageShader.json new file mode 100644 index 000000000..1a86c0783 --- /dev/null +++ b/docs/_data/Help/Add-OBSFillColorRadialPercentageShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorRadialPercentageShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFilterTemplateShader.json b/docs/_data/Help/Add-OBSFilterTemplateShader.json new file mode 100644 index 000000000..5c2eba345 --- /dev/null +++ b/docs/_data/Help/Add-OBSFilterTemplateShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFilterTemplateShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFire3Shader.json b/docs/_data/Help/Add-OBSFire3Shader.json new file mode 100644 index 000000000..e3602effa --- /dev/null +++ b/docs/_data/Help/Add-OBSFire3Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFire3Shader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-AlphaPercentage] ] [[-Speed] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-FlameSize] ] [[-SparkGridHeight] ] [[-FlameModifier] ] [[-FlameTongueSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-FullWidth] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFireShader.json b/docs/_data/Help/Add-OBSFireShader.json new file mode 100644 index 000000000..af997ea1f --- /dev/null +++ b/docs/_data/Help/Add-OBSFireShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFireShader [[-AlphaPercentage] ] [[-Speed] ] [[-FlameSize] ] [[-FireType] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFireworks2Shader.json b/docs/_data/Help/Add-OBSFireworks2Shader.json new file mode 100644 index 000000000..5f52a7e2b --- /dev/null +++ b/docs/_data/Help/Add-OBSFireworks2Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFireworks2Shader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFireworksShader.json b/docs/_data/Help/Add-OBSFireworksShader.json new file mode 100644 index 000000000..306183c67 --- /dev/null +++ b/docs/_data/Help/Add-OBSFireworksShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFireworksShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowFlash] [-ShowStars] [-UseTransparancy] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFisheyeShader.json b/docs/_data/Help/Add-OBSFisheyeShader.json new file mode 100644 index 000000000..bdcb9d2f4 --- /dev/null +++ b/docs/_data/Help/Add-OBSFisheyeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFisheyeShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFisheyeXyShader.json b/docs/_data/Help/Add-OBSFisheyeXyShader.json new file mode 100644 index 000000000..a4c4c84cb --- /dev/null +++ b/docs/_data/Help/Add-OBSFisheyeXyShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFisheyeXyShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-PowerX] ] [[-PowerY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFlipShader.json b/docs/_data/Help/Add-OBSFlipShader.json new file mode 100644 index 000000000..7f6128fd1 --- /dev/null +++ b/docs/_data/Help/Add-OBSFlipShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFlipShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSFrostedGlassShader.json b/docs/_data/Help/Add-OBSFrostedGlassShader.json new file mode 100644 index 000000000..096325363 --- /dev/null +++ b/docs/_data/Help/Add-OBSFrostedGlassShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFrostedGlassShader [[-AlphaPercent] ] [[-Amount] ] [[-Scale] ] [[-BorderOffset] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGainFilter.json b/docs/_data/Help/Add-OBSGainFilter.json new file mode 100644 index 000000000..f9a5418fc --- /dev/null +++ b/docs/_data/Help/Add-OBSGainFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a Gain filter.", + "Description": "Adds or Changes a Gain Filter on an OBS Input. \nThis allows you to make the audio louder or softer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSGainFilter -Gain 1.1 # Gains Audio by 1.1 decibels" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGammaCorrectionShader.json b/docs/_data/Help/Add-OBSGammaCorrectionShader.json new file mode 100644 index 000000000..d4c899951 --- /dev/null +++ b/docs/_data/Help/Add-OBSGammaCorrectionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGammaCorrectionShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGaussianBlurAdvancedShader.json b/docs/_data/Help/Add-OBSGaussianBlurAdvancedShader.json new file mode 100644 index 000000000..19d234348 --- /dev/null +++ b/docs/_data/Help/Add-OBSGaussianBlurAdvancedShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianBlurAdvancedShader [[-Directions] ] [[-Quality] ] [[-Size] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGaussianBlurShader.json b/docs/_data/Help/Add-OBSGaussianBlurShader.json new file mode 100644 index 000000000..9630c3f94 --- /dev/null +++ b/docs/_data/Help/Add-OBSGaussianBlurShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianBlurShader [[-ViewProj] ] [[-Image] ] [[-ImageSize] ] [[-ImageTexel] ] [[-URadius] ] [[-UDiameter] ] [[-UTexelDelta] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-Kernel] ] [[-KernelTexel] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGaussianBlurSimpleShader.json b/docs/_data/Help/Add-OBSGaussianBlurSimpleShader.json new file mode 100644 index 000000000..da9109be2 --- /dev/null +++ b/docs/_data/Help/Add-OBSGaussianBlurSimpleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianBlurSimpleShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGaussianExampleShader.json b/docs/_data/Help/Add-OBSGaussianExampleShader.json new file mode 100644 index 000000000..58383d56d --- /dev/null +++ b/docs/_data/Help/Add-OBSGaussianExampleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianExampleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-InitialImage] ] [[-BeforeImage] ] [[-AfterImage] ] [[-TextColor] ] [[-MaxDistance] ] [[-Exp] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGaussianSimpleShader.json b/docs/_data/Help/Add-OBSGaussianSimpleShader.json new file mode 100644 index 000000000..60b80d6bf --- /dev/null +++ b/docs/_data/Help/Add-OBSGaussianSimpleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianSimpleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Samples] ] [[-LOD] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGbCameraShader.json b/docs/_data/Help/Add-OBSGbCameraShader.json new file mode 100644 index 000000000..2701fc6fa --- /dev/null +++ b/docs/_data/Help/Add-OBSGbCameraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGbCameraShader [[-PixelSize] ] [[-DitherFactor] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Color1] ] [[-Color2] ] [[-Color3] ] [[-Color4] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AlternativeBayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGlassShader.json b/docs/_data/Help/Add-OBSGlassShader.json new file mode 100644 index 000000000..ccb74fed9 --- /dev/null +++ b/docs/_data/Help/Add-OBSGlassShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlassShader [[-AlphaPercent] ] [[-OffsetAmount] ] [[-XSize] ] [[-YSize] ] [[-ReflectionOffset] ] [[-BorderOffset] ] [[-BorderColor] ] [[-GlassColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGlitchAnalogShader.json b/docs/_data/Help/Add-OBSGlitchAnalogShader.json new file mode 100644 index 000000000..305702c1f --- /dev/null +++ b/docs/_data/Help/Add-OBSGlitchAnalogShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] ] [[-ScanLineJitterThresholdPercent] ] [[-VerticalJumpAmount] ] [[-VerticalSpeed] ] [[-HorizontalShake] ] [[-ColorDriftAmount] ] [[-ColorDriftSpeed] ] [[-PulseSpeedPercent] ] [[-AlphaPercent] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateColors] [-ApplyToAlphaLayer] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGlitchShader.json b/docs/_data/Help/Add-OBSGlitchShader.json new file mode 100644 index 000000000..7cff399c7 --- /dev/null +++ b/docs/_data/Help/Add-OBSGlitchShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlitchShader [[-AMT] ] [[-SPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGlowShader.json b/docs/_data/Help/Add-OBSGlowShader.json new file mode 100644 index 000000000..bf035acbe --- /dev/null +++ b/docs/_data/Help/Add-OBSGlowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlowShader [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSGradientShader.json b/docs/_data/Help/Add-OBSGradientShader.json new file mode 100644 index 000000000..d163fa07d --- /dev/null +++ b/docs/_data/Help/Add-OBSGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGradientShader [[-StartColor] ] [[-StartStep] ] [[-MiddleColor] ] [[-MiddleStep] ] [[-EndColor] ] [[-EndStep] ] [[-AlphaPercent] ] [[-PulseSpeed] ] [[-ColorToReplace] ] [[-GradientCenterWidthPercentage] ] [[-GradientCenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-RotateColors] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSHalftoneShader.json b/docs/_data/Help/Add-OBSHalftoneShader.json new file mode 100644 index 000000000..b579880d4 --- /dev/null +++ b/docs/_data/Help/Add-OBSHalftoneShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHalftoneShader [[-Threshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSHeatWaveSimpleShader.json b/docs/_data/Help/Add-OBSHeatWaveSimpleShader.json new file mode 100644 index 000000000..89a4eea44 --- /dev/null +++ b/docs/_data/Help/Add-OBSHeatWaveSimpleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHeatWaveSimpleShader [[-Rate] ] [[-Strength] ] [[-Distortion] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSHexagonShader.json b/docs/_data/Help/Add-OBSHexagonShader.json new file mode 100644 index 000000000..da567fd2b --- /dev/null +++ b/docs/_data/Help/Add-OBSHexagonShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHexagonShader [[-HexColor] ] [[-AlphaPercent] ] [[-Quantity] ] [[-BorderWidth] ] [[-SpeedPercent] ] [[-DistortX] ] [[-DistortY] ] [[-OffsetX] ] [[-OffsetY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Blend] [-Equilateral] [-ZoomAnimate] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSHslHsvSaturationShader.json b/docs/_data/Help/Add-OBSHslHsvSaturationShader.json new file mode 100644 index 000000000..f3bdd6bea --- /dev/null +++ b/docs/_data/Help/Add-OBSHslHsvSaturationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] ] [[-HslGamma] ] [[-HsvSaturationFactor] ] [[-HsvGamma] ] [[-AdjustmentOrder] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSHueRotatonShader.json b/docs/_data/Help/Add-OBSHueRotatonShader.json new file mode 100644 index 000000000..7d1b0626c --- /dev/null +++ b/docs/_data/Help/Add-OBSHueRotatonShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHueRotatonShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HueOverride] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSInput.json b/docs/_data/Help/Add-OBSInput.json new file mode 100644 index 000000000..8da924e11 --- /dev/null +++ b/docs/_data/Help/Add-OBSInput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSInput : CreateInput", + "Description": "Creates a new input, adding it as a scene item to the specified scene.\n\n\nAdd-OBSInput calls the OBS WebSocket with a request of type CreateInput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createinput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSIntensityScopeShader.json b/docs/_data/Help/Add-OBSIntensityScopeShader.json new file mode 100644 index 000000000..c79bc6f1f --- /dev/null +++ b/docs/_data/Help/Add-OBSIntensityScopeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSIntensityScopeShader [[-Gain] ] [[-Blend] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSInvertLumaShader.json b/docs/_data/Help/Add-OBSInvertLumaShader.json new file mode 100644 index 000000000..5abd320e4 --- /dev/null +++ b/docs/_data/Help/Add-OBSInvertLumaShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSInvertLumaShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertColor] [-InvertLuma] [-GammaCorrection] [-TestRamp] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSLuminance2Shader.json b/docs/_data/Help/Add-OBSLuminance2Shader.json new file mode 100644 index 000000000..4555c78a8 --- /dev/null +++ b/docs/_data/Help/Add-OBSLuminance2Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSLuminance2Shader [[-Color] ] [[-LumaMax] ] [[-LumaMin] ] [[-LumaMaxSmooth] ] [[-LumaMinSmooth] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSLuminanceAlphaShader.json b/docs/_data/Help/Add-OBSLuminanceAlphaShader.json new file mode 100644 index 000000000..d269489b4 --- /dev/null +++ b/docs/_data/Help/Add-OBSLuminanceAlphaShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSLuminanceAlphaShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ColorMatrix] ] [[-Color] ] [[-MulVal] ] [[-AddVal] ] [[-Level] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSLuminanceShader.json b/docs/_data/Help/Add-OBSLuminanceShader.json new file mode 100644 index 000000000..1e89f6f54 --- /dev/null +++ b/docs/_data/Help/Add-OBSLuminanceShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSLuminanceShader [[-Color] ] [[-Level] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSMarkdownSource.json b/docs/_data/Help/Add-OBSMarkdownSource.json new file mode 100644 index 000000000..ce9f33364 --- /dev/null +++ b/docs/_data/Help/Add-OBSMarkdownSource.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Sets a markdown source", + "Description": "Adds or changes a markdown source in OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSMatrixShader.json b/docs/_data/Help/Add-OBSMatrixShader.json new file mode 100644 index 000000000..ccd1e30d0 --- /dev/null +++ b/docs/_data/Help/Add-OBSMatrixShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSMatrixShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Mouse] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-Ratio] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertDirection] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSMediaSource.json b/docs/_data/Help/Add-OBSMediaSource.json new file mode 100644 index 000000000..441822c93 --- /dev/null +++ b/docs/_data/Help/Add-OBSMediaSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a media source", + "Description": "Adds a media source to OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSMediaSource -FilePath My.mp4" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSMonitorSource.json b/docs/_data/Help/Add-OBSMonitorSource.json new file mode 100644 index 000000000..e4c134f1a --- /dev/null +++ b/docs/_data/Help/Add-OBSMonitorSource.json @@ -0,0 +1,44 @@ +{ + "Synopsis": "Adds a display source", + "Description": "Adds a display source to OBS. This captures the contents of the display.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSDisplaySource # Adds a display source of the primary monitor" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Add-OBSDisplaySource -Display 2 # Adds a display source of the second monitor" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSMultiplyShader.json b/docs/_data/Help/Add-OBSMultiplyShader.json new file mode 100644 index 000000000..1a09f039f --- /dev/null +++ b/docs/_data/Help/Add-OBSMultiplyShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSMultiplyShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSNightSkyShader.json b/docs/_data/Help/Add-OBSNightSkyShader.json new file mode 100644 index 000000000..00e458c7f --- /dev/null +++ b/docs/_data/Help/Add-OBSNightSkyShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSNightSkyShader [[-Speed] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-AlphaPercentage] ] [[-NumberStars] ] [[-SKYCOLOR] ] [[-STARCOLOR] ] [[-LIGHTSKY] ] [[-SKYLIGHTNESS] ] [[-MOONCOLOR] ] [[-MoonSize] ] [[-MoonBumpSize] ] [[-MoonPositionX] ] [[-MoonPositionY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IncludeClouds] [-IncludeMoon] [-ApplyToImage] [-ReplaceImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSOpacityShader.json b/docs/_data/Help/Add-OBSOpacityShader.json new file mode 100644 index 000000000..29698c99d --- /dev/null +++ b/docs/_data/Help/Add-OBSOpacityShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSOpacityShader [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSPagePeelShader.json b/docs/_data/Help/Add-OBSPagePeelShader.json new file mode 100644 index 000000000..142f98f65 --- /dev/null +++ b/docs/_data/Help/Add-OBSPagePeelShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPagePeelShader [[-Speed] ] [[-Position] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSPagePeelTransitionShader.json b/docs/_data/Help/Add-OBSPagePeelTransitionShader.json new file mode 100644 index 000000000..fd398f3cb --- /dev/null +++ b/docs/_data/Help/Add-OBSPagePeelTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPagePeelTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-PageColor] ] [[-PageTransparency] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSPerlinNoiseShader.json b/docs/_data/Help/Add-OBSPerlinNoiseShader.json new file mode 100644 index 000000000..fbad434ed --- /dev/null +++ b/docs/_data/Help/Add-OBSPerlinNoiseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPerlinNoiseShader [[-Speed] ] [[-SpeedHorizonal] ] [[-SpeedVertical] ] [[-Iterations] ] [[-WhiteNoise] ] [[-BlackNoise] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-Inverted] [-Multiply] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSPieChartShader.json b/docs/_data/Help/Add-OBSPieChartShader.json new file mode 100644 index 000000000..8468a8cbf --- /dev/null +++ b/docs/_data/Help/Add-OBSPieChartShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPieChartShader [[-InnerRadius] ] [[-OuterRadius] ] [[-StartAngle] ] [[-Total] ] [[-Part1] ] [[-Color1] ] [[-Part2] ] [[-Color2] ] [[-Part3] ] [[-Color3] ] [[-Part4] ] [[-Color4] ] [[-Part5] ] [[-Color5] ] [[-Part6] ] [[-Color6] ] [[-Part7] ] [[-Color7] ] [[-Part8] ] [[-Color8] ] [[-Part9] ] [[-Color9] ] [[-Part10] ] [[-Color10] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSPixelationShader.json b/docs/_data/Help/Add-OBSPixelationShader.json new file mode 100644 index 000000000..d472e6820 --- /dev/null +++ b/docs/_data/Help/Add-OBSPixelationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPixelationShader [[-TargetWidth] ] [[-TargetHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSPixelationTransitionShader.json b/docs/_data/Help/Add-OBSPixelationTransitionShader.json new file mode 100644 index 000000000..db7640c48 --- /dev/null +++ b/docs/_data/Help/Add-OBSPixelationTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPixelationTransitionShader [[-TransitionTime] ] [[-Power] ] [[-CenterX] ] [[-CenterY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSPlaylistSource.json b/docs/_data/Help/Add-OBSPlaylistSource.json new file mode 100644 index 000000000..9a526c96c --- /dev/null +++ b/docs/_data/Help/Add-OBSPlaylistSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a VLC playlist source", + "Description": "Adds or sets VLC playlist sources to OBS. \nVLC must be installed for this to work.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSVLCSource -FilePath .\\*.mp3 # Creates a playlist of all MP3s in the current directory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSPolarShader.json b/docs/_data/Help/Add-OBSPolarShader.json new file mode 100644 index 000000000..da26497c4 --- /dev/null +++ b/docs/_data/Help/Add-OBSPolarShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPolarShader [[-CenterX] ] [[-CenterY] ] [[-PointY] ] [[-Rotate] ] [[-Repeat] ] [[-Scale] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Flip] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSProfile.json b/docs/_data/Help/Add-OBSProfile.json new file mode 100644 index 000000000..ba931c320 --- /dev/null +++ b/docs/_data/Help/Add-OBSProfile.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSProfile : CreateProfile", + "Description": "Creates a new profile, switching to it in the process\n\n\nAdd-OBSProfile calls the OBS WebSocket with a request of type CreateProfile.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createprofile" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSPulseShader.json b/docs/_data/Help/Add-OBSPulseShader.json new file mode 100644 index 000000000..36d742590 --- /dev/null +++ b/docs/_data/Help/Add-OBSPulseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPulseShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRGBAPercentShader.json b/docs/_data/Help/Add-OBSRGBAPercentShader.json new file mode 100644 index 000000000..4752fb944 --- /dev/null +++ b/docs/_data/Help/Add-OBSRGBAPercentShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRGBAPercentShader [[-RedPercent] ] [[-GreenPercent] ] [[-BluePercent] ] [[-AlphaPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRGSSAAShader.json b/docs/_data/Help/Add-OBSRGSSAAShader.json new file mode 100644 index 000000000..58a2de6ed --- /dev/null +++ b/docs/_data/Help/Add-OBSRGSSAAShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRGSSAAShader [[-ColorSigma] ] [[-SpatialSigma] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRainWindowShader.json b/docs/_data/Help/Add-OBSRainWindowShader.json new file mode 100644 index 000000000..13054569f --- /dev/null +++ b/docs/_data/Help/Add-OBSRainWindowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRainWindowShader [[-Size] ] [[-BlurSize] ] [[-TrailStrength] ] [[-TrailColor] ] [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DebugShader] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRainbowShader.json b/docs/_data/Help/Add-OBSRainbowShader.json new file mode 100644 index 000000000..8de2d3c9c --- /dev/null +++ b/docs/_data/Help/Add-OBSRainbowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRainbowShader [[-Saturation] ] [[-Luminosity] ] [[-Spread] ] [[-Speed] ] [[-AlphaPercentage] ] [[-RotationOffset] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRectangularDropShadowShader.json b/docs/_data/Help/Add-OBSRectangularDropShadowShader.json new file mode 100644 index 000000000..5122a4871 --- /dev/null +++ b/docs/_data/Help/Add-OBSRectangularDropShadowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSReflectShader.json b/docs/_data/Help/Add-OBSReflectShader.json new file mode 100644 index 000000000..262473d12 --- /dev/null +++ b/docs/_data/Help/Add-OBSReflectShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSReflectShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRemovePartialPixelsShader.json b/docs/_data/Help/Add-OBSRemovePartialPixelsShader.json new file mode 100644 index 000000000..36c15cd20 --- /dev/null +++ b/docs/_data/Help/Add-OBSRemovePartialPixelsShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRenderDelayFilter.json b/docs/_data/Help/Add-OBSRenderDelayFilter.json new file mode 100644 index 000000000..c898cf294 --- /dev/null +++ b/docs/_data/Help/Add-OBSRenderDelayFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a RenderDelay filter.", + "Description": "Adds or Changes a RenderDelay Filter on an OBS Input. \nThis changes the RenderDelay of an image.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSRenderDelayFilter -RenderDelay .75" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRepeatShader.json b/docs/_data/Help/Add-OBSRepeatShader.json new file mode 100644 index 000000000..9bd54d604 --- /dev/null +++ b/docs/_data/Help/Add-OBSRepeatShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRepeatShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Alpha] ] [[-Copies] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRepeatTextureShader.json b/docs/_data/Help/Add-OBSRepeatTextureShader.json new file mode 100644 index 000000000..d451333fa --- /dev/null +++ b/docs/_data/Help/Add-OBSRepeatTextureShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRepeatTextureShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-TexImage] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Blend] ] [[-Copies] ] [[-Notes] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRgbColorWheelShader.json b/docs/_data/Help/Add-OBSRgbColorWheelShader.json new file mode 100644 index 000000000..5b4a5222f --- /dev/null +++ b/docs/_data/Help/Add-OBSRgbColorWheelShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRgbColorWheelShader [[-Speed] ] [[-ColorDepth] ] [[-ColorToReplace] ] [[-AlphaPercentage] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRgbSplitShader.json b/docs/_data/Help/Add-OBSRgbSplitShader.json new file mode 100644 index 000000000..0e74e3f1b --- /dev/null +++ b/docs/_data/Help/Add-OBSRgbSplitShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRgbSplitShader [[-Redx] ] [[-Redy] ] [[-Greenx] ] [[-Greeny] ] [[-Bluex] ] [[-Bluey] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRgbvisibilityShader.json b/docs/_data/Help/Add-OBSRgbvisibilityShader.json new file mode 100644 index 000000000..90f27d82a --- /dev/null +++ b/docs/_data/Help/Add-OBSRgbvisibilityShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRgbvisibilityShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-RedVisibility] ] [[-GreenVisibility] ] [[-BlueVisibility] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRippleShader.json b/docs/_data/Help/Add-OBSRippleShader.json new file mode 100644 index 000000000..0c381ad29 --- /dev/null +++ b/docs/_data/Help/Add-OBSRippleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRippleShader [[-DistanceFactor] ] [[-TimeFactor] ] [[-PowerFactor] ] [[-CenterPosX] ] [[-CenterPosY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRotatingSourceShader.json b/docs/_data/Help/Add-OBSRotatingSourceShader.json new file mode 100644 index 000000000..695a60151 --- /dev/null +++ b/docs/_data/Help/Add-OBSRotatingSourceShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRotatingSourceShader [[-SpinSpeed] ] [[-Rotation] ] [[-Zoomin] ] [[-XCenter] ] [[-YCenter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-KeepAspectratio] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRotatoeShader.json b/docs/_data/Help/Add-OBSRotatoeShader.json new file mode 100644 index 000000000..9ebcffb5d --- /dev/null +++ b/docs/_data/Help/Add-OBSRotatoeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRotatoeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-SpeedPercent] ] [[-AxisX] ] [[-AxisY] ] [[-AxisZ] ] [[-AngleDegrees] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateTransform] [-RotatePixels] [-RotateColors] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRoundedRect2Shader.json b/docs/_data/Help/Add-OBSRoundedRect2Shader.json new file mode 100644 index 000000000..92f11df06 --- /dev/null +++ b/docs/_data/Help/Add-OBSRoundedRect2Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRect2Shader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-FasterScan] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRoundedRectPerCornerShader.json b/docs/_data/Help/Add-OBSRoundedRectPerCornerShader.json new file mode 100644 index 000000000..a97578dbf --- /dev/null +++ b/docs/_data/Help/Add-OBSRoundedRectPerCornerShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] ] [[-CornerRadiusTr] ] [[-CornerRadiusBr] ] [[-CornerRadiusBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRoundedRectPerSideShader.json b/docs/_data/Help/Add-OBSRoundedRectPerSideShader.json new file mode 100644 index 000000000..4dbca8acf --- /dev/null +++ b/docs/_data/Help/Add-OBSRoundedRectPerSideShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] ] [[-CornerRadiusLeft] ] [[-CornerRadiusTop] ] [[-CornerRadiusRight] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRoundedRectShader.json b/docs/_data/Help/Add-OBSRoundedRectShader.json new file mode 100644 index 000000000..43f1cee77 --- /dev/null +++ b/docs/_data/Help/Add-OBSRoundedRectShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRectShader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRoundedStrokeGradientShader.json b/docs/_data/Help/Add-OBSRoundedStrokeGradientShader.json new file mode 100644 index 000000000..d60d4b519 --- /dev/null +++ b/docs/_data/Help/Add-OBSRoundedStrokeGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedStrokeGradientShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-RotationSpeed] ] [[-BorderColorL] ] [[-BorderColorR] ] [[-CenterWidth] ] [[-CenterHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSRoundedStrokeShader.json b/docs/_data/Help/Add-OBSRoundedStrokeShader.json new file mode 100644 index 000000000..14cc8b08a --- /dev/null +++ b/docs/_data/Help/Add-OBSRoundedStrokeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedStrokeShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSScaleFilter.json b/docs/_data/Help/Add-OBSScaleFilter.json new file mode 100644 index 000000000..e9ab1e703 --- /dev/null +++ b/docs/_data/Help/Add-OBSScaleFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a Scale filter.", + "Description": "Adds or Changes a Scale Filter on an OBS Input. \nThis allows you to resize the image source.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSScaleFilter -Resolution \"16:9\"" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSScanLineShader.json b/docs/_data/Help/Add-OBSScanLineShader.json new file mode 100644 index 000000000..d77b16a0f --- /dev/null +++ b/docs/_data/Help/Add-OBSScanLineShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSScanLineShader [[-Speed] ] [[-Angle] ] [[-Floor] ] [[-Period] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Lengthwise] [-Animate] [-Shift] [-Boost] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSScene.json b/docs/_data/Help/Add-OBSScene.json new file mode 100644 index 000000000..18fd556b0 --- /dev/null +++ b/docs/_data/Help/Add-OBSScene.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSScene : CreateScene", + "Description": "Creates a new scene in OBS.\n\n\nAdd-OBSScene calls the OBS WebSocket with a request of type CreateScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscene" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSceneCollection.json b/docs/_data/Help/Add-OBSSceneCollection.json new file mode 100644 index 000000000..b7e0b3348 --- /dev/null +++ b/docs/_data/Help/Add-OBSSceneCollection.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSSceneCollection : CreateSceneCollection", + "Description": "Creates a new scene collection, switching to it in the process.\n\nNote: This will block until the collection has finished changing.\n\n\nAdd-OBSSceneCollection calls the OBS WebSocket with a request of type CreateSceneCollection.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscenecollection" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSceneItem.json b/docs/_data/Help/Add-OBSSceneItem.json new file mode 100644 index 000000000..449e42cd0 --- /dev/null +++ b/docs/_data/Help/Add-OBSSceneItem.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSSceneItem : CreateSceneItem", + "Description": "Creates a new scene item using a source.\n\nScenes only\n\n\nAdd-OBSSceneItem calls the OBS WebSocket with a request of type CreateSceneItem.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSceneSource.json b/docs/_data/Help/Add-OBSSceneSource.json new file mode 100644 index 000000000..449e42cd0 --- /dev/null +++ b/docs/_data/Help/Add-OBSSceneSource.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSSceneItem : CreateSceneItem", + "Description": "Creates a new scene item using a source.\n\nScenes only\n\n\nAdd-OBSSceneItem calls the OBS WebSocket with a request of type CreateSceneItem.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSeascapeShader.json b/docs/_data/Help/Add-OBSSeascapeShader.json new file mode 100644 index 000000000..cdd926b70 --- /dev/null +++ b/docs/_data/Help/Add-OBSSeascapeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSeascapeShader [[-SEAHEIGHT] ] [[-SEACHOPPY] ] [[-SEASPEED] ] [[-SEAFREQ] ] [[-SEABASE] ] [[-SEAWATERCOLOR] ] [[-CAMERASPEED] ] [[-CAMERATURNSPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AA] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSeasickShader.json b/docs/_data/Help/Add-OBSSeasickShader.json new file mode 100644 index 000000000..eef433c89 --- /dev/null +++ b/docs/_data/Help/Add-OBSSeasickShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSeasickShader [[-Notes] ] [[-Amplitude] ] [[-Speed] ] [[-Frequency] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSelectiveColorShader.json b/docs/_data/Help/Add-OBSSelectiveColorShader.json new file mode 100644 index 000000000..fce5d6bdf --- /dev/null +++ b/docs/_data/Help/Add-OBSSelectiveColorShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSelectiveColorShader [[-CutoffRed] ] [[-CutoffGreen] ] [[-CutoffBlue] ] [[-CutoffYellow] ] [[-AcceptanceAmplifier] ] [[-Notes] ] [[-BackgroundType] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowRed] [-ShowGreen] [-ShowBlue] [-ShowYellow] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSShaderFilter.json b/docs/_data/Help/Add-OBSShaderFilter.json new file mode 100644 index 000000000..9992e3c5c --- /dev/null +++ b/docs/_data/Help/Add-OBSShaderFilter.json @@ -0,0 +1,49 @@ +{ + "Synopsis": "Sets a Shader filter.", + "Description": "Adds or Changes a Shader Filter on an OBS Input. \nThis requires that the [OBS Shader Filter](https://github.com/exeldro/obs-shaderfilter) is installed.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSShaderFilter -FilterName \"FisheyeShader\" -ShaderFile fisheye-xy -ShaderSetting @{ \n center_x_percent=30 \n center_y_percent=70 \n }" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSShaderFilter -FilterName \"SeasickShader\" -ShaderFile seasick -ShaderSetting @{ \n amplitude = 0.05 \n speed = 0.5 \n frequency = 12 \n opacity = 1 \n }" + }, + { + "Title": "EXAMPLE 3", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSShaderFilter -FilterName \"TwistShader\" -ShaderFile twist -ShaderSetting @{ \n center_x_percent=50 \n center_y_percent=50 \n power = 0.05 \n rotation = 80 \n }" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSShakeShader.json b/docs/_data/Help/Add-OBSShakeShader.json new file mode 100644 index 000000000..def40680c --- /dev/null +++ b/docs/_data/Help/Add-OBSShakeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSShakeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-LocalTime] ] [[-RandomScale] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Worble] [-RandomizeMovement] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSharpnessFilter.json b/docs/_data/Help/Add-OBSSharpnessFilter.json new file mode 100644 index 000000000..baa4da743 --- /dev/null +++ b/docs/_data/Help/Add-OBSSharpnessFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a Sharpness filter.", + "Description": "Adds or Changes a Sharpness Filter on an OBS Input. \nThis changes the sharpness of an image.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSSharpnessFilter -Sharpness .75" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSShineShader.json b/docs/_data/Help/Add-OBSShineShader.json new file mode 100644 index 000000000..bb19782c3 --- /dev/null +++ b/docs/_data/Help/Add-OBSShineShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSShineShader [[-LTex] ] [[-ShineColor] ] [[-SpeedPercent] ] [[-GradientPercent] ] [[-DelayPercent] ] [[-Notes] ] [[-StartAdjust] ] [[-StopAdjust] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Hide] [-Reverse] [-OneDirection] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSimpleGradientShader.json b/docs/_data/Help/Add-OBSSimpleGradientShader.json new file mode 100644 index 000000000..223095c61 --- /dev/null +++ b/docs/_data/Help/Add-OBSSimpleGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSimpleGradientShader [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-LensFlair] [-AnimateLensFlair] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSimplexNoiseShader.json b/docs/_data/Help/Add-OBSSimplexNoiseShader.json new file mode 100644 index 000000000..6d0a22a7f --- /dev/null +++ b/docs/_data/Help/Add-OBSSimplexNoiseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSimplexNoiseShader [[-SnapPercent] ] [[-SpeedPercent] ] [[-Resolution] ] [[-ForeColor] ] [[-BackColor] ] [[-AlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Fractal] [-UseAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSmartDenoiseShader.json b/docs/_data/Help/Add-OBSSmartDenoiseShader.json new file mode 100644 index 000000000..8f0aca83b --- /dev/null +++ b/docs/_data/Help/Add-OBSSmartDenoiseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSmartDenoiseShader [[-USigma] ] [[-UKSigma] ] [[-UThreshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSoundCloudSource.json b/docs/_data/Help/Add-OBSSoundCloudSource.json new file mode 100644 index 000000000..679cdeccc --- /dev/null +++ b/docs/_data/Help/Add-OBSSoundCloudSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a Sound Cloud Source", + "Description": "Adds or changes a Sound Cloud source OBS. \nSound Cloud Sources are Browser Sources that display a [SoundCloud Player Widget](https://developers.soundcloud.com/docs/api/html5-widget).", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-obssoundCloudSource -Uri https://soundcloud.com/outertone/sets/new-earth" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSourceFilter.json b/docs/_data/Help/Add-OBSSourceFilter.json new file mode 100644 index 000000000..deb82ea07 --- /dev/null +++ b/docs/_data/Help/Add-OBSSourceFilter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSSourceFilter : CreateSourceFilter", + "Description": "Creates a new filter, adding it to the specified source.\n\n\nAdd-OBSSourceFilter calls the OBS WebSocket with a request of type CreateSourceFilter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsourcefilter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSpecularShineShader.json b/docs/_data/Help/Add-OBSSpecularShineShader.json new file mode 100644 index 000000000..a63d6e628 --- /dev/null +++ b/docs/_data/Help/Add-OBSSpecularShineShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSpecularShineShader [[-Hint] ] [[-Roughness] ] [[-LightStrength] ] [[-LightPositionX] ] [[-LightPositionY] ] [[-FlattenNormal] ] [[-StretchNormalX] ] [[-StretchNormalY] ] [[-LightColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSpotlightShader.json b/docs/_data/Help/Add-OBSSpotlightShader.json new file mode 100644 index 000000000..f43d3b11e --- /dev/null +++ b/docs/_data/Help/Add-OBSSpotlightShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSpotlightShader [[-SpeedPercent] ] [[-FocusPercent] ] [[-SpotlightColor] ] [[-HorizontalOffset] ] [[-VerticalOffset] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSwirlShader.json b/docs/_data/Help/Add-OBSSwirlShader.json new file mode 100644 index 000000000..cde822f17 --- /dev/null +++ b/docs/_data/Help/Add-OBSSwirlShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSwirlShader [[-Radius] ] [[-Angle] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Inverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSSwitchSource.json b/docs/_data/Help/Add-OBSSwitchSource.json new file mode 100644 index 000000000..9a526c96c --- /dev/null +++ b/docs/_data/Help/Add-OBSSwitchSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a VLC playlist source", + "Description": "Adds or sets VLC playlist sources to OBS. \nVLC must be installed for this to work.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSVLCSource -FilePath .\\*.mp3 # Creates a playlist of all MP3s in the current directory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSTetraShader.json b/docs/_data/Help/Add-OBSTetraShader.json new file mode 100644 index 000000000..966d730b0 --- /dev/null +++ b/docs/_data/Help/Add-OBSTetraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTetraShader [[-RedR] ] [[-RedG] ] [[-RedB] ] [[-YelR] ] [[-YelG] ] [[-YelB] ] [[-GrnR] ] [[-GrnG] ] [[-GrnB] ] [[-CynR] ] [[-CynG] ] [[-CynB] ] [[-BluR] ] [[-BluG] ] [[-BluB] ] [[-MagR] ] [[-MagG] ] [[-MagB] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSThermalShader.json b/docs/_data/Help/Add-OBSThermalShader.json new file mode 100644 index 000000000..422ae31ea --- /dev/null +++ b/docs/_data/Help/Add-OBSThermalShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSThermalShader [[-Strength] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSTvCrtSubpixelShader.json b/docs/_data/Help/Add-OBSTvCrtSubpixelShader.json new file mode 100644 index 000000000..1f94cb996 --- /dev/null +++ b/docs/_data/Help/Add-OBSTvCrtSubpixelShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTvCrtSubpixelShader [[-ChannelWidth] ] [[-ChannelHeight] ] [[-HGap] ] [[-VGap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSTwistShader.json b/docs/_data/Help/Add-OBSTwistShader.json new file mode 100644 index 000000000..fdbb559eb --- /dev/null +++ b/docs/_data/Help/Add-OBSTwistShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTwistShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-Rotation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSTwoPassDropShadowShader.json b/docs/_data/Help/Add-OBSTwoPassDropShadowShader.json new file mode 100644 index 000000000..d0ea47a01 --- /dev/null +++ b/docs/_data/Help/Add-OBSTwoPassDropShadowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTwoPassDropShadowShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSVCRShader.json b/docs/_data/Help/Add-OBSVCRShader.json new file mode 100644 index 000000000..7649be26d --- /dev/null +++ b/docs/_data/Help/Add-OBSVCRShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVCRShader [[-VerticalShift] ] [[-Distort] ] [[-Vignet] ] [[-Stripe] ] [[-VerticalFactor] ] [[-VerticalHeight] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSVHSShader.json b/docs/_data/Help/Add-OBSVHSShader.json new file mode 100644 index 000000000..4527a7869 --- /dev/null +++ b/docs/_data/Help/Add-OBSVHSShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVHSShader [[-Range] ] [[-OffsetIntensity] ] [[-NoiseQuality] ] [[-NoiseIntensity] ] [[-ColorOffsetIntensity] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSVLCSource.json b/docs/_data/Help/Add-OBSVLCSource.json new file mode 100644 index 000000000..9a526c96c --- /dev/null +++ b/docs/_data/Help/Add-OBSVLCSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a VLC playlist source", + "Description": "Adds or sets VLC playlist sources to OBS. \nVLC must be installed for this to work.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSVLCSource -FilePath .\\*.mp3 # Creates a playlist of all MP3s in the current directory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSVignettingShader.json b/docs/_data/Help/Add-OBSVignettingShader.json new file mode 100644 index 000000000..3ee3ee0f8 --- /dev/null +++ b/docs/_data/Help/Add-OBSVignettingShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVignettingShader [[-InnerRadius] ] [[-OuterRadius] ] [[-Opacity] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSVoronoiPixelationShader.json b/docs/_data/Help/Add-OBSVoronoiPixelationShader.json new file mode 100644 index 000000000..adb637d96 --- /dev/null +++ b/docs/_data/Help/Add-OBSVoronoiPixelationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVoronoiPixelationShader [[-PixH] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Alternative] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSWaveformSource.json b/docs/_data/Help/Add-OBSWaveformSource.json new file mode 100644 index 000000000..54d4cdd82 --- /dev/null +++ b/docs/_data/Help/Add-OBSWaveformSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "OBS Waveform Source", + "Description": "Gets, Sets, or Adds a waveform source in OBS. \nWaveform sources require the [Waveform Plugin](https://obsproject.com/forum/resources/waveform.1423/)", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSWaveformSource -Name \"SpeakerWaveform\"" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSWindowCaptureSource.json b/docs/_data/Help/Add-OBSWindowCaptureSource.json new file mode 100644 index 000000000..eff834087 --- /dev/null +++ b/docs/_data/Help/Add-OBSWindowCaptureSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Adds or sets a window capture source", + "Description": "Adds or sets a windows capture source in OBS. This captures the contents of a window.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSWindowSource.json b/docs/_data/Help/Add-OBSWindowSource.json new file mode 100644 index 000000000..eff834087 --- /dev/null +++ b/docs/_data/Help/Add-OBSWindowSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Adds or sets a window capture source", + "Description": "Adds or sets a windows capture source in OBS. This captures the contents of a window.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSZigZagShader.json b/docs/_data/Help/Add-OBSZigZagShader.json new file mode 100644 index 000000000..877d9a7dd --- /dev/null +++ b/docs/_data/Help/Add-OBSZigZagShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZigZagShader [[-Radius] ] [[-Angle] ] [[-Period] ] [[-Amplitude] ] [[-CenterX] ] [[-CenterY] ] [[-Phase] ] [[-Animate] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSZoomBlurShader.json b/docs/_data/Help/Add-OBSZoomBlurShader.json new file mode 100644 index 000000000..5e3327904 --- /dev/null +++ b/docs/_data/Help/Add-OBSZoomBlurShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZoomBlurShader [[-Samples] ] [[-Magnitude] ] [[-SpeedPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSZoomShader.json b/docs/_data/Help/Add-OBSZoomShader.json new file mode 100644 index 000000000..471ef8b0d --- /dev/null +++ b/docs/_data/Help/Add-OBSZoomShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZoomShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Add-OBSZoomXYShader.json b/docs/_data/Help/Add-OBSZoomXYShader.json new file mode 100644 index 000000000..7bc63723c --- /dev/null +++ b/docs/_data/Help/Add-OBSZoomXYShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZoomXYShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-XPower] ] [[-YPower] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Clear-OBSScene.json b/docs/_data/Help/Clear-OBSScene.json new file mode 100644 index 000000000..a7f77643d --- /dev/null +++ b/docs/_data/Help/Clear-OBSScene.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Clears a Scene in OBS", + "Description": "Clears a Scene in OBS.\n\nAll inputs will be removed from the scene.\n\nThis cannot be undone, so you will be prompted for confirmation.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Clear-OBSScene -SceneName Scene" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Connect-OBS.json b/docs/_data/Help/Connect-OBS.json new file mode 100644 index 000000000..4bad9c93e --- /dev/null +++ b/docs/_data/Help/Connect-OBS.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Connects to Open Broadcast Studio", + "Description": "Connects to the obs-websocket.\n\nThis must occur at least once to use obs-powershell.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Connect-OBS" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Copy-OBSSceneItem.json b/docs/_data/Help/Copy-OBSSceneItem.json new file mode 100644 index 000000000..f7eef3b83 --- /dev/null +++ b/docs/_data/Help/Copy-OBSSceneItem.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Copy-OBSSceneItem : DuplicateSceneItem", + "Description": "Duplicates a scene item, copying all transform and crop info.\n\nScenes only\n\n\nCopy-OBSSceneItem calls the OBS WebSocket with a request of type DuplicateSceneItem.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#duplicatesceneitem" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Disconnect-OBS.json b/docs/_data/Help/Disconnect-OBS.json new file mode 100644 index 000000000..7a19402e5 --- /dev/null +++ b/docs/_data/Help/Disconnect-OBS.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Disconnects OBS", + "Description": "Disconnects Websockets from OBS.\n\nAll websockets will be disconnected.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Disconnect-OBS" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBS.json b/docs/_data/Help/Get-OBS.json new file mode 100644 index 000000000..bd9f55c27 --- /dev/null +++ b/docs/_data/Help/Get-OBS.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Gets OBS", + "Description": "Outputs OBS connection information and state.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBS" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBS3dSwapTransitionShader.json b/docs/_data/Help/Get-OBS3dSwapTransitionShader.json new file mode 100644 index 000000000..9304b6700 --- /dev/null +++ b/docs/_data/Help/Get-OBS3dSwapTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBS3dSwapTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-Reflection] ] [[-Perspective] ] [[-Depth] ] [[-BackgroundColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSAddShader.json b/docs/_data/Help/Get-OBSAddShader.json new file mode 100644 index 000000000..65dcd33b8 --- /dev/null +++ b/docs/_data/Help/Get-OBSAddShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAddShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSAlphaBorderShader.json b/docs/_data/Help/Get-OBSAlphaBorderShader.json new file mode 100644 index 000000000..4b5d0cbfc --- /dev/null +++ b/docs/_data/Help/Get-OBSAlphaBorderShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAlphaBorderShader [[-BorderColor] ] [[-BorderThickness] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSAlphaGamingBentCameraShader.json b/docs/_data/Help/Get-OBSAlphaGamingBentCameraShader.json new file mode 100644 index 000000000..e40b97e64 --- /dev/null +++ b/docs/_data/Help/Get-OBSAlphaGamingBentCameraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSAnimatedPathShader.json b/docs/_data/Help/Get-OBSAnimatedPathShader.json new file mode 100644 index 000000000..c3060fe1d --- /dev/null +++ b/docs/_data/Help/Get-OBSAnimatedPathShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAnimatedPathShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-SpeedPercent] ] [[-PathMap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSAnimatedTextureShader.json b/docs/_data/Help/Get-OBSAnimatedTextureShader.json new file mode 100644 index 000000000..31ace01a0 --- /dev/null +++ b/docs/_data/Help/Get-OBSAnimatedTextureShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAnimatedTextureShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-AnimationImage] ] [[-ColorizationImage] ] [[-PolarAngle] ] [[-PolarHeight] ] [[-SpeedHorizontalPercent] ] [[-SpeedVerticalPercent] ] [[-TintSpeedHorizontalPercent] ] [[-TintSpeedVerticalPercent] ] [[-Alpha] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Bounce] [-CenterAnimation] [-PolarAnimation] [-UseAnimationImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSAsciiShader.json b/docs/_data/Help/Get-OBSAsciiShader.json new file mode 100644 index 000000000..f55fcc6aa --- /dev/null +++ b/docs/_data/Help/Get-OBSAsciiShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAsciiShader [[-Scale] ] [[-BaseColor] ] [[-CharacterSet] ] [[-Note] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Monochrome] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSAspectRatioShader.json b/docs/_data/Help/Get-OBSAspectRatioShader.json new file mode 100644 index 000000000..2affb92f9 --- /dev/null +++ b/docs/_data/Help/Get-OBSAspectRatioShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAspectRatioShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSAudioOutputSource.json b/docs/_data/Help/Get-OBSAudioOutputSource.json new file mode 100644 index 000000000..092206748 --- /dev/null +++ b/docs/_data/Help/Get-OBSAudioOutputSource.json @@ -0,0 +1,44 @@ +{ + "Synopsis": "Adds or sets an audio output source", + "Description": "Adds or sets an audio output source in OBS. This captures the audio that is being sent to an output device.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + "This command currently only supports capturing default audio on Windows. \nTo add support for other operating systems, file an issue or open a pull request." + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSAudioOutputSource" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Set-OBSAudioOutputSource -AudioDevice Speakers" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSBackgroundRemovalShader.json b/docs/_data/Help/Get-OBSBackgroundRemovalShader.json new file mode 100644 index 000000000..2d460871b --- /dev/null +++ b/docs/_data/Help/Get-OBSBackgroundRemovalShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBackgroundRemovalShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-Target] ] [[-Color] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-Convert709to601] [-Convert601to709] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSBlendOpacityShader.json b/docs/_data/Help/Get-OBSBlendOpacityShader.json new file mode 100644 index 000000000..a6d378c06 --- /dev/null +++ b/docs/_data/Help/Get-OBSBlendOpacityShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBlendOpacityShader [[-RotationOffset] ] [[-OpacityStartPercent] ] [[-OpacityEndPercent] ] [[-Spread] ] [[-Speed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSBlinkShader.json b/docs/_data/Help/Get-OBSBlinkShader.json new file mode 100644 index 000000000..376fc91b5 --- /dev/null +++ b/docs/_data/Help/Get-OBSBlinkShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBlinkShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSBloomShader.json b/docs/_data/Help/Get-OBSBloomShader.json new file mode 100644 index 000000000..b0ed430cd --- /dev/null +++ b/docs/_data/Help/Get-OBSBloomShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBloomShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSBorderShader.json b/docs/_data/Help/Get-OBSBorderShader.json new file mode 100644 index 000000000..e916649e4 --- /dev/null +++ b/docs/_data/Help/Get-OBSBorderShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBorderShader [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSBoxBlurShader.json b/docs/_data/Help/Get-OBSBoxBlurShader.json new file mode 100644 index 000000000..b7c6450ad --- /dev/null +++ b/docs/_data/Help/Get-OBSBoxBlurShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBoxBlurShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSBrowserSource.json b/docs/_data/Help/Get-OBSBrowserSource.json new file mode 100644 index 000000000..3f7240c75 --- /dev/null +++ b/docs/_data/Help/Get-OBSBrowserSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a browser source", + "Description": "Adds or changes a browser source in OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSBrowserSource -Uri https://pssvg.start-automating.com/Examples/Stars.svg" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSBulgePinchShader.json b/docs/_data/Help/Get-OBSBulgePinchShader.json new file mode 100644 index 000000000..be8927cc5 --- /dev/null +++ b/docs/_data/Help/Get-OBSBulgePinchShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBulgePinchShader [[-Radius] ] [[-Magnitude] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSBurnShader.json b/docs/_data/Help/Get-OBSBurnShader.json new file mode 100644 index 000000000..5ba3887fa --- /dev/null +++ b/docs/_data/Help/Get-OBSBurnShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBurnShader [[-BurnGradient] ] [[-Speed] ] [[-GradientAdjust] ] [[-DissolveValue] ] [[-SmokeHorizonalSpeed] ] [[-SmokeVerticalSpeed] ] [[-Iterations] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-ApplySmoke] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCartoonShader.json b/docs/_data/Help/Get-OBSCartoonShader.json new file mode 100644 index 000000000..88074a631 --- /dev/null +++ b/docs/_data/Help/Get-OBSCartoonShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCartoonShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-HueSteps] ] [[-ValueSteps] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCellShadedShader.json b/docs/_data/Help/Get-OBSCellShadedShader.json new file mode 100644 index 000000000..f58cef3f2 --- /dev/null +++ b/docs/_data/Help/Get-OBSCellShadedShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCellShadedShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSChromaUVDistortionShader.json b/docs/_data/Help/Get-OBSChromaUVDistortionShader.json new file mode 100644 index 000000000..b44fc1c65 --- /dev/null +++ b/docs/_data/Help/Get-OBSChromaUVDistortionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSChromaUVDistortionShader [[-Distortion] ] [[-Amplitude] ] [[-Chroma] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSChromaticAberrationShader.json b/docs/_data/Help/Get-OBSChromaticAberrationShader.json new file mode 100644 index 000000000..6cc5a22fa --- /dev/null +++ b/docs/_data/Help/Get-OBSChromaticAberrationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSChromaticAberrationShader [[-Power] ] [[-Gamma] ] [[-NumIter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DistortRadial] [-DistortBarrel] [-OffsetSpectrumYcgco] [-OffsetSpectrumYuv] [-UseRandom] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCircleMaskFilterShader.json b/docs/_data/Help/Get-OBSCircleMaskFilterShader.json new file mode 100644 index 000000000..fb16ac976 --- /dev/null +++ b/docs/_data/Help/Get-OBSCircleMaskFilterShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCircleMaskFilterShader [[-Radius] ] [[-CircleOffsetX] ] [[-CircleOffsetY] ] [[-SourceOffsetX] ] [[-SourceOffsetY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Antialiasing] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSClockAnalogShader.json b/docs/_data/Help/Get-OBSClockAnalogShader.json new file mode 100644 index 000000000..ec1db7dfd --- /dev/null +++ b/docs/_data/Help/Get-OBSClockAnalogShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSClockAnalogShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-HourHandleColor] ] [[-MinuteHandleColor] ] [[-SecondHandleColor] ] [[-OutlineColor] ] [[-TopLineColor] ] [[-BackgroundColor] ] [[-TimeOffsetHours] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSClockDigitalLedShader.json b/docs/_data/Help/Get-OBSClockDigitalLedShader.json new file mode 100644 index 000000000..419b04585 --- /dev/null +++ b/docs/_data/Help/Get-OBSClockDigitalLedShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSClockDigitalLedShader [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-LedColor] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowMatrix] [-ShowOff] [-Ampm] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSClockDigitalNixieShader.json b/docs/_data/Help/Get-OBSClockDigitalNixieShader.json new file mode 100644 index 000000000..21739b95a --- /dev/null +++ b/docs/_data/Help/Get-OBSClockDigitalNixieShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-Corecolor] ] [[-Halocolor] ] [[-Flarecolor] ] [[-Anodecolor] ] [[-Anodehighlightscolor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSColorDepthShader.json b/docs/_data/Help/Get-OBSColorDepthShader.json new file mode 100644 index 000000000..f27fcb23a --- /dev/null +++ b/docs/_data/Help/Get-OBSColorDepthShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSColorDepthShader [[-ColorDepth] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSColorGradeFilterShader.json b/docs/_data/Help/Get-OBSColorGradeFilterShader.json new file mode 100644 index 000000000..b06631ebe --- /dev/null +++ b/docs/_data/Help/Get-OBSColorGradeFilterShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSColorGradeFilterShader [[-Notes] ] [[-Lut] ] [[-LutAmountPercent] ] [[-LutScalePercent] ] [[-LutOffsetPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSColorSource.json b/docs/_data/Help/Get-OBSColorSource.json new file mode 100644 index 000000000..63681dd66 --- /dev/null +++ b/docs/_data/Help/Get-OBSColorSource.json @@ -0,0 +1,36 @@ +{ + "Synopsis": "Adds a color source", + "Description": "Adds a color source to OBS. This displays a single 32-bit color (RGBA).", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCornerPinShader.json b/docs/_data/Help/Get-OBSCornerPinShader.json new file mode 100644 index 000000000..b86acea1f --- /dev/null +++ b/docs/_data/Help/Get-OBSCornerPinShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCornerPinShader [[-TopLeftX] ] [[-TopLeftY] ] [[-TopRightX] ] [[-TopRightY] ] [[-BottomLeftX] ] [[-BottomLeftY] ] [[-BottomRightX] ] [[-BottomRightY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AntialiasEdges] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCrtCurvatureShader.json b/docs/_data/Help/Get-OBSCrtCurvatureShader.json new file mode 100644 index 000000000..f22cd33ef --- /dev/null +++ b/docs/_data/Help/Get-OBSCrtCurvatureShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCrtCurvatureShader [[-Strength] ] [[-Border] ] [[-Feathering] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCurrentPreviewScene.json b/docs/_data/Help/Get-OBSCurrentPreviewScene.json new file mode 100644 index 000000000..b43b28342 --- /dev/null +++ b/docs/_data/Help/Get-OBSCurrentPreviewScene.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSCurrentPreviewScene : GetCurrentPreviewScene", + "Description": "Gets the current preview scene.\n\nOnly available when studio mode is enabled.\n\nNote: This request is slated to have the `currentPreview`-prefixed fields removed from in an upcoming RPC version.\n\n\nGet-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type GetCurrentPreviewScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentpreviewscene" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSCurrentPreviewScene" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCurrentProgramScene.json b/docs/_data/Help/Get-OBSCurrentProgramScene.json new file mode 100644 index 000000000..94add3940 --- /dev/null +++ b/docs/_data/Help/Get-OBSCurrentProgramScene.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSCurrentProgramScene : GetCurrentProgramScene", + "Description": "Gets the current program scene.\n\nNote: This request is slated to have the `currentProgram`-prefixed fields removed from in an upcoming RPC version.\n\n\nGet-OBSCurrentProgramScene calls the OBS WebSocket with a request of type GetCurrentProgramScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentprogramscene" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSCurrentProgramScene" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCurrentSceneTransition.json b/docs/_data/Help/Get-OBSCurrentSceneTransition.json new file mode 100644 index 000000000..e48a69c6a --- /dev/null +++ b/docs/_data/Help/Get-OBSCurrentSceneTransition.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSCurrentSceneTransition : GetCurrentSceneTransition", + "Description": "Gets information about the current scene transition.\n\n\nGet-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type GetCurrentSceneTransition.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransition" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSCurrentSceneTransition" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCurrentSceneTransitionCursor.json b/docs/_data/Help/Get-OBSCurrentSceneTransitionCursor.json new file mode 100644 index 000000000..fe3160b45 --- /dev/null +++ b/docs/_data/Help/Get-OBSCurrentSceneTransitionCursor.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSCurrentSceneTransitionCursor : GetCurrentSceneTransitionCursor", + "Description": "Gets the cursor position of the current scene transition.\n\nNote: `transitionCursor` will return 1.0 when the transition is inactive.\n\n\nGet-OBSCurrentSceneTransitionCursor calls the OBS WebSocket with a request of type GetCurrentSceneTransitionCursor.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransitioncursor" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSCurrentSceneTransitionCursor" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCurveShader.json b/docs/_data/Help/Get-OBSCurveShader.json new file mode 100644 index 000000000..bdde1131c --- /dev/null +++ b/docs/_data/Help/Get-OBSCurveShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCurveShader [[-Strength] ] [[-Scale] ] [[-CurveColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCutRectPerCornerShader.json b/docs/_data/Help/Get-OBSCutRectPerCornerShader.json new file mode 100644 index 000000000..1de0ae52d --- /dev/null +++ b/docs/_data/Help/Get-OBSCutRectPerCornerShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCutRectPerCornerShader [[-CornerTl] ] [[-CornerTr] ] [[-CornerBr] ] [[-CornerBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSCylinderShader.json b/docs/_data/Help/Get-OBSCylinderShader.json new file mode 100644 index 000000000..5774b470e --- /dev/null +++ b/docs/_data/Help/Get-OBSCylinderShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCylinderShader [[-CylinderFactor] ] [[-BackgroundCut] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDarkenShader.json b/docs/_data/Help/Get-OBSDarkenShader.json new file mode 100644 index 000000000..9f2837528 --- /dev/null +++ b/docs/_data/Help/Get-OBSDarkenShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDarkenShader [[-OpacityPercentage] ] [[-FillPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDeadPixelFixerShader.json b/docs/_data/Help/Get-OBSDeadPixelFixerShader.json new file mode 100644 index 000000000..5e80f1339 --- /dev/null +++ b/docs/_data/Help/Get-OBSDeadPixelFixerShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDeadPixelFixerShader [[-DeadPixelX] ] [[-DeadPixelY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDensitySatHueShader.json b/docs/_data/Help/Get-OBSDensitySatHueShader.json new file mode 100644 index 000000000..91dc11503 --- /dev/null +++ b/docs/_data/Help/Get-OBSDensitySatHueShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDensitySatHueShader [[-Notes] ] [[-DensityR] ] [[-SaturationR] ] [[-HueShiftR] ] [[-DensityY] ] [[-SaturationY] ] [[-HueShiftY] ] [[-DensityG] ] [[-SaturationG] ] [[-HueShiftG] ] [[-DensityC] ] [[-SaturationC] ] [[-HueShiftC] ] [[-DensityB] ] [[-SaturationB] ] [[-HueShiftB] ] [[-DensityM] ] [[-SaturationM] ] [[-HueShiftM] ] [[-GlobalDensity] ] [[-GlobalSaturation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDiffuseTransitionShader.json b/docs/_data/Help/Get-OBSDiffuseTransitionShader.json new file mode 100644 index 000000000..60618b4a7 --- /dev/null +++ b/docs/_data/Help/Get-OBSDiffuseTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDiffuseTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-NumSamples] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDigitalRainShader.json b/docs/_data/Help/Get-OBSDigitalRainShader.json new file mode 100644 index 000000000..92e7f0912 --- /dev/null +++ b/docs/_data/Help/Get-OBSDigitalRainShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDigitalRainShader [[-Font] ] [[-Noise] ] [[-BaseColor] ] [[-RainSpeed] ] [[-CharSpeed] ] [[-GlowContrast] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDivideRotateShader.json b/docs/_data/Help/Get-OBSDivideRotateShader.json new file mode 100644 index 000000000..41662a5db --- /dev/null +++ b/docs/_data/Help/Get-OBSDivideRotateShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDivideRotateShader [[-IChannel0] ] [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDoodleShader.json b/docs/_data/Help/Get-OBSDoodleShader.json new file mode 100644 index 000000000..41105c78e --- /dev/null +++ b/docs/_data/Help/Get-OBSDoodleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDoodleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-DoodleScalePercent] ] [[-SnapPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDrawingsShader.json b/docs/_data/Help/Get-OBSDrawingsShader.json new file mode 100644 index 000000000..9f29446bf --- /dev/null +++ b/docs/_data/Help/Get-OBSDrawingsShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDrawingsShader [[-AngleNum] ] [[-SampNum] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDropShadowShader.json b/docs/_data/Help/Get-OBSDropShadowShader.json new file mode 100644 index 000000000..8c563d2a7 --- /dev/null +++ b/docs/_data/Help/Get-OBSDropShadowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-Notes] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDrunkShader.json b/docs/_data/Help/Get-OBSDrunkShader.json new file mode 100644 index 000000000..b5d121d86 --- /dev/null +++ b/docs/_data/Help/Get-OBSDrunkShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDrunkShader [[-ColorMatrix] ] [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeedPercent] ] [[-GlowColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSDynamicMaskShader.json b/docs/_data/Help/Get-OBSDynamicMaskShader.json new file mode 100644 index 000000000..753b04007 --- /dev/null +++ b/docs/_data/Help/Get-OBSDynamicMaskShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDynamicMaskShader [[-InputSource] ] [[-RedBaseValue] ] [[-RedRedInputValue] ] [[-RedGreenInputValue] ] [[-RedBlueInputValue] ] [[-RedAlphaInputValue] ] [[-RedMultiplier] ] [[-GreenBaseValue] ] [[-GreenRedInputValue] ] [[-GreenGreenInputValue] ] [[-GreenBlueInputValue] ] [[-GreenAlphaInputValue] ] [[-GreenMultiplier] ] [[-BlueBaseValue] ] [[-BlueRedInputValue] ] [[-BlueGreenInputValue] ] [[-BlueBlueInputValue] ] [[-BlueAlphaInputValue] ] [[-BlueMultiplier] ] [[-AlphaBaseValue] ] [[-AlphaRedInputValue] ] [[-AlphaGreenInputValue] ] [[-AlphaBlueInputValue] ] [[-AlphaAlphaInputValue] ] [[-AlphaMultiplier] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSEdgeDetectionShader.json b/docs/_data/Help/Get-OBSEdgeDetectionShader.json new file mode 100644 index 000000000..d364ada5e --- /dev/null +++ b/docs/_data/Help/Get-OBSEdgeDetectionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEdgeDetectionShader [[-Sensitivity] ] [[-EdgeColor] ] [[-NonEdgeColor] ] [[-AlphaLevel] ] [[-RandF] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertEdge] [-EdgeMultiply] [-NonEdgeMultiply] [-AlphaChannel] [-AlphaInvert] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSEffect.json b/docs/_data/Help/Get-OBSEffect.json new file mode 100644 index 000000000..051d47359 --- /dev/null +++ b/docs/_data/Help/Get-OBSEffect.json @@ -0,0 +1,36 @@ +{ + "Synopsis": "Gets OBS Effects", + "Description": "Gets effects currently loaded into OBS-PowerShell.\n\nAn effect can be thought of as a name with a series of messages to OBS.\n\nThose messages can be defined in a .json file or a script, in any module that tags OBS.\n\nThey can also be defined in a function or script named like:\n\n* `*.OBS.FX.*`\n* `*.OBS.Effect.*`\n* `*.OBS.Effects.*`", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSEmbersShader.json b/docs/_data/Help/Get-OBSEmbersShader.json new file mode 100644 index 000000000..c25091fba --- /dev/null +++ b/docs/_data/Help/Get-OBSEmbersShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEmbersShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-AnimationSpeed] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-MovementSpeedPercent] ] [[-LayersCount] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSEmbossColorShader.json b/docs/_data/Help/Get-OBSEmbossColorShader.json new file mode 100644 index 000000000..a9e344e0c --- /dev/null +++ b/docs/_data/Help/Get-OBSEmbossColorShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEmbossColorShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-UpDownPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSEmbossShader.json b/docs/_data/Help/Get-OBSEmbossShader.json new file mode 100644 index 000000000..026c5ce18 --- /dev/null +++ b/docs/_data/Help/Get-OBSEmbossShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEmbossShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-UseColor] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSExeldroBentCameraShader.json b/docs/_data/Help/Get-OBSExeldroBentCameraShader.json new file mode 100644 index 000000000..97ae580e0 --- /dev/null +++ b/docs/_data/Help/Get-OBSExeldroBentCameraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSExeldroBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFFMpegSource.json b/docs/_data/Help/Get-OBSFFMpegSource.json new file mode 100644 index 000000000..441822c93 --- /dev/null +++ b/docs/_data/Help/Get-OBSFFMpegSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a media source", + "Description": "Adds a media source to OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSMediaSource -FilePath My.mp4" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFadeTransitionShader.json b/docs/_data/Help/Get-OBSFadeTransitionShader.json new file mode 100644 index 000000000..bc051a0d4 --- /dev/null +++ b/docs/_data/Help/Get-OBSFadeTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFadeTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFillColorGradientShader.json b/docs/_data/Help/Get-OBSFillColorGradientShader.json new file mode 100644 index 000000000..bf65f0cd9 --- /dev/null +++ b/docs/_data/Help/Get-OBSFillColorGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorGradientShader [[-Fill] ] [[-GradientWidth] ] [[-GradientOffset] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFillColorLinearShader.json b/docs/_data/Help/Get-OBSFillColorLinearShader.json new file mode 100644 index 000000000..6da086b3c --- /dev/null +++ b/docs/_data/Help/Get-OBSFillColorLinearShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorLinearShader [[-Fill] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFillColorRadialDegreesShader.json b/docs/_data/Help/Get-OBSFillColorRadialDegreesShader.json new file mode 100644 index 000000000..7ad1a1b70 --- /dev/null +++ b/docs/_data/Help/Get-OBSFillColorRadialDegreesShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorRadialDegreesShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFillColorRadialPercentageShader.json b/docs/_data/Help/Get-OBSFillColorRadialPercentageShader.json new file mode 100644 index 000000000..1a86c0783 --- /dev/null +++ b/docs/_data/Help/Get-OBSFillColorRadialPercentageShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorRadialPercentageShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFilterTemplateShader.json b/docs/_data/Help/Get-OBSFilterTemplateShader.json new file mode 100644 index 000000000..5c2eba345 --- /dev/null +++ b/docs/_data/Help/Get-OBSFilterTemplateShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFilterTemplateShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFire3Shader.json b/docs/_data/Help/Get-OBSFire3Shader.json new file mode 100644 index 000000000..e3602effa --- /dev/null +++ b/docs/_data/Help/Get-OBSFire3Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFire3Shader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-AlphaPercentage] ] [[-Speed] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-FlameSize] ] [[-SparkGridHeight] ] [[-FlameModifier] ] [[-FlameTongueSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-FullWidth] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFireShader.json b/docs/_data/Help/Get-OBSFireShader.json new file mode 100644 index 000000000..af997ea1f --- /dev/null +++ b/docs/_data/Help/Get-OBSFireShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFireShader [[-AlphaPercentage] ] [[-Speed] ] [[-FlameSize] ] [[-FireType] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFireworks2Shader.json b/docs/_data/Help/Get-OBSFireworks2Shader.json new file mode 100644 index 000000000..5f52a7e2b --- /dev/null +++ b/docs/_data/Help/Get-OBSFireworks2Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFireworks2Shader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFireworksShader.json b/docs/_data/Help/Get-OBSFireworksShader.json new file mode 100644 index 000000000..306183c67 --- /dev/null +++ b/docs/_data/Help/Get-OBSFireworksShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFireworksShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowFlash] [-ShowStars] [-UseTransparancy] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFisheyeShader.json b/docs/_data/Help/Get-OBSFisheyeShader.json new file mode 100644 index 000000000..bdcb9d2f4 --- /dev/null +++ b/docs/_data/Help/Get-OBSFisheyeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFisheyeShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFisheyeXyShader.json b/docs/_data/Help/Get-OBSFisheyeXyShader.json new file mode 100644 index 000000000..a4c4c84cb --- /dev/null +++ b/docs/_data/Help/Get-OBSFisheyeXyShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFisheyeXyShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-PowerX] ] [[-PowerY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFlipShader.json b/docs/_data/Help/Get-OBSFlipShader.json new file mode 100644 index 000000000..7f6128fd1 --- /dev/null +++ b/docs/_data/Help/Get-OBSFlipShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFlipShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSFrostedGlassShader.json b/docs/_data/Help/Get-OBSFrostedGlassShader.json new file mode 100644 index 000000000..096325363 --- /dev/null +++ b/docs/_data/Help/Get-OBSFrostedGlassShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFrostedGlassShader [[-AlphaPercent] ] [[-Amount] ] [[-Scale] ] [[-BorderOffset] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGammaCorrectionShader.json b/docs/_data/Help/Get-OBSGammaCorrectionShader.json new file mode 100644 index 000000000..d4c899951 --- /dev/null +++ b/docs/_data/Help/Get-OBSGammaCorrectionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGammaCorrectionShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGaussianBlurAdvancedShader.json b/docs/_data/Help/Get-OBSGaussianBlurAdvancedShader.json new file mode 100644 index 000000000..19d234348 --- /dev/null +++ b/docs/_data/Help/Get-OBSGaussianBlurAdvancedShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianBlurAdvancedShader [[-Directions] ] [[-Quality] ] [[-Size] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGaussianBlurShader.json b/docs/_data/Help/Get-OBSGaussianBlurShader.json new file mode 100644 index 000000000..9630c3f94 --- /dev/null +++ b/docs/_data/Help/Get-OBSGaussianBlurShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianBlurShader [[-ViewProj] ] [[-Image] ] [[-ImageSize] ] [[-ImageTexel] ] [[-URadius] ] [[-UDiameter] ] [[-UTexelDelta] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-Kernel] ] [[-KernelTexel] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGaussianBlurSimpleShader.json b/docs/_data/Help/Get-OBSGaussianBlurSimpleShader.json new file mode 100644 index 000000000..da9109be2 --- /dev/null +++ b/docs/_data/Help/Get-OBSGaussianBlurSimpleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianBlurSimpleShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGaussianExampleShader.json b/docs/_data/Help/Get-OBSGaussianExampleShader.json new file mode 100644 index 000000000..58383d56d --- /dev/null +++ b/docs/_data/Help/Get-OBSGaussianExampleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianExampleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-InitialImage] ] [[-BeforeImage] ] [[-AfterImage] ] [[-TextColor] ] [[-MaxDistance] ] [[-Exp] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGaussianSimpleShader.json b/docs/_data/Help/Get-OBSGaussianSimpleShader.json new file mode 100644 index 000000000..60b80d6bf --- /dev/null +++ b/docs/_data/Help/Get-OBSGaussianSimpleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianSimpleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Samples] ] [[-LOD] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGbCameraShader.json b/docs/_data/Help/Get-OBSGbCameraShader.json new file mode 100644 index 000000000..2701fc6fa --- /dev/null +++ b/docs/_data/Help/Get-OBSGbCameraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGbCameraShader [[-PixelSize] ] [[-DitherFactor] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Color1] ] [[-Color2] ] [[-Color3] ] [[-Color4] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AlternativeBayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGlassShader.json b/docs/_data/Help/Get-OBSGlassShader.json new file mode 100644 index 000000000..ccb74fed9 --- /dev/null +++ b/docs/_data/Help/Get-OBSGlassShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlassShader [[-AlphaPercent] ] [[-OffsetAmount] ] [[-XSize] ] [[-YSize] ] [[-ReflectionOffset] ] [[-BorderOffset] ] [[-BorderColor] ] [[-GlassColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGlitchAnalogShader.json b/docs/_data/Help/Get-OBSGlitchAnalogShader.json new file mode 100644 index 000000000..305702c1f --- /dev/null +++ b/docs/_data/Help/Get-OBSGlitchAnalogShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] ] [[-ScanLineJitterThresholdPercent] ] [[-VerticalJumpAmount] ] [[-VerticalSpeed] ] [[-HorizontalShake] ] [[-ColorDriftAmount] ] [[-ColorDriftSpeed] ] [[-PulseSpeedPercent] ] [[-AlphaPercent] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateColors] [-ApplyToAlphaLayer] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGlitchShader.json b/docs/_data/Help/Get-OBSGlitchShader.json new file mode 100644 index 000000000..7cff399c7 --- /dev/null +++ b/docs/_data/Help/Get-OBSGlitchShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlitchShader [[-AMT] ] [[-SPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGlowShader.json b/docs/_data/Help/Get-OBSGlowShader.json new file mode 100644 index 000000000..bf035acbe --- /dev/null +++ b/docs/_data/Help/Get-OBSGlowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlowShader [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGradientShader.json b/docs/_data/Help/Get-OBSGradientShader.json new file mode 100644 index 000000000..d163fa07d --- /dev/null +++ b/docs/_data/Help/Get-OBSGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGradientShader [[-StartColor] ] [[-StartStep] ] [[-MiddleColor] ] [[-MiddleStep] ] [[-EndColor] ] [[-EndStep] ] [[-AlphaPercent] ] [[-PulseSpeed] ] [[-ColorToReplace] ] [[-GradientCenterWidthPercentage] ] [[-GradientCenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-RotateColors] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGroup.json b/docs/_data/Help/Get-OBSGroup.json new file mode 100644 index 000000000..da8d3ac58 --- /dev/null +++ b/docs/_data/Help/Get-OBSGroup.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSGroup : GetGroupList", + "Description": "Gets an array of all groups in OBS.\n\nGroups in OBS are actually scenes, but renamed and modified. In obs-websocket, we treat them as scenes where we can.\n\n\nGet-OBSGroup calls the OBS WebSocket with a request of type GetGroupList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgrouplist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSGroup" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSGroupSceneItem.json b/docs/_data/Help/Get-OBSGroupSceneItem.json new file mode 100644 index 000000000..aad67fa45 --- /dev/null +++ b/docs/_data/Help/Get-OBSGroupSceneItem.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSGroupSceneItem : GetGroupSceneItemList", + "Description": "Basically GetSceneItemList, but for groups.\n\nUsing groups at all in OBS is discouraged, as they are very broken under the hood. Please use nested scenes instead.\n\nGroups only\n\n\nGet-OBSGroupSceneItem calls the OBS WebSocket with a request of type GetGroupSceneItemList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgroupsceneitemlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSHalftoneShader.json b/docs/_data/Help/Get-OBSHalftoneShader.json new file mode 100644 index 000000000..b579880d4 --- /dev/null +++ b/docs/_data/Help/Get-OBSHalftoneShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHalftoneShader [[-Threshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSHeatWaveSimpleShader.json b/docs/_data/Help/Get-OBSHeatWaveSimpleShader.json new file mode 100644 index 000000000..89a4eea44 --- /dev/null +++ b/docs/_data/Help/Get-OBSHeatWaveSimpleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHeatWaveSimpleShader [[-Rate] ] [[-Strength] ] [[-Distortion] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSHexagonShader.json b/docs/_data/Help/Get-OBSHexagonShader.json new file mode 100644 index 000000000..da567fd2b --- /dev/null +++ b/docs/_data/Help/Get-OBSHexagonShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHexagonShader [[-HexColor] ] [[-AlphaPercent] ] [[-Quantity] ] [[-BorderWidth] ] [[-SpeedPercent] ] [[-DistortX] ] [[-DistortY] ] [[-OffsetX] ] [[-OffsetY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Blend] [-Equilateral] [-ZoomAnimate] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSHotkey.json b/docs/_data/Help/Get-OBSHotkey.json new file mode 100644 index 000000000..1cfc31a8f --- /dev/null +++ b/docs/_data/Help/Get-OBSHotkey.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSHotkey : GetHotkeyList", + "Description": "Gets an array of all hotkey names in OBS.\n\nNote: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests.\n\n\nGet-OBSHotkey calls the OBS WebSocket with a request of type GetHotkeyList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gethotkeylist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSHotkey" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSHslHsvSaturationShader.json b/docs/_data/Help/Get-OBSHslHsvSaturationShader.json new file mode 100644 index 000000000..f3bdd6bea --- /dev/null +++ b/docs/_data/Help/Get-OBSHslHsvSaturationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] ] [[-HslGamma] ] [[-HsvSaturationFactor] ] [[-HsvGamma] ] [[-AdjustmentOrder] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSHueRotatonShader.json b/docs/_data/Help/Get-OBSHueRotatonShader.json new file mode 100644 index 000000000..7d1b0626c --- /dev/null +++ b/docs/_data/Help/Get-OBSHueRotatonShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHueRotatonShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HueOverride] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInput.json b/docs/_data/Help/Get-OBSInput.json new file mode 100644 index 000000000..75167e000 --- /dev/null +++ b/docs/_data/Help/Get-OBSInput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInput : GetInputList", + "Description": "Gets an array of all inputs in OBS.\n\n\nGet-OBSInput calls the OBS WebSocket with a request of type GetInputList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputAudioBalance.json b/docs/_data/Help/Get-OBSInputAudioBalance.json new file mode 100644 index 000000000..a0bf0858b --- /dev/null +++ b/docs/_data/Help/Get-OBSInputAudioBalance.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputAudioBalance : GetInputAudioBalance", + "Description": "Gets the audio balance of an input.\n\n\nGet-OBSInputAudioBalance calls the OBS WebSocket with a request of type GetInputAudioBalance.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiobalance" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputAudioMonitorType.json b/docs/_data/Help/Get-OBSInputAudioMonitorType.json new file mode 100644 index 000000000..a44f32cb6 --- /dev/null +++ b/docs/_data/Help/Get-OBSInputAudioMonitorType.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputAudioMonitorType : GetInputAudioMonitorType", + "Description": "Gets the audio monitor type of an input.\n\nThe available audio monitor types are:\n\n- `OBS_MONITORING_TYPE_NONE`\n- `OBS_MONITORING_TYPE_MONITOR_ONLY`\n- `OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT`\n\n\nGet-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type GetInputAudioMonitorType.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiomonitortype" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputAudioSyncOffset.json b/docs/_data/Help/Get-OBSInputAudioSyncOffset.json new file mode 100644 index 000000000..4e7dddb57 --- /dev/null +++ b/docs/_data/Help/Get-OBSInputAudioSyncOffset.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputAudioSyncOffset : GetInputAudioSyncOffset", + "Description": "Gets the audio sync offset of an input.\n\nNote: The audio sync offset can be negative too!\n\n\nGet-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type GetInputAudioSyncOffset.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiosyncoffset" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputAudioTracks.json b/docs/_data/Help/Get-OBSInputAudioTracks.json new file mode 100644 index 000000000..ce62e8548 --- /dev/null +++ b/docs/_data/Help/Get-OBSInputAudioTracks.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputAudioTracks : GetInputAudioTracks", + "Description": "Gets the enable state of all audio tracks of an input.\n\n\nGet-OBSInputAudioTracks calls the OBS WebSocket with a request of type GetInputAudioTracks.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiotracks" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputDefaultSettings.json b/docs/_data/Help/Get-OBSInputDefaultSettings.json new file mode 100644 index 000000000..f3cf78157 --- /dev/null +++ b/docs/_data/Help/Get-OBSInputDefaultSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputDefaultSettings : GetInputDefaultSettings", + "Description": "Gets the default settings for an input kind.\n\n\nGet-OBSInputDefaultSettings calls the OBS WebSocket with a request of type GetInputDefaultSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputdefaultsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputKind.json b/docs/_data/Help/Get-OBSInputKind.json new file mode 100644 index 000000000..2774bd13e --- /dev/null +++ b/docs/_data/Help/Get-OBSInputKind.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputKind : GetInputKindList", + "Description": "Gets an array of all available input kinds in OBS.\n\n\nGet-OBSInputKind calls the OBS WebSocket with a request of type GetInputKindList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputkindlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputMute.json b/docs/_data/Help/Get-OBSInputMute.json new file mode 100644 index 000000000..4d2cf61d1 --- /dev/null +++ b/docs/_data/Help/Get-OBSInputMute.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputMute : GetInputMute", + "Description": "Gets the audio mute state of an input.\n\n\nGet-OBSInputMute calls the OBS WebSocket with a request of type GetInputMute.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputmute" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputPropertiesListPropertyItems.json b/docs/_data/Help/Get-OBSInputPropertiesListPropertyItems.json new file mode 100644 index 000000000..a20a903a7 --- /dev/null +++ b/docs/_data/Help/Get-OBSInputPropertiesListPropertyItems.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputPropertiesListPropertyItems : GetInputPropertiesListPropertyItems", + "Description": "Gets the items of a list property from an input's properties.\n\nNote: Use this in cases where an input provides a dynamic, selectable list of items. For example, display capture, where it provides a list of available displays.\n\n\nGet-OBSInputPropertiesListPropertyItems calls the OBS WebSocket with a request of type GetInputPropertiesListPropertyItems.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputpropertieslistpropertyitems" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputSettings.json b/docs/_data/Help/Get-OBSInputSettings.json new file mode 100644 index 000000000..49e1507d8 --- /dev/null +++ b/docs/_data/Help/Get-OBSInputSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputSettings : GetInputSettings", + "Description": "Gets the settings of an input.\n\nNote: Does not include defaults. To create the entire settings object, overlay `inputSettings` over the `defaultInputSettings` provided by `GetInputDefaultSettings`.\n\n\nGet-OBSInputSettings calls the OBS WebSocket with a request of type GetInputSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInputVolume.json b/docs/_data/Help/Get-OBSInputVolume.json new file mode 100644 index 000000000..c39c227db --- /dev/null +++ b/docs/_data/Help/Get-OBSInputVolume.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputVolume : GetInputVolume", + "Description": "Gets the current volume setting of an input.\n\n\nGet-OBSInputVolume calls the OBS WebSocket with a request of type GetInputVolume.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputvolume" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSIntensityScopeShader.json b/docs/_data/Help/Get-OBSIntensityScopeShader.json new file mode 100644 index 000000000..c79bc6f1f --- /dev/null +++ b/docs/_data/Help/Get-OBSIntensityScopeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSIntensityScopeShader [[-Gain] ] [[-Blend] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSInvertLumaShader.json b/docs/_data/Help/Get-OBSInvertLumaShader.json new file mode 100644 index 000000000..5abd320e4 --- /dev/null +++ b/docs/_data/Help/Get-OBSInvertLumaShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSInvertLumaShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertColor] [-InvertLuma] [-GammaCorrection] [-TestRamp] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSLastReplayBufferReplay.json b/docs/_data/Help/Get-OBSLastReplayBufferReplay.json new file mode 100644 index 000000000..a09404aaa --- /dev/null +++ b/docs/_data/Help/Get-OBSLastReplayBufferReplay.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSLastReplayBufferReplay : GetLastReplayBufferReplay", + "Description": "Gets the filename of the last replay buffer save file.\n\n\nGet-OBSLastReplayBufferReplay calls the OBS WebSocket with a request of type GetLastReplayBufferReplay.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getlastreplaybufferreplay" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSLastReplayBufferReplay" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSLuminance2Shader.json b/docs/_data/Help/Get-OBSLuminance2Shader.json new file mode 100644 index 000000000..4555c78a8 --- /dev/null +++ b/docs/_data/Help/Get-OBSLuminance2Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSLuminance2Shader [[-Color] ] [[-LumaMax] ] [[-LumaMin] ] [[-LumaMaxSmooth] ] [[-LumaMinSmooth] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSLuminanceAlphaShader.json b/docs/_data/Help/Get-OBSLuminanceAlphaShader.json new file mode 100644 index 000000000..d269489b4 --- /dev/null +++ b/docs/_data/Help/Get-OBSLuminanceAlphaShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSLuminanceAlphaShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ColorMatrix] ] [[-Color] ] [[-MulVal] ] [[-AddVal] ] [[-Level] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSLuminanceShader.json b/docs/_data/Help/Get-OBSLuminanceShader.json new file mode 100644 index 000000000..1e89f6f54 --- /dev/null +++ b/docs/_data/Help/Get-OBSLuminanceShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSLuminanceShader [[-Color] ] [[-Level] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSMarkdownSource.json b/docs/_data/Help/Get-OBSMarkdownSource.json new file mode 100644 index 000000000..ce9f33364 --- /dev/null +++ b/docs/_data/Help/Get-OBSMarkdownSource.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Sets a markdown source", + "Description": "Adds or changes a markdown source in OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSMatrixShader.json b/docs/_data/Help/Get-OBSMatrixShader.json new file mode 100644 index 000000000..ccd1e30d0 --- /dev/null +++ b/docs/_data/Help/Get-OBSMatrixShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSMatrixShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Mouse] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-Ratio] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertDirection] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSMediaInputStatus.json b/docs/_data/Help/Get-OBSMediaInputStatus.json new file mode 100644 index 000000000..68173d2d5 --- /dev/null +++ b/docs/_data/Help/Get-OBSMediaInputStatus.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSMediaInputStatus : GetMediaInputStatus", + "Description": "Gets the status of a media input.\n\nMedia States:\n\n- `OBS_MEDIA_STATE_NONE`\n- `OBS_MEDIA_STATE_PLAYING`\n- `OBS_MEDIA_STATE_OPENING`\n- `OBS_MEDIA_STATE_BUFFERING`\n- `OBS_MEDIA_STATE_PAUSED`\n- `OBS_MEDIA_STATE_STOPPED`\n- `OBS_MEDIA_STATE_ENDED`\n- `OBS_MEDIA_STATE_ERROR`\n\n\nGet-OBSMediaInputStatus calls the OBS WebSocket with a request of type GetMediaInputStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmediainputstatus" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSMediaSource.json b/docs/_data/Help/Get-OBSMediaSource.json new file mode 100644 index 000000000..441822c93 --- /dev/null +++ b/docs/_data/Help/Get-OBSMediaSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a media source", + "Description": "Adds a media source to OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSMediaSource -FilePath My.mp4" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSMonitor.json b/docs/_data/Help/Get-OBSMonitor.json new file mode 100644 index 000000000..222d79896 --- /dev/null +++ b/docs/_data/Help/Get-OBSMonitor.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSMonitor : GetMonitorList", + "Description": "Gets a list of connected monitors and information about them.\n\n\nGet-OBSMonitor calls the OBS WebSocket with a request of type GetMonitorList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmonitorlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSMonitor" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSMultiplyShader.json b/docs/_data/Help/Get-OBSMultiplyShader.json new file mode 100644 index 000000000..1a09f039f --- /dev/null +++ b/docs/_data/Help/Get-OBSMultiplyShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSMultiplyShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSNightSkyShader.json b/docs/_data/Help/Get-OBSNightSkyShader.json new file mode 100644 index 000000000..00e458c7f --- /dev/null +++ b/docs/_data/Help/Get-OBSNightSkyShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSNightSkyShader [[-Speed] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-AlphaPercentage] ] [[-NumberStars] ] [[-SKYCOLOR] ] [[-STARCOLOR] ] [[-LIGHTSKY] ] [[-SKYLIGHTNESS] ] [[-MOONCOLOR] ] [[-MoonSize] ] [[-MoonBumpSize] ] [[-MoonPositionX] ] [[-MoonPositionY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IncludeClouds] [-IncludeMoon] [-ApplyToImage] [-ReplaceImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSOpacityShader.json b/docs/_data/Help/Get-OBSOpacityShader.json new file mode 100644 index 000000000..29698c99d --- /dev/null +++ b/docs/_data/Help/Get-OBSOpacityShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSOpacityShader [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSOutput.json b/docs/_data/Help/Get-OBSOutput.json new file mode 100644 index 000000000..dceabe56f --- /dev/null +++ b/docs/_data/Help/Get-OBSOutput.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSOutput : GetOutputList", + "Description": "Gets the list of available outputs.\n\n\nGet-OBSOutput calls the OBS WebSocket with a request of type GetOutputList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSOutput" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSOutputSettings.json b/docs/_data/Help/Get-OBSOutputSettings.json new file mode 100644 index 000000000..2045b742e --- /dev/null +++ b/docs/_data/Help/Get-OBSOutputSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSOutputSettings : GetOutputSettings", + "Description": "Gets the settings of an output.\n\n\nGet-OBSOutputSettings calls the OBS WebSocket with a request of type GetOutputSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSOutputStatus.json b/docs/_data/Help/Get-OBSOutputStatus.json new file mode 100644 index 000000000..3ada79716 --- /dev/null +++ b/docs/_data/Help/Get-OBSOutputStatus.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSOutputStatus : GetOutputStatus", + "Description": "Gets the status of an output.\n\n\nGet-OBSOutputStatus calls the OBS WebSocket with a request of type GetOutputStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputstatus" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPagePeelShader.json b/docs/_data/Help/Get-OBSPagePeelShader.json new file mode 100644 index 000000000..142f98f65 --- /dev/null +++ b/docs/_data/Help/Get-OBSPagePeelShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPagePeelShader [[-Speed] ] [[-Position] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPagePeelTransitionShader.json b/docs/_data/Help/Get-OBSPagePeelTransitionShader.json new file mode 100644 index 000000000..fd398f3cb --- /dev/null +++ b/docs/_data/Help/Get-OBSPagePeelTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPagePeelTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-PageColor] ] [[-PageTransparency] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPerlinNoiseShader.json b/docs/_data/Help/Get-OBSPerlinNoiseShader.json new file mode 100644 index 000000000..fbad434ed --- /dev/null +++ b/docs/_data/Help/Get-OBSPerlinNoiseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPerlinNoiseShader [[-Speed] ] [[-SpeedHorizonal] ] [[-SpeedVertical] ] [[-Iterations] ] [[-WhiteNoise] ] [[-BlackNoise] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-Inverted] [-Multiply] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPersistentData.json b/docs/_data/Help/Get-OBSPersistentData.json new file mode 100644 index 000000000..0c4ebfef0 --- /dev/null +++ b/docs/_data/Help/Get-OBSPersistentData.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSPersistentData : GetPersistentData", + "Description": "Gets the value of a \"slot\" from the selected persistent data realm.\n\n\nGet-OBSPersistentData calls the OBS WebSocket with a request of type GetPersistentData.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getpersistentdata" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPieChartShader.json b/docs/_data/Help/Get-OBSPieChartShader.json new file mode 100644 index 000000000..8468a8cbf --- /dev/null +++ b/docs/_data/Help/Get-OBSPieChartShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPieChartShader [[-InnerRadius] ] [[-OuterRadius] ] [[-StartAngle] ] [[-Total] ] [[-Part1] ] [[-Color1] ] [[-Part2] ] [[-Color2] ] [[-Part3] ] [[-Color3] ] [[-Part4] ] [[-Color4] ] [[-Part5] ] [[-Color5] ] [[-Part6] ] [[-Color6] ] [[-Part7] ] [[-Color7] ] [[-Part8] ] [[-Color8] ] [[-Part9] ] [[-Color9] ] [[-Part10] ] [[-Color10] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPixelationShader.json b/docs/_data/Help/Get-OBSPixelationShader.json new file mode 100644 index 000000000..d472e6820 --- /dev/null +++ b/docs/_data/Help/Get-OBSPixelationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPixelationShader [[-TargetWidth] ] [[-TargetHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPixelationTransitionShader.json b/docs/_data/Help/Get-OBSPixelationTransitionShader.json new file mode 100644 index 000000000..db7640c48 --- /dev/null +++ b/docs/_data/Help/Get-OBSPixelationTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPixelationTransitionShader [[-TransitionTime] ] [[-Power] ] [[-CenterX] ] [[-CenterY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPlaylistSource.json b/docs/_data/Help/Get-OBSPlaylistSource.json new file mode 100644 index 000000000..9a526c96c --- /dev/null +++ b/docs/_data/Help/Get-OBSPlaylistSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a VLC playlist source", + "Description": "Adds or sets VLC playlist sources to OBS. \nVLC must be installed for this to work.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSVLCSource -FilePath .\\*.mp3 # Creates a playlist of all MP3s in the current directory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPolarShader.json b/docs/_data/Help/Get-OBSPolarShader.json new file mode 100644 index 000000000..da26497c4 --- /dev/null +++ b/docs/_data/Help/Get-OBSPolarShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPolarShader [[-CenterX] ] [[-CenterY] ] [[-PointY] ] [[-Rotate] ] [[-Repeat] ] [[-Scale] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Flip] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSProfile.json b/docs/_data/Help/Get-OBSProfile.json new file mode 100644 index 000000000..7d0cd691e --- /dev/null +++ b/docs/_data/Help/Get-OBSProfile.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSProfile : GetProfileList", + "Description": "Gets an array of all profiles\n\n\nGet-OBSProfile calls the OBS WebSocket with a request of type GetProfileList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofilelist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSProfile" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSProfileParameter.json b/docs/_data/Help/Get-OBSProfileParameter.json new file mode 100644 index 000000000..8ecd4fb2e --- /dev/null +++ b/docs/_data/Help/Get-OBSProfileParameter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSProfileParameter : GetProfileParameter", + "Description": "Gets a parameter from the current profile's configuration.\n\n\nGet-OBSProfileParameter calls the OBS WebSocket with a request of type GetProfileParameter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofileparameter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSPulseShader.json b/docs/_data/Help/Get-OBSPulseShader.json new file mode 100644 index 000000000..36d742590 --- /dev/null +++ b/docs/_data/Help/Get-OBSPulseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPulseShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRGBAPercentShader.json b/docs/_data/Help/Get-OBSRGBAPercentShader.json new file mode 100644 index 000000000..4752fb944 --- /dev/null +++ b/docs/_data/Help/Get-OBSRGBAPercentShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRGBAPercentShader [[-RedPercent] ] [[-GreenPercent] ] [[-BluePercent] ] [[-AlphaPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRGSSAAShader.json b/docs/_data/Help/Get-OBSRGSSAAShader.json new file mode 100644 index 000000000..58a2de6ed --- /dev/null +++ b/docs/_data/Help/Get-OBSRGSSAAShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRGSSAAShader [[-ColorSigma] ] [[-SpatialSigma] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRainWindowShader.json b/docs/_data/Help/Get-OBSRainWindowShader.json new file mode 100644 index 000000000..13054569f --- /dev/null +++ b/docs/_data/Help/Get-OBSRainWindowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRainWindowShader [[-Size] ] [[-BlurSize] ] [[-TrailStrength] ] [[-TrailColor] ] [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DebugShader] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRainbowShader.json b/docs/_data/Help/Get-OBSRainbowShader.json new file mode 100644 index 000000000..8de2d3c9c --- /dev/null +++ b/docs/_data/Help/Get-OBSRainbowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRainbowShader [[-Saturation] ] [[-Luminosity] ] [[-Spread] ] [[-Speed] ] [[-AlphaPercentage] ] [[-RotationOffset] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRecordDirectory.json b/docs/_data/Help/Get-OBSRecordDirectory.json new file mode 100644 index 000000000..40bcc9246 --- /dev/null +++ b/docs/_data/Help/Get-OBSRecordDirectory.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSRecordDirectory : GetRecordDirectory", + "Description": "Gets the current directory that the record output is set to.\n\n\nGet-OBSRecordDirectory calls the OBS WebSocket with a request of type GetRecordDirectory.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecorddirectory" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSRecordDirectory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRecordStatus.json b/docs/_data/Help/Get-OBSRecordStatus.json new file mode 100644 index 000000000..a653ce70e --- /dev/null +++ b/docs/_data/Help/Get-OBSRecordStatus.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSRecordStatus : GetRecordStatus", + "Description": "Gets the status of the record output.\n\n\nGet-OBSRecordStatus calls the OBS WebSocket with a request of type GetRecordStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecordstatus" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSRecordStatus" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRectangularDropShadowShader.json b/docs/_data/Help/Get-OBSRectangularDropShadowShader.json new file mode 100644 index 000000000..5122a4871 --- /dev/null +++ b/docs/_data/Help/Get-OBSRectangularDropShadowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSReflectShader.json b/docs/_data/Help/Get-OBSReflectShader.json new file mode 100644 index 000000000..262473d12 --- /dev/null +++ b/docs/_data/Help/Get-OBSReflectShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSReflectShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRemovePartialPixelsShader.json b/docs/_data/Help/Get-OBSRemovePartialPixelsShader.json new file mode 100644 index 000000000..36c15cd20 --- /dev/null +++ b/docs/_data/Help/Get-OBSRemovePartialPixelsShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRepeatShader.json b/docs/_data/Help/Get-OBSRepeatShader.json new file mode 100644 index 000000000..9bd54d604 --- /dev/null +++ b/docs/_data/Help/Get-OBSRepeatShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRepeatShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Alpha] ] [[-Copies] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRepeatTextureShader.json b/docs/_data/Help/Get-OBSRepeatTextureShader.json new file mode 100644 index 000000000..d451333fa --- /dev/null +++ b/docs/_data/Help/Get-OBSRepeatTextureShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRepeatTextureShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-TexImage] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Blend] ] [[-Copies] ] [[-Notes] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSReplayBufferStatus.json b/docs/_data/Help/Get-OBSReplayBufferStatus.json new file mode 100644 index 000000000..01ee56f61 --- /dev/null +++ b/docs/_data/Help/Get-OBSReplayBufferStatus.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSReplayBufferStatus : GetReplayBufferStatus", + "Description": "Gets the status of the replay buffer output.\n\n\nGet-OBSReplayBufferStatus calls the OBS WebSocket with a request of type GetReplayBufferStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getreplaybufferstatus" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSReplayBufferStatus" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRgbColorWheelShader.json b/docs/_data/Help/Get-OBSRgbColorWheelShader.json new file mode 100644 index 000000000..5b4a5222f --- /dev/null +++ b/docs/_data/Help/Get-OBSRgbColorWheelShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRgbColorWheelShader [[-Speed] ] [[-ColorDepth] ] [[-ColorToReplace] ] [[-AlphaPercentage] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRgbSplitShader.json b/docs/_data/Help/Get-OBSRgbSplitShader.json new file mode 100644 index 000000000..0e74e3f1b --- /dev/null +++ b/docs/_data/Help/Get-OBSRgbSplitShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRgbSplitShader [[-Redx] ] [[-Redy] ] [[-Greenx] ] [[-Greeny] ] [[-Bluex] ] [[-Bluey] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRgbvisibilityShader.json b/docs/_data/Help/Get-OBSRgbvisibilityShader.json new file mode 100644 index 000000000..90f27d82a --- /dev/null +++ b/docs/_data/Help/Get-OBSRgbvisibilityShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRgbvisibilityShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-RedVisibility] ] [[-GreenVisibility] ] [[-BlueVisibility] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRippleShader.json b/docs/_data/Help/Get-OBSRippleShader.json new file mode 100644 index 000000000..0c381ad29 --- /dev/null +++ b/docs/_data/Help/Get-OBSRippleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRippleShader [[-DistanceFactor] ] [[-TimeFactor] ] [[-PowerFactor] ] [[-CenterPosX] ] [[-CenterPosY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRotatingSourceShader.json b/docs/_data/Help/Get-OBSRotatingSourceShader.json new file mode 100644 index 000000000..695a60151 --- /dev/null +++ b/docs/_data/Help/Get-OBSRotatingSourceShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRotatingSourceShader [[-SpinSpeed] ] [[-Rotation] ] [[-Zoomin] ] [[-XCenter] ] [[-YCenter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-KeepAspectratio] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRotatoeShader.json b/docs/_data/Help/Get-OBSRotatoeShader.json new file mode 100644 index 000000000..9ebcffb5d --- /dev/null +++ b/docs/_data/Help/Get-OBSRotatoeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRotatoeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-SpeedPercent] ] [[-AxisX] ] [[-AxisY] ] [[-AxisZ] ] [[-AngleDegrees] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateTransform] [-RotatePixels] [-RotateColors] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRoundedRect2Shader.json b/docs/_data/Help/Get-OBSRoundedRect2Shader.json new file mode 100644 index 000000000..92f11df06 --- /dev/null +++ b/docs/_data/Help/Get-OBSRoundedRect2Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRect2Shader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-FasterScan] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRoundedRectPerCornerShader.json b/docs/_data/Help/Get-OBSRoundedRectPerCornerShader.json new file mode 100644 index 000000000..a97578dbf --- /dev/null +++ b/docs/_data/Help/Get-OBSRoundedRectPerCornerShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] ] [[-CornerRadiusTr] ] [[-CornerRadiusBr] ] [[-CornerRadiusBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRoundedRectPerSideShader.json b/docs/_data/Help/Get-OBSRoundedRectPerSideShader.json new file mode 100644 index 000000000..4dbca8acf --- /dev/null +++ b/docs/_data/Help/Get-OBSRoundedRectPerSideShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] ] [[-CornerRadiusLeft] ] [[-CornerRadiusTop] ] [[-CornerRadiusRight] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRoundedRectShader.json b/docs/_data/Help/Get-OBSRoundedRectShader.json new file mode 100644 index 000000000..43f1cee77 --- /dev/null +++ b/docs/_data/Help/Get-OBSRoundedRectShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRectShader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRoundedStrokeGradientShader.json b/docs/_data/Help/Get-OBSRoundedStrokeGradientShader.json new file mode 100644 index 000000000..d60d4b519 --- /dev/null +++ b/docs/_data/Help/Get-OBSRoundedStrokeGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedStrokeGradientShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-RotationSpeed] ] [[-BorderColorL] ] [[-BorderColorR] ] [[-CenterWidth] ] [[-CenterHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSRoundedStrokeShader.json b/docs/_data/Help/Get-OBSRoundedStrokeShader.json new file mode 100644 index 000000000..14cc8b08a --- /dev/null +++ b/docs/_data/Help/Get-OBSRoundedStrokeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedStrokeShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSScanLineShader.json b/docs/_data/Help/Get-OBSScanLineShader.json new file mode 100644 index 000000000..d77b16a0f --- /dev/null +++ b/docs/_data/Help/Get-OBSScanLineShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSScanLineShader [[-Speed] ] [[-Angle] ] [[-Floor] ] [[-Period] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Lengthwise] [-Animate] [-Shift] [-Boost] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSScene.json b/docs/_data/Help/Get-OBSScene.json new file mode 100644 index 000000000..8be5c3b01 --- /dev/null +++ b/docs/_data/Help/Get-OBSScene.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSScene : GetSceneList", + "Description": "Gets an array of all scenes in OBS.\n\n\nGet-OBSScene calls the OBS WebSocket with a request of type GetSceneList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenelist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSScene" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneCollection.json b/docs/_data/Help/Get-OBSSceneCollection.json new file mode 100644 index 000000000..76e87627a --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneCollection.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSSceneCollection : GetSceneCollectionList", + "Description": "Gets an array of all scene collections\n\n\nGet-OBSSceneCollection calls the OBS WebSocket with a request of type GetSceneCollectionList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenecollectionlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSSceneCollection" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneItem.json b/docs/_data/Help/Get-OBSSceneItem.json new file mode 100644 index 000000000..5e8f92cc4 --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneItem.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItem : GetSceneItemList", + "Description": "Gets a list of all scene items in a scene.\n\nScenes only\n\n\nGet-OBSSceneItem calls the OBS WebSocket with a request of type GetSceneItemList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneItemBlendMode.json b/docs/_data/Help/Get-OBSSceneItemBlendMode.json new file mode 100644 index 000000000..4c33df294 --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneItemBlendMode.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemBlendMode : GetSceneItemBlendMode", + "Description": "Gets the blend mode of a scene item.\n\nBlend modes:\n\n- `OBS_BLEND_NORMAL`\n- `OBS_BLEND_ADDITIVE`\n- `OBS_BLEND_SUBTRACT`\n- `OBS_BLEND_SCREEN`\n- `OBS_BLEND_MULTIPLY`\n- `OBS_BLEND_LIGHTEN`\n- `OBS_BLEND_DARKEN`\n\nScenes and Groups\n\n\nGet-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type GetSceneItemBlendMode.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemblendmode" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneItemEnabled.json b/docs/_data/Help/Get-OBSSceneItemEnabled.json new file mode 100644 index 000000000..621b87202 --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneItemEnabled.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemEnabled : GetSceneItemEnabled", + "Description": "Gets the enable state of a scene item.\n\nScenes and Groups\n\n\nGet-OBSSceneItemEnabled calls the OBS WebSocket with a request of type GetSceneItemEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemenabled" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneItemId.json b/docs/_data/Help/Get-OBSSceneItemId.json new file mode 100644 index 000000000..e04e18bf0 --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneItemId.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemId : GetSceneItemId", + "Description": "Searches a scene for a source, and returns its id.\n\nScenes and Groups\n\n\nGet-OBSSceneItemId calls the OBS WebSocket with a request of type GetSceneItemId.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemid" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneItemIndex.json b/docs/_data/Help/Get-OBSSceneItemIndex.json new file mode 100644 index 000000000..6e42c172a --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneItemIndex.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemIndex : GetSceneItemIndex", + "Description": "Gets the index position of a scene item in a scene.\n\nAn index of 0 is at the bottom of the source list in the UI.\n\nScenes and Groups\n\n\nGet-OBSSceneItemIndex calls the OBS WebSocket with a request of type GetSceneItemIndex.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemindex" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneItemLocked.json b/docs/_data/Help/Get-OBSSceneItemLocked.json new file mode 100644 index 000000000..56b213ea4 --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneItemLocked.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemLocked : GetSceneItemLocked", + "Description": "Gets the lock state of a scene item.\n\nScenes and Groups\n\n\nGet-OBSSceneItemLocked calls the OBS WebSocket with a request of type GetSceneItemLocked.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlocked" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneItemSource.json b/docs/_data/Help/Get-OBSSceneItemSource.json new file mode 100644 index 000000000..64f5da3a0 --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneItemSource.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemSource : GetSceneItemSource", + "Description": "Gets the source associated with a scene item.\n\n\nGet-OBSSceneItemSource calls the OBS WebSocket with a request of type GetSceneItemSource.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneItemTransform.json b/docs/_data/Help/Get-OBSSceneItemTransform.json new file mode 100644 index 000000000..97e2d954e --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneItemTransform.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemTransform : GetSceneItemTransform", + "Description": "Gets the transform and crop info of a scene item.\n\nScenes and Groups\n\n\nGet-OBSSceneItemTransform calls the OBS WebSocket with a request of type GetSceneItemTransform.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemtransform" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneSceneTransitionOverride.json b/docs/_data/Help/Get-OBSSceneSceneTransitionOverride.json new file mode 100644 index 000000000..4f0e8ef18 --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneSceneTransitionOverride.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneSceneTransitionOverride : GetSceneSceneTransitionOverride", + "Description": "Gets the scene transition overridden for a scene.\n\nNote: A transition UUID response field is not currently able to be implemented as of 2024-1-18.\n\n\nGet-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type GetSceneSceneTransitionOverride.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenescenetransitionoverride" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSceneTransition.json b/docs/_data/Help/Get-OBSSceneTransition.json new file mode 100644 index 000000000..d2d6c77ea --- /dev/null +++ b/docs/_data/Help/Get-OBSSceneTransition.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSSceneTransition : GetSceneTransitionList", + "Description": "Gets an array of all scene transitions in OBS.\n\n\nGet-OBSSceneTransition calls the OBS WebSocket with a request of type GetSceneTransitionList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenetransitionlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSSceneTransition" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSeascapeShader.json b/docs/_data/Help/Get-OBSSeascapeShader.json new file mode 100644 index 000000000..cdd926b70 --- /dev/null +++ b/docs/_data/Help/Get-OBSSeascapeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSeascapeShader [[-SEAHEIGHT] ] [[-SEACHOPPY] ] [[-SEASPEED] ] [[-SEAFREQ] ] [[-SEABASE] ] [[-SEAWATERCOLOR] ] [[-CAMERASPEED] ] [[-CAMERATURNSPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AA] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSeasickShader.json b/docs/_data/Help/Get-OBSSeasickShader.json new file mode 100644 index 000000000..eef433c89 --- /dev/null +++ b/docs/_data/Help/Get-OBSSeasickShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSeasickShader [[-Notes] ] [[-Amplitude] ] [[-Speed] ] [[-Frequency] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSelectiveColorShader.json b/docs/_data/Help/Get-OBSSelectiveColorShader.json new file mode 100644 index 000000000..fce5d6bdf --- /dev/null +++ b/docs/_data/Help/Get-OBSSelectiveColorShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSelectiveColorShader [[-CutoffRed] ] [[-CutoffGreen] ] [[-CutoffBlue] ] [[-CutoffYellow] ] [[-AcceptanceAmplifier] ] [[-Notes] ] [[-BackgroundType] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowRed] [-ShowGreen] [-ShowBlue] [-ShowYellow] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSShakeShader.json b/docs/_data/Help/Get-OBSShakeShader.json new file mode 100644 index 000000000..def40680c --- /dev/null +++ b/docs/_data/Help/Get-OBSShakeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSShakeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-LocalTime] ] [[-RandomScale] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Worble] [-RandomizeMovement] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSShineShader.json b/docs/_data/Help/Get-OBSShineShader.json new file mode 100644 index 000000000..bb19782c3 --- /dev/null +++ b/docs/_data/Help/Get-OBSShineShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSShineShader [[-LTex] ] [[-ShineColor] ] [[-SpeedPercent] ] [[-GradientPercent] ] [[-DelayPercent] ] [[-Notes] ] [[-StartAdjust] ] [[-StopAdjust] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Hide] [-Reverse] [-OneDirection] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSimpleGradientShader.json b/docs/_data/Help/Get-OBSSimpleGradientShader.json new file mode 100644 index 000000000..223095c61 --- /dev/null +++ b/docs/_data/Help/Get-OBSSimpleGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSimpleGradientShader [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-LensFlair] [-AnimateLensFlair] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSimplexNoiseShader.json b/docs/_data/Help/Get-OBSSimplexNoiseShader.json new file mode 100644 index 000000000..6d0a22a7f --- /dev/null +++ b/docs/_data/Help/Get-OBSSimplexNoiseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSimplexNoiseShader [[-SnapPercent] ] [[-SpeedPercent] ] [[-Resolution] ] [[-ForeColor] ] [[-BackColor] ] [[-AlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Fractal] [-UseAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSmartDenoiseShader.json b/docs/_data/Help/Get-OBSSmartDenoiseShader.json new file mode 100644 index 000000000..8f0aca83b --- /dev/null +++ b/docs/_data/Help/Get-OBSSmartDenoiseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSmartDenoiseShader [[-USigma] ] [[-UKSigma] ] [[-UThreshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSoundCloudSource.json b/docs/_data/Help/Get-OBSSoundCloudSource.json new file mode 100644 index 000000000..679cdeccc --- /dev/null +++ b/docs/_data/Help/Get-OBSSoundCloudSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a Sound Cloud Source", + "Description": "Adds or changes a Sound Cloud source OBS. \nSound Cloud Sources are Browser Sources that display a [SoundCloud Player Widget](https://developers.soundcloud.com/docs/api/html5-widget).", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-obssoundCloudSource -Uri https://soundcloud.com/outertone/sets/new-earth" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSourceActive.json b/docs/_data/Help/Get-OBSSourceActive.json new file mode 100644 index 000000000..a45d5096e --- /dev/null +++ b/docs/_data/Help/Get-OBSSourceActive.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceActive : GetSourceActive", + "Description": "Gets the active and show state of a source.\n\n**Compatible with inputs and scenes.**\n\n\nGet-OBSSourceActive calls the OBS WebSocket with a request of type GetSourceActive.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourceactive" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSourceFilter.json b/docs/_data/Help/Get-OBSSourceFilter.json new file mode 100644 index 000000000..d8589e082 --- /dev/null +++ b/docs/_data/Help/Get-OBSSourceFilter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceFilter : GetSourceFilter", + "Description": "Gets the info for a specific source filter.\n\n\nGet-OBSSourceFilter calls the OBS WebSocket with a request of type GetSourceFilter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSourceFilterDefaultSettings.json b/docs/_data/Help/Get-OBSSourceFilterDefaultSettings.json new file mode 100644 index 000000000..a08aabdfb --- /dev/null +++ b/docs/_data/Help/Get-OBSSourceFilterDefaultSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceFilterDefaultSettings : GetSourceFilterDefaultSettings", + "Description": "Gets the default settings for a filter kind.\n\n\nGet-OBSSourceFilterDefaultSettings calls the OBS WebSocket with a request of type GetSourceFilterDefaultSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterdefaultsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSourceFilterKind.json b/docs/_data/Help/Get-OBSSourceFilterKind.json new file mode 100644 index 000000000..803939ba3 --- /dev/null +++ b/docs/_data/Help/Get-OBSSourceFilterKind.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSSourceFilterKind : GetSourceFilterKindList", + "Description": "Gets an array of all available source filter kinds.\n\nSimilar to `GetInputKindList`\n\n\nGet-OBSSourceFilterKind calls the OBS WebSocket with a request of type GetSourceFilterKindList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSSourceFilterKind" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSourceFilterList.json b/docs/_data/Help/Get-OBSSourceFilterList.json new file mode 100644 index 000000000..48a148103 --- /dev/null +++ b/docs/_data/Help/Get-OBSSourceFilterList.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceFilterList : GetSourceFilterList", + "Description": "Gets an array of all of a source's filters.\n\n\nGet-OBSSourceFilterList calls the OBS WebSocket with a request of type GetSourceFilterList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSourceScreenshot.json b/docs/_data/Help/Get-OBSSourceScreenshot.json new file mode 100644 index 000000000..9e60ff7e4 --- /dev/null +++ b/docs/_data/Help/Get-OBSSourceScreenshot.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceScreenshot : GetSourceScreenshot", + "Description": "Gets a Base64-encoded screenshot of a source.\n\nThe `imageWidth` and `imageHeight` parameters are treated as \"scale to inner\", meaning the smallest ratio will be used and the aspect ratio of the original resolution is kept.\nIf `imageWidth` and `imageHeight` are not specified, the compressed image will use the full resolution of the source.\n\n**Compatible with inputs and scenes.**\n\n\nGet-OBSSourceScreenshot calls the OBS WebSocket with a request of type GetSourceScreenshot.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcescreenshot" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSpecialInputs.json b/docs/_data/Help/Get-OBSSpecialInputs.json new file mode 100644 index 000000000..831f76ca5 --- /dev/null +++ b/docs/_data/Help/Get-OBSSpecialInputs.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSSpecialInputs : GetSpecialInputs", + "Description": "Gets the names of all special inputs.\n\n\nGet-OBSSpecialInputs calls the OBS WebSocket with a request of type GetSpecialInputs.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getspecialinputs" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSSpecialInputs" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSpecularShineShader.json b/docs/_data/Help/Get-OBSSpecularShineShader.json new file mode 100644 index 000000000..a63d6e628 --- /dev/null +++ b/docs/_data/Help/Get-OBSSpecularShineShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSpecularShineShader [[-Hint] ] [[-Roughness] ] [[-LightStrength] ] [[-LightPositionX] ] [[-LightPositionY] ] [[-FlattenNormal] ] [[-StretchNormalX] ] [[-StretchNormalY] ] [[-LightColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSpotlightShader.json b/docs/_data/Help/Get-OBSSpotlightShader.json new file mode 100644 index 000000000..f43d3b11e --- /dev/null +++ b/docs/_data/Help/Get-OBSSpotlightShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSpotlightShader [[-SpeedPercent] ] [[-FocusPercent] ] [[-SpotlightColor] ] [[-HorizontalOffset] ] [[-VerticalOffset] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSStats.json b/docs/_data/Help/Get-OBSStats.json new file mode 100644 index 000000000..11e6051aa --- /dev/null +++ b/docs/_data/Help/Get-OBSStats.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSStats : GetStats", + "Description": "Gets statistics about OBS, obs-websocket, and the current session.\n\n\nGet-OBSStats calls the OBS WebSocket with a request of type GetStats.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstats" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSStats" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSStreamServiceSettings.json b/docs/_data/Help/Get-OBSStreamServiceSettings.json new file mode 100644 index 000000000..a23e50331 --- /dev/null +++ b/docs/_data/Help/Get-OBSStreamServiceSettings.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSStreamServiceSettings : GetStreamServiceSettings", + "Description": "Gets the current stream service settings (stream destination).\n\n\nGet-OBSStreamServiceSettings calls the OBS WebSocket with a request of type GetStreamServiceSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamservicesettings" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSStreamServiceSettings" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSStreamStatus.json b/docs/_data/Help/Get-OBSStreamStatus.json new file mode 100644 index 000000000..368bf63f5 --- /dev/null +++ b/docs/_data/Help/Get-OBSStreamStatus.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSStreamStatus : GetStreamStatus", + "Description": "Gets the status of the stream output.\n\n\nGet-OBSStreamStatus calls the OBS WebSocket with a request of type GetStreamStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamstatus" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSStreamStatus" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSStudioModeEnabled.json b/docs/_data/Help/Get-OBSStudioModeEnabled.json new file mode 100644 index 000000000..446caef59 --- /dev/null +++ b/docs/_data/Help/Get-OBSStudioModeEnabled.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSStudioModeEnabled : GetStudioModeEnabled", + "Description": "Gets whether studio is enabled.\n\n\nGet-OBSStudioModeEnabled calls the OBS WebSocket with a request of type GetStudioModeEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstudiomodeenabled" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSStudioModeEnabled" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSwirlShader.json b/docs/_data/Help/Get-OBSSwirlShader.json new file mode 100644 index 000000000..cde822f17 --- /dev/null +++ b/docs/_data/Help/Get-OBSSwirlShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSwirlShader [[-Radius] ] [[-Angle] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Inverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSSwitchSource.json b/docs/_data/Help/Get-OBSSwitchSource.json new file mode 100644 index 000000000..9a526c96c --- /dev/null +++ b/docs/_data/Help/Get-OBSSwitchSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a VLC playlist source", + "Description": "Adds or sets VLC playlist sources to OBS. \nVLC must be installed for this to work.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSVLCSource -FilePath .\\*.mp3 # Creates a playlist of all MP3s in the current directory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSTetraShader.json b/docs/_data/Help/Get-OBSTetraShader.json new file mode 100644 index 000000000..966d730b0 --- /dev/null +++ b/docs/_data/Help/Get-OBSTetraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTetraShader [[-RedR] ] [[-RedG] ] [[-RedB] ] [[-YelR] ] [[-YelG] ] [[-YelB] ] [[-GrnR] ] [[-GrnG] ] [[-GrnB] ] [[-CynR] ] [[-CynG] ] [[-CynB] ] [[-BluR] ] [[-BluG] ] [[-BluB] ] [[-MagR] ] [[-MagG] ] [[-MagB] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSThermalShader.json b/docs/_data/Help/Get-OBSThermalShader.json new file mode 100644 index 000000000..422ae31ea --- /dev/null +++ b/docs/_data/Help/Get-OBSThermalShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSThermalShader [[-Strength] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSTransitionKind.json b/docs/_data/Help/Get-OBSTransitionKind.json new file mode 100644 index 000000000..6dc953c2a --- /dev/null +++ b/docs/_data/Help/Get-OBSTransitionKind.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSTransitionKind : GetTransitionKindList", + "Description": "Gets an array of all available transition kinds.\n\nSimilar to `GetInputKindList`\n\n\nGet-OBSTransitionKind calls the OBS WebSocket with a request of type GetTransitionKindList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gettransitionkindlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSTransitionKind" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSTvCrtSubpixelShader.json b/docs/_data/Help/Get-OBSTvCrtSubpixelShader.json new file mode 100644 index 000000000..1f94cb996 --- /dev/null +++ b/docs/_data/Help/Get-OBSTvCrtSubpixelShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTvCrtSubpixelShader [[-ChannelWidth] ] [[-ChannelHeight] ] [[-HGap] ] [[-VGap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSTwistShader.json b/docs/_data/Help/Get-OBSTwistShader.json new file mode 100644 index 000000000..fdbb559eb --- /dev/null +++ b/docs/_data/Help/Get-OBSTwistShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTwistShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-Rotation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSTwoPassDropShadowShader.json b/docs/_data/Help/Get-OBSTwoPassDropShadowShader.json new file mode 100644 index 000000000..d0ea47a01 --- /dev/null +++ b/docs/_data/Help/Get-OBSTwoPassDropShadowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTwoPassDropShadowShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSVCRShader.json b/docs/_data/Help/Get-OBSVCRShader.json new file mode 100644 index 000000000..7649be26d --- /dev/null +++ b/docs/_data/Help/Get-OBSVCRShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVCRShader [[-VerticalShift] ] [[-Distort] ] [[-Vignet] ] [[-Stripe] ] [[-VerticalFactor] ] [[-VerticalHeight] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSVHSShader.json b/docs/_data/Help/Get-OBSVHSShader.json new file mode 100644 index 000000000..4527a7869 --- /dev/null +++ b/docs/_data/Help/Get-OBSVHSShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVHSShader [[-Range] ] [[-OffsetIntensity] ] [[-NoiseQuality] ] [[-NoiseIntensity] ] [[-ColorOffsetIntensity] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSVLCSource.json b/docs/_data/Help/Get-OBSVLCSource.json new file mode 100644 index 000000000..9a526c96c --- /dev/null +++ b/docs/_data/Help/Get-OBSVLCSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a VLC playlist source", + "Description": "Adds or sets VLC playlist sources to OBS. \nVLC must be installed for this to work.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSVLCSource -FilePath .\\*.mp3 # Creates a playlist of all MP3s in the current directory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSVersion.json b/docs/_data/Help/Get-OBSVersion.json new file mode 100644 index 000000000..8dc1e4c68 --- /dev/null +++ b/docs/_data/Help/Get-OBSVersion.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSVersion : GetVersion", + "Description": "Gets data about the current plugin and RPC version.\n\n\nGet-OBSVersion calls the OBS WebSocket with a request of type GetVersion.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getversion" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSVersion" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSVideoSettings.json b/docs/_data/Help/Get-OBSVideoSettings.json new file mode 100644 index 000000000..4bcd61a83 --- /dev/null +++ b/docs/_data/Help/Get-OBSVideoSettings.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSVideoSettings : GetVideoSettings", + "Description": "Gets the current video settings.\n\nNote: To get the true FPS value, divide the FPS numerator by the FPS denominator. Example: `60000/1001`\n\n\nGet-OBSVideoSettings calls the OBS WebSocket with a request of type GetVideoSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvideosettings" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSVideoSettings" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSVignettingShader.json b/docs/_data/Help/Get-OBSVignettingShader.json new file mode 100644 index 000000000..3ee3ee0f8 --- /dev/null +++ b/docs/_data/Help/Get-OBSVignettingShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVignettingShader [[-InnerRadius] ] [[-OuterRadius] ] [[-Opacity] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSVirtualCamStatus.json b/docs/_data/Help/Get-OBSVirtualCamStatus.json new file mode 100644 index 000000000..0591fdfa8 --- /dev/null +++ b/docs/_data/Help/Get-OBSVirtualCamStatus.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSVirtualCamStatus : GetVirtualCamStatus", + "Description": "Gets the status of the virtualcam output.\n\n\nGet-OBSVirtualCamStatus calls the OBS WebSocket with a request of type GetVirtualCamStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvirtualcamstatus" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSVirtualCamStatus" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSVoronoiPixelationShader.json b/docs/_data/Help/Get-OBSVoronoiPixelationShader.json new file mode 100644 index 000000000..adb637d96 --- /dev/null +++ b/docs/_data/Help/Get-OBSVoronoiPixelationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVoronoiPixelationShader [[-PixH] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Alternative] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSWaveformSource.json b/docs/_data/Help/Get-OBSWaveformSource.json new file mode 100644 index 000000000..54d4cdd82 --- /dev/null +++ b/docs/_data/Help/Get-OBSWaveformSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "OBS Waveform Source", + "Description": "Gets, Sets, or Adds a waveform source in OBS. \nWaveform sources require the [Waveform Plugin](https://obsproject.com/forum/resources/waveform.1423/)", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSWaveformSource -Name \"SpeakerWaveform\"" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSWindowCaptureSource.json b/docs/_data/Help/Get-OBSWindowCaptureSource.json new file mode 100644 index 000000000..eff834087 --- /dev/null +++ b/docs/_data/Help/Get-OBSWindowCaptureSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Adds or sets a window capture source", + "Description": "Adds or sets a windows capture source in OBS. This captures the contents of a window.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSWindowSource.json b/docs/_data/Help/Get-OBSWindowSource.json new file mode 100644 index 000000000..eff834087 --- /dev/null +++ b/docs/_data/Help/Get-OBSWindowSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Adds or sets a window capture source", + "Description": "Adds or sets a windows capture source in OBS. This captures the contents of a window.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSZigZagShader.json b/docs/_data/Help/Get-OBSZigZagShader.json new file mode 100644 index 000000000..877d9a7dd --- /dev/null +++ b/docs/_data/Help/Get-OBSZigZagShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZigZagShader [[-Radius] ] [[-Angle] ] [[-Period] ] [[-Amplitude] ] [[-CenterX] ] [[-CenterY] ] [[-Phase] ] [[-Animate] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSZoomBlurShader.json b/docs/_data/Help/Get-OBSZoomBlurShader.json new file mode 100644 index 000000000..5e3327904 --- /dev/null +++ b/docs/_data/Help/Get-OBSZoomBlurShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZoomBlurShader [[-Samples] ] [[-Magnitude] ] [[-SpeedPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSZoomShader.json b/docs/_data/Help/Get-OBSZoomShader.json new file mode 100644 index 000000000..471ef8b0d --- /dev/null +++ b/docs/_data/Help/Get-OBSZoomShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZoomShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Get-OBSZoomXYShader.json b/docs/_data/Help/Get-OBSZoomXYShader.json new file mode 100644 index 000000000..7bc63723c --- /dev/null +++ b/docs/_data/Help/Get-OBSZoomXYShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZoomXYShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-XPower] ] [[-YPower] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Hide-OBS.json b/docs/_data/Help/Hide-OBS.json new file mode 100644 index 000000000..11b7f78a0 --- /dev/null +++ b/docs/_data/Help/Hide-OBS.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Hide OBS", + "Description": "Hides items in OBS", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Hide-OBS -SourceName \"foo\"" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Import-OBSEffect.json b/docs/_data/Help/Import-OBSEffect.json new file mode 100644 index 000000000..f35651d00 --- /dev/null +++ b/docs/_data/Help/Import-OBSEffect.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Imports Effects", + "Description": "Imports obs-powershell effects", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Import-OBSEffect -Path (Get-Module obs-powershell)" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Open-OBSInputFiltersDialog.json b/docs/_data/Help/Open-OBSInputFiltersDialog.json new file mode 100644 index 000000000..5aefb71c1 --- /dev/null +++ b/docs/_data/Help/Open-OBSInputFiltersDialog.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSInputFiltersDialog : OpenInputFiltersDialog", + "Description": "Opens the filters dialog of an input.\n\n\nOpen-OBSInputFiltersDialog calls the OBS WebSocket with a request of type OpenInputFiltersDialog.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputfiltersdialog" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Open-OBSInputInteractDialog.json b/docs/_data/Help/Open-OBSInputInteractDialog.json new file mode 100644 index 000000000..7f7176f4b --- /dev/null +++ b/docs/_data/Help/Open-OBSInputInteractDialog.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSInputInteractDialog : OpenInputInteractDialog", + "Description": "Opens the interact dialog of an input.\n\n\nOpen-OBSInputInteractDialog calls the OBS WebSocket with a request of type OpenInputInteractDialog.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputinteractdialog" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Open-OBSInputPropertiesDialog.json b/docs/_data/Help/Open-OBSInputPropertiesDialog.json new file mode 100644 index 000000000..63667431c --- /dev/null +++ b/docs/_data/Help/Open-OBSInputPropertiesDialog.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSInputPropertiesDialog : OpenInputPropertiesDialog", + "Description": "Opens the properties dialog of an input.\n\n\nOpen-OBSInputPropertiesDialog calls the OBS WebSocket with a request of type OpenInputPropertiesDialog.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputpropertiesdialog" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Open-OBSSourceProjector.json b/docs/_data/Help/Open-OBSSourceProjector.json new file mode 100644 index 000000000..e36288136 --- /dev/null +++ b/docs/_data/Help/Open-OBSSourceProjector.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSSourceProjector : OpenSourceProjector", + "Description": "Opens a projector for a source.\n\nNote: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release.\n\n\nOpen-OBSSourceProjector calls the OBS WebSocket with a request of type OpenSourceProjector.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#opensourceprojector" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Open-OBSVideoMixProjector.json b/docs/_data/Help/Open-OBSVideoMixProjector.json new file mode 100644 index 000000000..e70e977db --- /dev/null +++ b/docs/_data/Help/Open-OBSVideoMixProjector.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSVideoMixProjector : OpenVideoMixProjector", + "Description": "Opens a projector for a specific output video mix.\n\nMix types:\n\n- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PREVIEW`\n- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PROGRAM`\n- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_MULTIVIEW`\n\nNote: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release.\n\n\nOpen-OBSVideoMixProjector calls the OBS WebSocket with a request of type OpenVideoMixProjector.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openvideomixprojector" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Receive-OBS.json b/docs/_data/Help/Receive-OBS.json new file mode 100644 index 000000000..f7c708e58 --- /dev/null +++ b/docs/_data/Help/Receive-OBS.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Receives data from OBS", + "Description": "Receives responses from the OBS WebSocket", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Remove-OBS.json b/docs/_data/Help/Remove-OBS.json new file mode 100644 index 000000000..2c61835d8 --- /dev/null +++ b/docs/_data/Help/Remove-OBS.json @@ -0,0 +1,47 @@ +{ + "Synopsis": "Remove OBS", + "Description": "Removes items from OBS", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Remove-OBS -SourceName \"foo\"" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Remove-OBS -SceneName \"bar\"" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Remove-OBSEffect.json b/docs/_data/Help/Remove-OBSEffect.json new file mode 100644 index 000000000..ee4d0fb1d --- /dev/null +++ b/docs/_data/Help/Remove-OBSEffect.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Removes OBS Effects", + "Description": "Removes effects currently loaded into OBS-PowerShell.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + "This removes effects from memory, but will not delete effect commands or remove effect scripts." + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Remove-OBSInput.json b/docs/_data/Help/Remove-OBSInput.json new file mode 100644 index 000000000..50e5dd762 --- /dev/null +++ b/docs/_data/Help/Remove-OBSInput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSInput : RemoveInput", + "Description": "Removes an existing input.\n\nNote: Will immediately remove all associated scene items.\n\n\nRemove-OBSInput calls the OBS WebSocket with a request of type RemoveInput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeinput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Remove-OBSProfile.json b/docs/_data/Help/Remove-OBSProfile.json new file mode 100644 index 000000000..67206fcbe --- /dev/null +++ b/docs/_data/Help/Remove-OBSProfile.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSProfile : RemoveProfile", + "Description": "Removes a profile. If the current profile is chosen, it will change to a different profile first.\n\n\nRemove-OBSProfile calls the OBS WebSocket with a request of type RemoveProfile.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeprofile" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Remove-OBSScene.json b/docs/_data/Help/Remove-OBSScene.json new file mode 100644 index 000000000..65abc9777 --- /dev/null +++ b/docs/_data/Help/Remove-OBSScene.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSScene : RemoveScene", + "Description": "Removes a scene from OBS.\n\n\nRemove-OBSScene calls the OBS WebSocket with a request of type RemoveScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removescene" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Remove-OBSSceneItem.json b/docs/_data/Help/Remove-OBSSceneItem.json new file mode 100644 index 000000000..9389206ea --- /dev/null +++ b/docs/_data/Help/Remove-OBSSceneItem.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSSceneItem : RemoveSceneItem", + "Description": "Removes a scene item from a scene.\n\nScenes only\n\n\nRemove-OBSSceneItem calls the OBS WebSocket with a request of type RemoveSceneItem.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesceneitem" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Remove-OBSSourceFilter.json b/docs/_data/Help/Remove-OBSSourceFilter.json new file mode 100644 index 000000000..616566669 --- /dev/null +++ b/docs/_data/Help/Remove-OBSSourceFilter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSSourceFilter : RemoveSourceFilter", + "Description": "Removes a filter from a source.\n\n\nRemove-OBSSourceFilter calls the OBS WebSocket with a request of type RemoveSourceFilter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesourcefilter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Resume-OBSRecord.json b/docs/_data/Help/Resume-OBSRecord.json new file mode 100644 index 000000000..69558d735 --- /dev/null +++ b/docs/_data/Help/Resume-OBSRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Resume-OBSRecord : ResumeRecord", + "Description": "Resumes the record output.\n\n\nResume-OBSRecord calls the OBS WebSocket with a request of type ResumeRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#resumerecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Resume-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Save-OBSReplayBuffer.json b/docs/_data/Help/Save-OBSReplayBuffer.json new file mode 100644 index 000000000..ab364b8f0 --- /dev/null +++ b/docs/_data/Help/Save-OBSReplayBuffer.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Save-OBSReplayBuffer : SaveReplayBuffer", + "Description": "Saves the contents of the replay buffer output.\n\n\nSave-OBSReplayBuffer calls the OBS WebSocket with a request of type SaveReplayBuffer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savereplaybuffer" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Save-OBSReplayBuffer" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Save-OBSSourceScreenshot.json b/docs/_data/Help/Save-OBSSourceScreenshot.json new file mode 100644 index 000000000..c5cdd47fd --- /dev/null +++ b/docs/_data/Help/Save-OBSSourceScreenshot.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Save-OBSSourceScreenshot : SaveSourceScreenshot", + "Description": "Saves a screenshot of a source to the filesystem.\n\nThe `imageWidth` and `imageHeight` parameters are treated as \"scale to inner\", meaning the smallest ratio will be used and the aspect ratio of the original resolution is kept.\nIf `imageWidth` and `imageHeight` are not specified, the compressed image will use the full resolution of the source.\n\n**Compatible with inputs and scenes.**\n\n\nSave-OBSSourceScreenshot calls the OBS WebSocket with a request of type SaveSourceScreenshot.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savesourcescreenshot" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBS.json b/docs/_data/Help/Send-OBS.json new file mode 100644 index 000000000..982c3f3d5 --- /dev/null +++ b/docs/_data/Help/Send-OBS.json @@ -0,0 +1,36 @@ +{ + "Synopsis": "Sends messages to the OBS websocket.", + "Description": "Sends one or more messages to the OBS websocket.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSCallVendorRequest.json b/docs/_data/Help/Send-OBSCallVendorRequest.json new file mode 100644 index 000000000..e3939a498 --- /dev/null +++ b/docs/_data/Help/Send-OBSCallVendorRequest.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSCallVendorRequest : CallVendorRequest", + "Description": "Call a request registered to a vendor.\n\nA vendor is a unique name registered by a third-party plugin or script, which allows for custom requests and events to be added to obs-websocket.\nIf a plugin or script implements vendor requests or events, documentation is expected to be provided with them.\n\n\nSend-OBSCallVendorRequest calls the OBS WebSocket with a request of type CallVendorRequest.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#callvendorrequest" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSCustomEvent.json b/docs/_data/Help/Send-OBSCustomEvent.json new file mode 100644 index 000000000..19b946e89 --- /dev/null +++ b/docs/_data/Help/Send-OBSCustomEvent.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSCustomEvent : BroadcastCustomEvent", + "Description": "Broadcasts a `CustomEvent` to all WebSocket clients. Receivers are clients which are identified and subscribed.\n\n\nSend-OBSCustomEvent calls the OBS WebSocket with a request of type BroadcastCustomEvent.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#broadcastcustomevent" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSOffsetMediaInputCursor.json b/docs/_data/Help/Send-OBSOffsetMediaInputCursor.json new file mode 100644 index 000000000..ad3ebe5ab --- /dev/null +++ b/docs/_data/Help/Send-OBSOffsetMediaInputCursor.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSOffsetMediaInputCursor : OffsetMediaInputCursor", + "Description": "Offsets the current cursor position of a media input by the specified value.\n\nThis request does not perform bounds checking of the cursor position.\n\n\nSend-OBSOffsetMediaInputCursor calls the OBS WebSocket with a request of type OffsetMediaInputCursor.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#offsetmediainputcursor" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSPauseRecord.json b/docs/_data/Help/Send-OBSPauseRecord.json new file mode 100644 index 000000000..491a063d4 --- /dev/null +++ b/docs/_data/Help/Send-OBSPauseRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Send-OBSPauseRecord : PauseRecord", + "Description": "Pauses the record output.\n\n\nSend-OBSPauseRecord calls the OBS WebSocket with a request of type PauseRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pauserecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Send-OBSPauseRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSPressInputPropertiesButton.json b/docs/_data/Help/Send-OBSPressInputPropertiesButton.json new file mode 100644 index 000000000..9083e5aea --- /dev/null +++ b/docs/_data/Help/Send-OBSPressInputPropertiesButton.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSPressInputPropertiesButton : PressInputPropertiesButton", + "Description": "Presses a button in the properties of an input.\n\nSome known `propertyName` values are:\n\n- `refreshnocache` - Browser source reload button\n\nNote: Use this in cases where there is a button in the properties of an input that cannot be accessed in any other way. For example, browser sources, where there is a refresh button.\n\n\nSend-OBSPressInputPropertiesButton calls the OBS WebSocket with a request of type PressInputPropertiesButton.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pressinputpropertiesbutton" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSSleep.json b/docs/_data/Help/Send-OBSSleep.json new file mode 100644 index 000000000..2d5957186 --- /dev/null +++ b/docs/_data/Help/Send-OBSSleep.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSSleep : Sleep", + "Description": "Sleeps for a time duration or number of frames. Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.\n\n\nSend-OBSSleep calls the OBS WebSocket with a request of type Sleep.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sleep" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSStreamCaption.json b/docs/_data/Help/Send-OBSStreamCaption.json new file mode 100644 index 000000000..9553cca0d --- /dev/null +++ b/docs/_data/Help/Send-OBSStreamCaption.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSStreamCaption : SendStreamCaption", + "Description": "Sends CEA-608 caption text over the stream output.\n\n\nSend-OBSStreamCaption calls the OBS WebSocket with a request of type SendStreamCaption.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sendstreamcaption" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSTriggerHotkeyByKeySequence.json b/docs/_data/Help/Send-OBSTriggerHotkeyByKeySequence.json new file mode 100644 index 000000000..5069579d8 --- /dev/null +++ b/docs/_data/Help/Send-OBSTriggerHotkeyByKeySequence.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSTriggerHotkeyByKeySequence : TriggerHotkeyByKeySequence", + "Description": "Triggers a hotkey using a sequence of keys.\n\nNote: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests.\n\n\nSend-OBSTriggerHotkeyByKeySequence calls the OBS WebSocket with a request of type TriggerHotkeyByKeySequence.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybykeysequence" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSTriggerHotkeyByName.json b/docs/_data/Help/Send-OBSTriggerHotkeyByName.json new file mode 100644 index 000000000..f3749977f --- /dev/null +++ b/docs/_data/Help/Send-OBSTriggerHotkeyByName.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSTriggerHotkeyByName : TriggerHotkeyByName", + "Description": "Triggers a hotkey using its name. See `GetHotkeyList`.\n\nNote: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests.\n\n\nSend-OBSTriggerHotkeyByName calls the OBS WebSocket with a request of type TriggerHotkeyByName.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybyname" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSTriggerMediaInputAction.json b/docs/_data/Help/Send-OBSTriggerMediaInputAction.json new file mode 100644 index 000000000..eb40f4bfb --- /dev/null +++ b/docs/_data/Help/Send-OBSTriggerMediaInputAction.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSTriggerMediaInputAction : TriggerMediaInputAction", + "Description": "Triggers an action on a media input.\n\n\nSend-OBSTriggerMediaInputAction calls the OBS WebSocket with a request of type TriggerMediaInputAction.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggermediainputaction" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Send-OBSTriggerStudioModeTransition.json b/docs/_data/Help/Send-OBSTriggerStudioModeTransition.json new file mode 100644 index 000000000..69a7c95f7 --- /dev/null +++ b/docs/_data/Help/Send-OBSTriggerStudioModeTransition.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Send-OBSTriggerStudioModeTransition : TriggerStudioModeTransition", + "Description": "Triggers the current scene transition. Same functionality as the `Transition` button in studio mode.\n\n\nSend-OBSTriggerStudioModeTransition calls the OBS WebSocket with a request of type TriggerStudioModeTransition.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerstudiomodetransition" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Send-OBSTriggerStudioModeTransition" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBS3BandEqualizerFilter.json b/docs/_data/Help/Set-OBS3BandEqualizerFilter.json new file mode 100644 index 000000000..29c3a8a85 --- /dev/null +++ b/docs/_data/Help/Set-OBS3BandEqualizerFilter.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Sets a Equalizer filter.", + "Description": "Adds or Changes a 3-band Equalizer Filter on an OBS Input.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBS3DFilter.json b/docs/_data/Help/Set-OBS3DFilter.json new file mode 100644 index 000000000..c9f2f15a3 --- /dev/null +++ b/docs/_data/Help/Set-OBS3DFilter.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Sets an OBS 3D Filter.", + "Description": "Adds or Changes a 3D Filter on an OBS Input. \nThis requires the [3D Effect](https://github.com/exeldro/obs-3d-effect).", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBS3dSwapTransitionShader.json b/docs/_data/Help/Set-OBS3dSwapTransitionShader.json new file mode 100644 index 000000000..9304b6700 --- /dev/null +++ b/docs/_data/Help/Set-OBS3dSwapTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBS3dSwapTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-Reflection] ] [[-Perspective] ] [[-Depth] ] [[-BackgroundColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSAddShader.json b/docs/_data/Help/Set-OBSAddShader.json new file mode 100644 index 000000000..65dcd33b8 --- /dev/null +++ b/docs/_data/Help/Set-OBSAddShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAddShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSAlphaBorderShader.json b/docs/_data/Help/Set-OBSAlphaBorderShader.json new file mode 100644 index 000000000..4b5d0cbfc --- /dev/null +++ b/docs/_data/Help/Set-OBSAlphaBorderShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAlphaBorderShader [[-BorderColor] ] [[-BorderThickness] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSAlphaGamingBentCameraShader.json b/docs/_data/Help/Set-OBSAlphaGamingBentCameraShader.json new file mode 100644 index 000000000..e40b97e64 --- /dev/null +++ b/docs/_data/Help/Set-OBSAlphaGamingBentCameraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSAnimatedPathShader.json b/docs/_data/Help/Set-OBSAnimatedPathShader.json new file mode 100644 index 000000000..c3060fe1d --- /dev/null +++ b/docs/_data/Help/Set-OBSAnimatedPathShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAnimatedPathShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-SpeedPercent] ] [[-PathMap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSAnimatedTextureShader.json b/docs/_data/Help/Set-OBSAnimatedTextureShader.json new file mode 100644 index 000000000..31ace01a0 --- /dev/null +++ b/docs/_data/Help/Set-OBSAnimatedTextureShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAnimatedTextureShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-AnimationImage] ] [[-ColorizationImage] ] [[-PolarAngle] ] [[-PolarHeight] ] [[-SpeedHorizontalPercent] ] [[-SpeedVerticalPercent] ] [[-TintSpeedHorizontalPercent] ] [[-TintSpeedVerticalPercent] ] [[-Alpha] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Reverse] [-Bounce] [-CenterAnimation] [-PolarAnimation] [-UseAnimationImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSAsciiShader.json b/docs/_data/Help/Set-OBSAsciiShader.json new file mode 100644 index 000000000..f55fcc6aa --- /dev/null +++ b/docs/_data/Help/Set-OBSAsciiShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAsciiShader [[-Scale] ] [[-BaseColor] ] [[-CharacterSet] ] [[-Note] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Monochrome] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSAspectRatioShader.json b/docs/_data/Help/Set-OBSAspectRatioShader.json new file mode 100644 index 000000000..2affb92f9 --- /dev/null +++ b/docs/_data/Help/Set-OBSAspectRatioShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSAspectRatioShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSAudioOutputSource.json b/docs/_data/Help/Set-OBSAudioOutputSource.json new file mode 100644 index 000000000..092206748 --- /dev/null +++ b/docs/_data/Help/Set-OBSAudioOutputSource.json @@ -0,0 +1,44 @@ +{ + "Synopsis": "Adds or sets an audio output source", + "Description": "Adds or sets an audio output source in OBS. This captures the audio that is being sent to an output device.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + "This command currently only supports capturing default audio on Windows. \nTo add support for other operating systems, file an issue or open a pull request." + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSAudioOutputSource" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Set-OBSAudioOutputSource -AudioDevice Speakers" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSBackgroundRemovalShader.json b/docs/_data/Help/Set-OBSBackgroundRemovalShader.json new file mode 100644 index 000000000..2d460871b --- /dev/null +++ b/docs/_data/Help/Set-OBSBackgroundRemovalShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBackgroundRemovalShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-Target] ] [[-Color] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-Convert709to601] [-Convert601to709] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSBlendOpacityShader.json b/docs/_data/Help/Set-OBSBlendOpacityShader.json new file mode 100644 index 000000000..a6d378c06 --- /dev/null +++ b/docs/_data/Help/Set-OBSBlendOpacityShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBlendOpacityShader [[-RotationOffset] ] [[-OpacityStartPercent] ] [[-OpacityEndPercent] ] [[-Spread] ] [[-Speed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSBlinkShader.json b/docs/_data/Help/Set-OBSBlinkShader.json new file mode 100644 index 000000000..376fc91b5 --- /dev/null +++ b/docs/_data/Help/Set-OBSBlinkShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBlinkShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSBloomShader.json b/docs/_data/Help/Set-OBSBloomShader.json new file mode 100644 index 000000000..b0ed430cd --- /dev/null +++ b/docs/_data/Help/Set-OBSBloomShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBloomShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSBorderShader.json b/docs/_data/Help/Set-OBSBorderShader.json new file mode 100644 index 000000000..e916649e4 --- /dev/null +++ b/docs/_data/Help/Set-OBSBorderShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBorderShader [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSBoxBlurShader.json b/docs/_data/Help/Set-OBSBoxBlurShader.json new file mode 100644 index 000000000..b7c6450ad --- /dev/null +++ b/docs/_data/Help/Set-OBSBoxBlurShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBoxBlurShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSBrowserSource.json b/docs/_data/Help/Set-OBSBrowserSource.json new file mode 100644 index 000000000..3f7240c75 --- /dev/null +++ b/docs/_data/Help/Set-OBSBrowserSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a browser source", + "Description": "Adds or changes a browser source in OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSBrowserSource -Uri https://pssvg.start-automating.com/Examples/Stars.svg" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSBulgePinchShader.json b/docs/_data/Help/Set-OBSBulgePinchShader.json new file mode 100644 index 000000000..be8927cc5 --- /dev/null +++ b/docs/_data/Help/Set-OBSBulgePinchShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBulgePinchShader [[-Radius] ] [[-Magnitude] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSBurnShader.json b/docs/_data/Help/Set-OBSBurnShader.json new file mode 100644 index 000000000..5ba3887fa --- /dev/null +++ b/docs/_data/Help/Set-OBSBurnShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSBurnShader [[-BurnGradient] ] [[-Speed] ] [[-GradientAdjust] ] [[-DissolveValue] ] [[-SmokeHorizonalSpeed] ] [[-SmokeVerticalSpeed] ] [[-Iterations] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-ApplySmoke] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCartoonShader.json b/docs/_data/Help/Set-OBSCartoonShader.json new file mode 100644 index 000000000..88074a631 --- /dev/null +++ b/docs/_data/Help/Set-OBSCartoonShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCartoonShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Notes] ] [[-HueSteps] ] [[-ValueSteps] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCellShadedShader.json b/docs/_data/Help/Set-OBSCellShadedShader.json new file mode 100644 index 000000000..f58cef3f2 --- /dev/null +++ b/docs/_data/Help/Set-OBSCellShadedShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCellShadedShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSChromaUVDistortionShader.json b/docs/_data/Help/Set-OBSChromaUVDistortionShader.json new file mode 100644 index 000000000..b44fc1c65 --- /dev/null +++ b/docs/_data/Help/Set-OBSChromaUVDistortionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSChromaUVDistortionShader [[-Distortion] ] [[-Amplitude] ] [[-Chroma] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSChromaticAberrationShader.json b/docs/_data/Help/Set-OBSChromaticAberrationShader.json new file mode 100644 index 000000000..6cc5a22fa --- /dev/null +++ b/docs/_data/Help/Set-OBSChromaticAberrationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSChromaticAberrationShader [[-Power] ] [[-Gamma] ] [[-NumIter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DistortRadial] [-DistortBarrel] [-OffsetSpectrumYcgco] [-OffsetSpectrumYuv] [-UseRandom] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCircleMaskFilterShader.json b/docs/_data/Help/Set-OBSCircleMaskFilterShader.json new file mode 100644 index 000000000..fb16ac976 --- /dev/null +++ b/docs/_data/Help/Set-OBSCircleMaskFilterShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCircleMaskFilterShader [[-Radius] ] [[-CircleOffsetX] ] [[-CircleOffsetY] ] [[-SourceOffsetX] ] [[-SourceOffsetY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Antialiasing] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSClockAnalogShader.json b/docs/_data/Help/Set-OBSClockAnalogShader.json new file mode 100644 index 000000000..ec1db7dfd --- /dev/null +++ b/docs/_data/Help/Set-OBSClockAnalogShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSClockAnalogShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-HourHandleColor] ] [[-MinuteHandleColor] ] [[-SecondHandleColor] ] [[-OutlineColor] ] [[-TopLineColor] ] [[-BackgroundColor] ] [[-TimeOffsetHours] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSClockDigitalLedShader.json b/docs/_data/Help/Set-OBSClockDigitalLedShader.json new file mode 100644 index 000000000..419b04585 --- /dev/null +++ b/docs/_data/Help/Set-OBSClockDigitalLedShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSClockDigitalLedShader [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-LedColor] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowMatrix] [-ShowOff] [-Ampm] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSClockDigitalNixieShader.json b/docs/_data/Help/Set-OBSClockDigitalNixieShader.json new file mode 100644 index 000000000..21739b95a --- /dev/null +++ b/docs/_data/Help/Set-OBSClockDigitalNixieShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] ] [[-CurrentTimeSec] ] [[-CurrentTimeMin] ] [[-CurrentTimeHour] ] [[-TimeMode] ] [[-OffsetHours] ] [[-OffsetSeconds] ] [[-Corecolor] ] [[-Halocolor] ] [[-Flarecolor] ] [[-Anodecolor] ] [[-Anodehighlightscolor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSColorCorrectionFilter.json b/docs/_data/Help/Set-OBSColorCorrectionFilter.json new file mode 100644 index 000000000..8acc546da --- /dev/null +++ b/docs/_data/Help/Set-OBSColorCorrectionFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a color filter", + "Description": "Adds or Changes a Color Correction Filter on an OBS Input. \nThis allows you to: \n* Change Opacity on any source \n* Correct gamma \n* Spin the hue \n* Saturate or Desaturate an image \n* Change the contrast \n* Brighten the image \n* Multiply pixels by a color \n* Add a color to all pixels", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri .\\Assets\\obs-powershell-animated-icon.svg | \n Set-OBSColorFilter -Opacity .5" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSColorDepthShader.json b/docs/_data/Help/Set-OBSColorDepthShader.json new file mode 100644 index 000000000..f27fcb23a --- /dev/null +++ b/docs/_data/Help/Set-OBSColorDepthShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSColorDepthShader [[-ColorDepth] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSColorFilter.json b/docs/_data/Help/Set-OBSColorFilter.json new file mode 100644 index 000000000..8acc546da --- /dev/null +++ b/docs/_data/Help/Set-OBSColorFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a color filter", + "Description": "Adds or Changes a Color Correction Filter on an OBS Input. \nThis allows you to: \n* Change Opacity on any source \n* Correct gamma \n* Spin the hue \n* Saturate or Desaturate an image \n* Change the contrast \n* Brighten the image \n* Multiply pixels by a color \n* Add a color to all pixels", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri .\\Assets\\obs-powershell-animated-icon.svg | \n Set-OBSColorFilter -Opacity .5" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSColorGradeFilterShader.json b/docs/_data/Help/Set-OBSColorGradeFilterShader.json new file mode 100644 index 000000000..b06631ebe --- /dev/null +++ b/docs/_data/Help/Set-OBSColorGradeFilterShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSColorGradeFilterShader [[-Notes] ] [[-Lut] ] [[-LutAmountPercent] ] [[-LutScalePercent] ] [[-LutOffsetPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSColorSource.json b/docs/_data/Help/Set-OBSColorSource.json new file mode 100644 index 000000000..63681dd66 --- /dev/null +++ b/docs/_data/Help/Set-OBSColorSource.json @@ -0,0 +1,36 @@ +{ + "Synopsis": "Adds a color source", + "Description": "Adds a color source to OBS. This displays a single 32-bit color (RGBA).", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCornerPinShader.json b/docs/_data/Help/Set-OBSCornerPinShader.json new file mode 100644 index 000000000..b86acea1f --- /dev/null +++ b/docs/_data/Help/Set-OBSCornerPinShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCornerPinShader [[-TopLeftX] ] [[-TopLeftY] ] [[-TopRightX] ] [[-TopRightY] ] [[-BottomLeftX] ] [[-BottomLeftY] ] [[-BottomRightX] ] [[-BottomRightY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AntialiasEdges] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCrtCurvatureShader.json b/docs/_data/Help/Set-OBSCrtCurvatureShader.json new file mode 100644 index 000000000..f22cd33ef --- /dev/null +++ b/docs/_data/Help/Set-OBSCrtCurvatureShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCrtCurvatureShader [[-Strength] ] [[-Border] ] [[-Feathering] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCurrentPreviewScene.json b/docs/_data/Help/Set-OBSCurrentPreviewScene.json new file mode 100644 index 000000000..eb2470d69 --- /dev/null +++ b/docs/_data/Help/Set-OBSCurrentPreviewScene.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentPreviewScene : SetCurrentPreviewScene", + "Description": "Sets the current preview scene.\n\nOnly available when studio mode is enabled.\n\n\nSet-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type SetCurrentPreviewScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentpreviewscene" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCurrentProfile.json b/docs/_data/Help/Set-OBSCurrentProfile.json new file mode 100644 index 000000000..31e8a9800 --- /dev/null +++ b/docs/_data/Help/Set-OBSCurrentProfile.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentProfile : SetCurrentProfile", + "Description": "Switches to a profile.\n\n\nSet-OBSCurrentProfile calls the OBS WebSocket with a request of type SetCurrentProfile.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprofile" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCurrentProgramScene.json b/docs/_data/Help/Set-OBSCurrentProgramScene.json new file mode 100644 index 000000000..dfd7b5e17 --- /dev/null +++ b/docs/_data/Help/Set-OBSCurrentProgramScene.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentProgramScene : SetCurrentProgramScene", + "Description": "Sets the current program scene.\n\n\nSet-OBSCurrentProgramScene calls the OBS WebSocket with a request of type SetCurrentProgramScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprogramscene" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCurrentSceneCollection.json b/docs/_data/Help/Set-OBSCurrentSceneCollection.json new file mode 100644 index 000000000..393ea8d12 --- /dev/null +++ b/docs/_data/Help/Set-OBSCurrentSceneCollection.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentSceneCollection : SetCurrentSceneCollection", + "Description": "Switches to a scene collection.\n\nNote: This will block until the collection has finished changing.\n\n\nSet-OBSCurrentSceneCollection calls the OBS WebSocket with a request of type SetCurrentSceneCollection.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenecollection" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCurrentSceneTransition.json b/docs/_data/Help/Set-OBSCurrentSceneTransition.json new file mode 100644 index 000000000..a51a09284 --- /dev/null +++ b/docs/_data/Help/Set-OBSCurrentSceneTransition.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentSceneTransition : SetCurrentSceneTransition", + "Description": "Sets the current scene transition.\n\nSmall note: While the namespace of scene transitions is generally unique, that uniqueness is not a guarantee as it is with other resources like inputs.\n\n\nSet-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type SetCurrentSceneTransition.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransition" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCurrentSceneTransitionDuration.json b/docs/_data/Help/Set-OBSCurrentSceneTransitionDuration.json new file mode 100644 index 000000000..8fcf5a67d --- /dev/null +++ b/docs/_data/Help/Set-OBSCurrentSceneTransitionDuration.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentSceneTransitionDuration : SetCurrentSceneTransitionDuration", + "Description": "Sets the duration of the current scene transition, if it is not fixed.\n\n\nSet-OBSCurrentSceneTransitionDuration calls the OBS WebSocket with a request of type SetCurrentSceneTransitionDuration.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionduration" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCurrentSceneTransitionSettings.json b/docs/_data/Help/Set-OBSCurrentSceneTransitionSettings.json new file mode 100644 index 000000000..91b05df62 --- /dev/null +++ b/docs/_data/Help/Set-OBSCurrentSceneTransitionSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentSceneTransitionSettings : SetCurrentSceneTransitionSettings", + "Description": "Sets the settings of the current scene transition.\n\n\nSet-OBSCurrentSceneTransitionSettings calls the OBS WebSocket with a request of type SetCurrentSceneTransitionSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCurveShader.json b/docs/_data/Help/Set-OBSCurveShader.json new file mode 100644 index 000000000..bdde1131c --- /dev/null +++ b/docs/_data/Help/Set-OBSCurveShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCurveShader [[-Strength] ] [[-Scale] ] [[-CurveColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCutRectPerCornerShader.json b/docs/_data/Help/Set-OBSCutRectPerCornerShader.json new file mode 100644 index 000000000..1de0ae52d --- /dev/null +++ b/docs/_data/Help/Set-OBSCutRectPerCornerShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCutRectPerCornerShader [[-CornerTl] ] [[-CornerTr] ] [[-CornerBr] ] [[-CornerBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSCylinderShader.json b/docs/_data/Help/Set-OBSCylinderShader.json new file mode 100644 index 000000000..5774b470e --- /dev/null +++ b/docs/_data/Help/Set-OBSCylinderShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSCylinderShader [[-CylinderFactor] ] [[-BackgroundCut] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDarkenShader.json b/docs/_data/Help/Set-OBSDarkenShader.json new file mode 100644 index 000000000..9f2837528 --- /dev/null +++ b/docs/_data/Help/Set-OBSDarkenShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDarkenShader [[-OpacityPercentage] ] [[-FillPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDeadPixelFixerShader.json b/docs/_data/Help/Set-OBSDeadPixelFixerShader.json new file mode 100644 index 000000000..5e80f1339 --- /dev/null +++ b/docs/_data/Help/Set-OBSDeadPixelFixerShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDeadPixelFixerShader [[-DeadPixelX] ] [[-DeadPixelY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDensitySatHueShader.json b/docs/_data/Help/Set-OBSDensitySatHueShader.json new file mode 100644 index 000000000..91dc11503 --- /dev/null +++ b/docs/_data/Help/Set-OBSDensitySatHueShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDensitySatHueShader [[-Notes] ] [[-DensityR] ] [[-SaturationR] ] [[-HueShiftR] ] [[-DensityY] ] [[-SaturationY] ] [[-HueShiftY] ] [[-DensityG] ] [[-SaturationG] ] [[-HueShiftG] ] [[-DensityC] ] [[-SaturationC] ] [[-HueShiftC] ] [[-DensityB] ] [[-SaturationB] ] [[-HueShiftB] ] [[-DensityM] ] [[-SaturationM] ] [[-HueShiftM] ] [[-GlobalDensity] ] [[-GlobalSaturation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDiffuseTransitionShader.json b/docs/_data/Help/Set-OBSDiffuseTransitionShader.json new file mode 100644 index 000000000..60618b4a7 --- /dev/null +++ b/docs/_data/Help/Set-OBSDiffuseTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDiffuseTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-NumSamples] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDigitalRainShader.json b/docs/_data/Help/Set-OBSDigitalRainShader.json new file mode 100644 index 000000000..92e7f0912 --- /dev/null +++ b/docs/_data/Help/Set-OBSDigitalRainShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDigitalRainShader [[-Font] ] [[-Noise] ] [[-BaseColor] ] [[-RainSpeed] ] [[-CharSpeed] ] [[-GlowContrast] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDisplaySource.json b/docs/_data/Help/Set-OBSDisplaySource.json new file mode 100644 index 000000000..e4c134f1a --- /dev/null +++ b/docs/_data/Help/Set-OBSDisplaySource.json @@ -0,0 +1,44 @@ +{ + "Synopsis": "Adds a display source", + "Description": "Adds a display source to OBS. This captures the contents of the display.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSDisplaySource # Adds a display source of the primary monitor" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Add-OBSDisplaySource -Display 2 # Adds a display source of the second monitor" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDivideRotateShader.json b/docs/_data/Help/Set-OBSDivideRotateShader.json new file mode 100644 index 000000000..41662a5db --- /dev/null +++ b/docs/_data/Help/Set-OBSDivideRotateShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDivideRotateShader [[-IChannel0] ] [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDoodleShader.json b/docs/_data/Help/Set-OBSDoodleShader.json new file mode 100644 index 000000000..41105c78e --- /dev/null +++ b/docs/_data/Help/Set-OBSDoodleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDoodleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-DoodleScalePercent] ] [[-SnapPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDrawingsShader.json b/docs/_data/Help/Set-OBSDrawingsShader.json new file mode 100644 index 000000000..9f29446bf --- /dev/null +++ b/docs/_data/Help/Set-OBSDrawingsShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDrawingsShader [[-AngleNum] ] [[-SampNum] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDropShadowShader.json b/docs/_data/Help/Set-OBSDropShadowShader.json new file mode 100644 index 000000000..8c563d2a7 --- /dev/null +++ b/docs/_data/Help/Set-OBSDropShadowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-Notes] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDrunkShader.json b/docs/_data/Help/Set-OBSDrunkShader.json new file mode 100644 index 000000000..b5d121d86 --- /dev/null +++ b/docs/_data/Help/Set-OBSDrunkShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDrunkShader [[-ColorMatrix] ] [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeedPercent] ] [[-GlowColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSDynamicMaskShader.json b/docs/_data/Help/Set-OBSDynamicMaskShader.json new file mode 100644 index 000000000..753b04007 --- /dev/null +++ b/docs/_data/Help/Set-OBSDynamicMaskShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSDynamicMaskShader [[-InputSource] ] [[-RedBaseValue] ] [[-RedRedInputValue] ] [[-RedGreenInputValue] ] [[-RedBlueInputValue] ] [[-RedAlphaInputValue] ] [[-RedMultiplier] ] [[-GreenBaseValue] ] [[-GreenRedInputValue] ] [[-GreenGreenInputValue] ] [[-GreenBlueInputValue] ] [[-GreenAlphaInputValue] ] [[-GreenMultiplier] ] [[-BlueBaseValue] ] [[-BlueRedInputValue] ] [[-BlueGreenInputValue] ] [[-BlueBlueInputValue] ] [[-BlueAlphaInputValue] ] [[-BlueMultiplier] ] [[-AlphaBaseValue] ] [[-AlphaRedInputValue] ] [[-AlphaGreenInputValue] ] [[-AlphaBlueInputValue] ] [[-AlphaAlphaInputValue] ] [[-AlphaMultiplier] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSEdgeDetectionShader.json b/docs/_data/Help/Set-OBSEdgeDetectionShader.json new file mode 100644 index 000000000..d364ada5e --- /dev/null +++ b/docs/_data/Help/Set-OBSEdgeDetectionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEdgeDetectionShader [[-Sensitivity] ] [[-EdgeColor] ] [[-NonEdgeColor] ] [[-AlphaLevel] ] [[-RandF] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertEdge] [-EdgeMultiply] [-NonEdgeMultiply] [-AlphaChannel] [-AlphaInvert] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSEmbersShader.json b/docs/_data/Help/Set-OBSEmbersShader.json new file mode 100644 index 000000000..c25091fba --- /dev/null +++ b/docs/_data/Help/Set-OBSEmbersShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEmbersShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-AnimationSpeed] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-MovementSpeedPercent] ] [[-LayersCount] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSEmbossColorShader.json b/docs/_data/Help/Set-OBSEmbossColorShader.json new file mode 100644 index 000000000..a9e344e0c --- /dev/null +++ b/docs/_data/Help/Set-OBSEmbossColorShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEmbossColorShader [[-AngleSteps] ] [[-RadiusSteps] ] [[-AmpFactor] ] [[-UpDownPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSEmbossShader.json b/docs/_data/Help/Set-OBSEmbossShader.json new file mode 100644 index 000000000..026c5ce18 --- /dev/null +++ b/docs/_data/Help/Set-OBSEmbossShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSEmbossShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-UseColor] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSEqualizerFilter.json b/docs/_data/Help/Set-OBSEqualizerFilter.json new file mode 100644 index 000000000..29c3a8a85 --- /dev/null +++ b/docs/_data/Help/Set-OBSEqualizerFilter.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Sets a Equalizer filter.", + "Description": "Adds or Changes a 3-band Equalizer Filter on an OBS Input.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSExeldroBentCameraShader.json b/docs/_data/Help/Set-OBSExeldroBentCameraShader.json new file mode 100644 index 000000000..97ae580e0 --- /dev/null +++ b/docs/_data/Help/Set-OBSExeldroBentCameraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSExeldroBentCameraShader [[-LeftSideWidth] ] [[-LeftSideSize] ] [[-LeftSideShadow] ] [[-LeftFlipWidth] ] [[-LeftFlipShadow] ] [[-RightSideWidth] ] [[-RightSideSize] ] [[-RightSideShadow] ] [[-RightFlipWidth] ] [[-RightFlipShadow] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFFMpegSource.json b/docs/_data/Help/Set-OBSFFMpegSource.json new file mode 100644 index 000000000..441822c93 --- /dev/null +++ b/docs/_data/Help/Set-OBSFFMpegSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a media source", + "Description": "Adds a media source to OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSMediaSource -FilePath My.mp4" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFadeTransitionShader.json b/docs/_data/Help/Set-OBSFadeTransitionShader.json new file mode 100644 index 000000000..bc051a0d4 --- /dev/null +++ b/docs/_data/Help/Set-OBSFadeTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFadeTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFillColorGradientShader.json b/docs/_data/Help/Set-OBSFillColorGradientShader.json new file mode 100644 index 000000000..bf65f0cd9 --- /dev/null +++ b/docs/_data/Help/Set-OBSFillColorGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorGradientShader [[-Fill] ] [[-GradientWidth] ] [[-GradientOffset] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFillColorLinearShader.json b/docs/_data/Help/Set-OBSFillColorLinearShader.json new file mode 100644 index 000000000..6da086b3c --- /dev/null +++ b/docs/_data/Help/Set-OBSFillColorLinearShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorLinearShader [[-Fill] ] [[-FillDirection] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFillColorRadialDegreesShader.json b/docs/_data/Help/Set-OBSFillColorRadialDegreesShader.json new file mode 100644 index 000000000..7ad1a1b70 --- /dev/null +++ b/docs/_data/Help/Set-OBSFillColorRadialDegreesShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorRadialDegreesShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFillColorRadialPercentageShader.json b/docs/_data/Help/Set-OBSFillColorRadialPercentageShader.json new file mode 100644 index 000000000..1a86c0783 --- /dev/null +++ b/docs/_data/Help/Set-OBSFillColorRadialPercentageShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFillColorRadialPercentageShader [[-FillDirection] ] [[-Fill] ] [[-StartAngle] ] [[-OffsetX] ] [[-OffsetY] ] [[-FillColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFilterTemplateShader.json b/docs/_data/Help/Set-OBSFilterTemplateShader.json new file mode 100644 index 000000000..5c2eba345 --- /dev/null +++ b/docs/_data/Help/Set-OBSFilterTemplateShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFilterTemplateShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFire3Shader.json b/docs/_data/Help/Set-OBSFire3Shader.json new file mode 100644 index 000000000..e3602effa --- /dev/null +++ b/docs/_data/Help/Set-OBSFire3Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFire3Shader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-MovementDirectionHorizontal] ] [[-MovementDirectionVertical] ] [[-AlphaPercentage] ] [[-Speed] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-FlameSize] ] [[-SparkGridHeight] ] [[-FlameModifier] ] [[-FlameTongueSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-FullWidth] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFireShader.json b/docs/_data/Help/Set-OBSFireShader.json new file mode 100644 index 000000000..af997ea1f --- /dev/null +++ b/docs/_data/Help/Set-OBSFireShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFireShader [[-AlphaPercentage] ] [[-Speed] ] [[-FlameSize] ] [[-FireType] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFireworks2Shader.json b/docs/_data/Help/Set-OBSFireworks2Shader.json new file mode 100644 index 000000000..5f52a7e2b --- /dev/null +++ b/docs/_data/Help/Set-OBSFireworks2Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFireworks2Shader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFireworksShader.json b/docs/_data/Help/Set-OBSFireworksShader.json new file mode 100644 index 000000000..306183c67 --- /dev/null +++ b/docs/_data/Help/Set-OBSFireworksShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFireworksShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowFlash] [-ShowStars] [-UseTransparancy] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFisheyeShader.json b/docs/_data/Help/Set-OBSFisheyeShader.json new file mode 100644 index 000000000..bdcb9d2f4 --- /dev/null +++ b/docs/_data/Help/Set-OBSFisheyeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFisheyeShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFisheyeXyShader.json b/docs/_data/Help/Set-OBSFisheyeXyShader.json new file mode 100644 index 000000000..a4c4c84cb --- /dev/null +++ b/docs/_data/Help/Set-OBSFisheyeXyShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFisheyeXyShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-PowerX] ] [[-PowerY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFlipShader.json b/docs/_data/Help/Set-OBSFlipShader.json new file mode 100644 index 000000000..7f6128fd1 --- /dev/null +++ b/docs/_data/Help/Set-OBSFlipShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFlipShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSFrostedGlassShader.json b/docs/_data/Help/Set-OBSFrostedGlassShader.json new file mode 100644 index 000000000..096325363 --- /dev/null +++ b/docs/_data/Help/Set-OBSFrostedGlassShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSFrostedGlassShader [[-AlphaPercent] ] [[-Amount] ] [[-Scale] ] [[-BorderOffset] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGainFilter.json b/docs/_data/Help/Set-OBSGainFilter.json new file mode 100644 index 000000000..f9a5418fc --- /dev/null +++ b/docs/_data/Help/Set-OBSGainFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a Gain filter.", + "Description": "Adds or Changes a Gain Filter on an OBS Input. \nThis allows you to make the audio louder or softer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSGainFilter -Gain 1.1 # Gains Audio by 1.1 decibels" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGammaCorrectionShader.json b/docs/_data/Help/Set-OBSGammaCorrectionShader.json new file mode 100644 index 000000000..d4c899951 --- /dev/null +++ b/docs/_data/Help/Set-OBSGammaCorrectionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGammaCorrectionShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGaussianBlurAdvancedShader.json b/docs/_data/Help/Set-OBSGaussianBlurAdvancedShader.json new file mode 100644 index 000000000..19d234348 --- /dev/null +++ b/docs/_data/Help/Set-OBSGaussianBlurAdvancedShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianBlurAdvancedShader [[-Directions] ] [[-Quality] ] [[-Size] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGaussianBlurShader.json b/docs/_data/Help/Set-OBSGaussianBlurShader.json new file mode 100644 index 000000000..9630c3f94 --- /dev/null +++ b/docs/_data/Help/Set-OBSGaussianBlurShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianBlurShader [[-ViewProj] ] [[-Image] ] [[-ImageSize] ] [[-ImageTexel] ] [[-URadius] ] [[-UDiameter] ] [[-UTexelDelta] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-Kernel] ] [[-KernelTexel] ] [[-PixelSize] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGaussianBlurSimpleShader.json b/docs/_data/Help/Set-OBSGaussianBlurSimpleShader.json new file mode 100644 index 000000000..da9109be2 --- /dev/null +++ b/docs/_data/Help/Set-OBSGaussianBlurSimpleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianBlurSimpleShader [[-Strength] ] [[-MaskLeft] ] [[-MaskRight] ] [[-MaskTop] ] [[-MaskBottom] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGaussianExampleShader.json b/docs/_data/Help/Set-OBSGaussianExampleShader.json new file mode 100644 index 000000000..58383d56d --- /dev/null +++ b/docs/_data/Help/Set-OBSGaussianExampleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianExampleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-InitialImage] ] [[-BeforeImage] ] [[-AfterImage] ] [[-TextColor] ] [[-MaxDistance] ] [[-Exp] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGaussianSimpleShader.json b/docs/_data/Help/Set-OBSGaussianSimpleShader.json new file mode 100644 index 000000000..60b80d6bf --- /dev/null +++ b/docs/_data/Help/Set-OBSGaussianSimpleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGaussianSimpleShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Samples] ] [[-LOD] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGbCameraShader.json b/docs/_data/Help/Set-OBSGbCameraShader.json new file mode 100644 index 000000000..2701fc6fa --- /dev/null +++ b/docs/_data/Help/Set-OBSGbCameraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGbCameraShader [[-PixelSize] ] [[-DitherFactor] ] [[-Brightness] ] [[-Contrast] ] [[-Gamma] ] [[-Color1] ] [[-Color2] ] [[-Color3] ] [[-Color4] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AlternativeBayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGlassShader.json b/docs/_data/Help/Set-OBSGlassShader.json new file mode 100644 index 000000000..ccb74fed9 --- /dev/null +++ b/docs/_data/Help/Set-OBSGlassShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlassShader [[-AlphaPercent] ] [[-OffsetAmount] ] [[-XSize] ] [[-YSize] ] [[-ReflectionOffset] ] [[-BorderOffset] ] [[-BorderColor] ] [[-GlassColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGlitchAnalogShader.json b/docs/_data/Help/Set-OBSGlitchAnalogShader.json new file mode 100644 index 000000000..305702c1f --- /dev/null +++ b/docs/_data/Help/Set-OBSGlitchAnalogShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] ] [[-ScanLineJitterThresholdPercent] ] [[-VerticalJumpAmount] ] [[-VerticalSpeed] ] [[-HorizontalShake] ] [[-ColorDriftAmount] ] [[-ColorDriftSpeed] ] [[-PulseSpeedPercent] ] [[-AlphaPercent] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateColors] [-ApplyToAlphaLayer] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGlitchShader.json b/docs/_data/Help/Set-OBSGlitchShader.json new file mode 100644 index 000000000..7cff399c7 --- /dev/null +++ b/docs/_data/Help/Set-OBSGlitchShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlitchShader [[-AMT] ] [[-SPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGlowShader.json b/docs/_data/Help/Set-OBSGlowShader.json new file mode 100644 index 000000000..bf035acbe --- /dev/null +++ b/docs/_data/Help/Set-OBSGlowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGlowShader [[-GlowPercent] ] [[-Blur] ] [[-MinBrightness] ] [[-MaxBrightness] ] [[-PulseSpeed] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSGradientShader.json b/docs/_data/Help/Set-OBSGradientShader.json new file mode 100644 index 000000000..d163fa07d --- /dev/null +++ b/docs/_data/Help/Set-OBSGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSGradientShader [[-StartColor] ] [[-StartStep] ] [[-MiddleColor] ] [[-MiddleStep] ] [[-EndColor] ] [[-EndStep] ] [[-AlphaPercent] ] [[-PulseSpeed] ] [[-ColorToReplace] ] [[-GradientCenterWidthPercentage] ] [[-GradientCenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-RotateColors] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSHalftoneShader.json b/docs/_data/Help/Set-OBSHalftoneShader.json new file mode 100644 index 000000000..b579880d4 --- /dev/null +++ b/docs/_data/Help/Set-OBSHalftoneShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHalftoneShader [[-Threshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSHeatWaveSimpleShader.json b/docs/_data/Help/Set-OBSHeatWaveSimpleShader.json new file mode 100644 index 000000000..89a4eea44 --- /dev/null +++ b/docs/_data/Help/Set-OBSHeatWaveSimpleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHeatWaveSimpleShader [[-Rate] ] [[-Strength] ] [[-Distortion] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSHexagonShader.json b/docs/_data/Help/Set-OBSHexagonShader.json new file mode 100644 index 000000000..da567fd2b --- /dev/null +++ b/docs/_data/Help/Set-OBSHexagonShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHexagonShader [[-HexColor] ] [[-AlphaPercent] ] [[-Quantity] ] [[-BorderWidth] ] [[-SpeedPercent] ] [[-DistortX] ] [[-DistortY] ] [[-OffsetX] ] [[-OffsetY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Blend] [-Equilateral] [-ZoomAnimate] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSHslHsvSaturationShader.json b/docs/_data/Help/Set-OBSHslHsvSaturationShader.json new file mode 100644 index 000000000..f3bdd6bea --- /dev/null +++ b/docs/_data/Help/Set-OBSHslHsvSaturationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] ] [[-HslGamma] ] [[-HsvSaturationFactor] ] [[-HsvGamma] ] [[-AdjustmentOrder] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSHueRotatonShader.json b/docs/_data/Help/Set-OBSHueRotatonShader.json new file mode 100644 index 000000000..7d1b0626c --- /dev/null +++ b/docs/_data/Help/Set-OBSHueRotatonShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSHueRotatonShader [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-HueOverride] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSInputAudioBalance.json b/docs/_data/Help/Set-OBSInputAudioBalance.json new file mode 100644 index 000000000..98dac717e --- /dev/null +++ b/docs/_data/Help/Set-OBSInputAudioBalance.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputAudioBalance : SetInputAudioBalance", + "Description": "Sets the audio balance of an input.\n\n\nSet-OBSInputAudioBalance calls the OBS WebSocket with a request of type SetInputAudioBalance.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiobalance" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSInputAudioMonitorType.json b/docs/_data/Help/Set-OBSInputAudioMonitorType.json new file mode 100644 index 000000000..b284d6da0 --- /dev/null +++ b/docs/_data/Help/Set-OBSInputAudioMonitorType.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputAudioMonitorType : SetInputAudioMonitorType", + "Description": "Sets the audio monitor type of an input.\n\n\nSet-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type SetInputAudioMonitorType.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiomonitortype" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSInputAudioSyncOffset.json b/docs/_data/Help/Set-OBSInputAudioSyncOffset.json new file mode 100644 index 000000000..55ad570d0 --- /dev/null +++ b/docs/_data/Help/Set-OBSInputAudioSyncOffset.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputAudioSyncOffset : SetInputAudioSyncOffset", + "Description": "Sets the audio sync offset of an input.\n\n\nSet-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type SetInputAudioSyncOffset.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiosyncoffset" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSInputAudioTracks.json b/docs/_data/Help/Set-OBSInputAudioTracks.json new file mode 100644 index 000000000..973b1e245 --- /dev/null +++ b/docs/_data/Help/Set-OBSInputAudioTracks.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputAudioTracks : SetInputAudioTracks", + "Description": "Sets the enable state of audio tracks of an input.\n\n\nSet-OBSInputAudioTracks calls the OBS WebSocket with a request of type SetInputAudioTracks.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiotracks" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSInputMute.json b/docs/_data/Help/Set-OBSInputMute.json new file mode 100644 index 000000000..06b2e281b --- /dev/null +++ b/docs/_data/Help/Set-OBSInputMute.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputMute : SetInputMute", + "Description": "Sets the audio mute state of an input.\n\n\nSet-OBSInputMute calls the OBS WebSocket with a request of type SetInputMute.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputmute" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSInputName.json b/docs/_data/Help/Set-OBSInputName.json new file mode 100644 index 000000000..746ffead7 --- /dev/null +++ b/docs/_data/Help/Set-OBSInputName.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputName : SetInputName", + "Description": "Sets the name of an input (rename).\n\n\nSet-OBSInputName calls the OBS WebSocket with a request of type SetInputName.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputname" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSInputSettings.json b/docs/_data/Help/Set-OBSInputSettings.json new file mode 100644 index 000000000..2ef9f5a6d --- /dev/null +++ b/docs/_data/Help/Set-OBSInputSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputSettings : SetInputSettings", + "Description": "Sets the settings of an input.\n\n\nSet-OBSInputSettings calls the OBS WebSocket with a request of type SetInputSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSInputVolume.json b/docs/_data/Help/Set-OBSInputVolume.json new file mode 100644 index 000000000..d8be904e6 --- /dev/null +++ b/docs/_data/Help/Set-OBSInputVolume.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputVolume : SetInputVolume", + "Description": "Sets the volume setting of an input.\n\n\nSet-OBSInputVolume calls the OBS WebSocket with a request of type SetInputVolume.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputvolume" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSIntensityScopeShader.json b/docs/_data/Help/Set-OBSIntensityScopeShader.json new file mode 100644 index 000000000..c79bc6f1f --- /dev/null +++ b/docs/_data/Help/Set-OBSIntensityScopeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSIntensityScopeShader [[-Gain] ] [[-Blend] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSInvertLumaShader.json b/docs/_data/Help/Set-OBSInvertLumaShader.json new file mode 100644 index 000000000..5abd320e4 --- /dev/null +++ b/docs/_data/Help/Set-OBSInvertLumaShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSInvertLumaShader [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertColor] [-InvertLuma] [-GammaCorrection] [-TestRamp] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSLuminance2Shader.json b/docs/_data/Help/Set-OBSLuminance2Shader.json new file mode 100644 index 000000000..4555c78a8 --- /dev/null +++ b/docs/_data/Help/Set-OBSLuminance2Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSLuminance2Shader [[-Color] ] [[-LumaMax] ] [[-LumaMin] ] [[-LumaMaxSmooth] ] [[-LumaMinSmooth] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSLuminanceAlphaShader.json b/docs/_data/Help/Set-OBSLuminanceAlphaShader.json new file mode 100644 index 000000000..d269489b4 --- /dev/null +++ b/docs/_data/Help/Set-OBSLuminanceAlphaShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSLuminanceAlphaShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ColorMatrix] ] [[-Color] ] [[-MulVal] ] [[-AddVal] ] [[-Level] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSLuminanceShader.json b/docs/_data/Help/Set-OBSLuminanceShader.json new file mode 100644 index 000000000..1e89f6f54 --- /dev/null +++ b/docs/_data/Help/Set-OBSLuminanceShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSLuminanceShader [[-Color] ] [[-Level] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSMarkdownSource.json b/docs/_data/Help/Set-OBSMarkdownSource.json new file mode 100644 index 000000000..ce9f33364 --- /dev/null +++ b/docs/_data/Help/Set-OBSMarkdownSource.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Sets a markdown source", + "Description": "Adds or changes a markdown source in OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSMatrixShader.json b/docs/_data/Help/Set-OBSMatrixShader.json new file mode 100644 index 000000000..ccd1e30d0 --- /dev/null +++ b/docs/_data/Help/Set-OBSMatrixShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSMatrixShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvSize] ] [[-UvPixelInterval] ] [[-RandF] ] [[-RandInstanceF] ] [[-RandActivationF] ] [[-Loops] ] [[-LocalTime] ] [[-Mouse] ] [[-LumaMin] ] [[-LumaMinSmooth] ] [[-Ratio] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-InvertDirection] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSMediaInputCursor.json b/docs/_data/Help/Set-OBSMediaInputCursor.json new file mode 100644 index 000000000..035416dd2 --- /dev/null +++ b/docs/_data/Help/Set-OBSMediaInputCursor.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSMediaInputCursor : SetMediaInputCursor", + "Description": "Sets the cursor position of a media input.\n\nThis request does not perform bounds checking of the cursor position.\n\n\nSet-OBSMediaInputCursor calls the OBS WebSocket with a request of type SetMediaInputCursor.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setmediainputcursor" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSMediaSource.json b/docs/_data/Help/Set-OBSMediaSource.json new file mode 100644 index 000000000..441822c93 --- /dev/null +++ b/docs/_data/Help/Set-OBSMediaSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a media source", + "Description": "Adds a media source to OBS.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSMediaSource -FilePath My.mp4" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSMonitorSource.json b/docs/_data/Help/Set-OBSMonitorSource.json new file mode 100644 index 000000000..e4c134f1a --- /dev/null +++ b/docs/_data/Help/Set-OBSMonitorSource.json @@ -0,0 +1,44 @@ +{ + "Synopsis": "Adds a display source", + "Description": "Adds a display source to OBS. This captures the contents of the display.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSDisplaySource # Adds a display source of the primary monitor" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Add-OBSDisplaySource -Display 2 # Adds a display source of the second monitor" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSMultiplyShader.json b/docs/_data/Help/Set-OBSMultiplyShader.json new file mode 100644 index 000000000..1a09f039f --- /dev/null +++ b/docs/_data/Help/Set-OBSMultiplyShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSMultiplyShader [[-OtherImage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSNightSkyShader.json b/docs/_data/Help/Set-OBSNightSkyShader.json new file mode 100644 index 000000000..00e458c7f --- /dev/null +++ b/docs/_data/Help/Set-OBSNightSkyShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSNightSkyShader [[-Speed] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-AlphaPercentage] ] [[-NumberStars] ] [[-SKYCOLOR] ] [[-STARCOLOR] ] [[-LIGHTSKY] ] [[-SKYLIGHTNESS] ] [[-MOONCOLOR] ] [[-MoonSize] ] [[-MoonBumpSize] ] [[-MoonPositionX] ] [[-MoonPositionY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IncludeClouds] [-IncludeMoon] [-ApplyToImage] [-ReplaceImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSOpacityShader.json b/docs/_data/Help/Set-OBSOpacityShader.json new file mode 100644 index 000000000..29698c99d --- /dev/null +++ b/docs/_data/Help/Set-OBSOpacityShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSOpacityShader [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSOutputSettings.json b/docs/_data/Help/Set-OBSOutputSettings.json new file mode 100644 index 000000000..a6b9683fc --- /dev/null +++ b/docs/_data/Help/Set-OBSOutputSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSOutputSettings : SetOutputSettings", + "Description": "Sets the settings of an output.\n\n\nSet-OBSOutputSettings calls the OBS WebSocket with a request of type SetOutputSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setoutputsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPagePeelShader.json b/docs/_data/Help/Set-OBSPagePeelShader.json new file mode 100644 index 000000000..142f98f65 --- /dev/null +++ b/docs/_data/Help/Set-OBSPagePeelShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPagePeelShader [[-Speed] ] [[-Position] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPagePeelTransitionShader.json b/docs/_data/Help/Set-OBSPagePeelTransitionShader.json new file mode 100644 index 000000000..fd398f3cb --- /dev/null +++ b/docs/_data/Help/Set-OBSPagePeelTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPagePeelTransitionShader [[-ImageA] ] [[-ImageB] ] [[-TransitionTime] ] [[-PageColor] ] [[-PageTransparency] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPerlinNoiseShader.json b/docs/_data/Help/Set-OBSPerlinNoiseShader.json new file mode 100644 index 000000000..fbad434ed --- /dev/null +++ b/docs/_data/Help/Set-OBSPerlinNoiseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPerlinNoiseShader [[-Speed] ] [[-SpeedHorizonal] ] [[-SpeedVertical] ] [[-Iterations] ] [[-WhiteNoise] ] [[-BlackNoise] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animated] [-ApplyToChannel] [-Inverted] [-Multiply] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPersistentData.json b/docs/_data/Help/Set-OBSPersistentData.json new file mode 100644 index 000000000..3aa2b426a --- /dev/null +++ b/docs/_data/Help/Set-OBSPersistentData.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSPersistentData : SetPersistentData", + "Description": "Sets the value of a \"slot\" from the selected persistent data realm.\n\n\nSet-OBSPersistentData calls the OBS WebSocket with a request of type SetPersistentData.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setpersistentdata" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPieChartShader.json b/docs/_data/Help/Set-OBSPieChartShader.json new file mode 100644 index 000000000..8468a8cbf --- /dev/null +++ b/docs/_data/Help/Set-OBSPieChartShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPieChartShader [[-InnerRadius] ] [[-OuterRadius] ] [[-StartAngle] ] [[-Total] ] [[-Part1] ] [[-Color1] ] [[-Part2] ] [[-Color2] ] [[-Part3] ] [[-Color3] ] [[-Part4] ] [[-Color4] ] [[-Part5] ] [[-Color5] ] [[-Part6] ] [[-Color6] ] [[-Part7] ] [[-Color7] ] [[-Part8] ] [[-Color8] ] [[-Part9] ] [[-Color9] ] [[-Part10] ] [[-Color10] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPixelationShader.json b/docs/_data/Help/Set-OBSPixelationShader.json new file mode 100644 index 000000000..d472e6820 --- /dev/null +++ b/docs/_data/Help/Set-OBSPixelationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPixelationShader [[-TargetWidth] ] [[-TargetHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPixelationTransitionShader.json b/docs/_data/Help/Set-OBSPixelationTransitionShader.json new file mode 100644 index 000000000..db7640c48 --- /dev/null +++ b/docs/_data/Help/Set-OBSPixelationTransitionShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPixelationTransitionShader [[-TransitionTime] ] [[-Power] ] [[-CenterX] ] [[-CenterY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPlaylistSource.json b/docs/_data/Help/Set-OBSPlaylistSource.json new file mode 100644 index 000000000..9a526c96c --- /dev/null +++ b/docs/_data/Help/Set-OBSPlaylistSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a VLC playlist source", + "Description": "Adds or sets VLC playlist sources to OBS. \nVLC must be installed for this to work.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSVLCSource -FilePath .\\*.mp3 # Creates a playlist of all MP3s in the current directory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPolarShader.json b/docs/_data/Help/Set-OBSPolarShader.json new file mode 100644 index 000000000..da26497c4 --- /dev/null +++ b/docs/_data/Help/Set-OBSPolarShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPolarShader [[-CenterX] ] [[-CenterY] ] [[-PointY] ] [[-Rotate] ] [[-Repeat] ] [[-Scale] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Flip] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSProfileParameter.json b/docs/_data/Help/Set-OBSProfileParameter.json new file mode 100644 index 000000000..56f05cb3b --- /dev/null +++ b/docs/_data/Help/Set-OBSProfileParameter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSProfileParameter : SetProfileParameter", + "Description": "Sets the value of a parameter in the current profile's configuration.\n\n\nSet-OBSProfileParameter calls the OBS WebSocket with a request of type SetProfileParameter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setprofileparameter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSPulseShader.json b/docs/_data/Help/Set-OBSPulseShader.json new file mode 100644 index 000000000..36d742590 --- /dev/null +++ b/docs/_data/Help/Set-OBSPulseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSPulseShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRGBAPercentShader.json b/docs/_data/Help/Set-OBSRGBAPercentShader.json new file mode 100644 index 000000000..4752fb944 --- /dev/null +++ b/docs/_data/Help/Set-OBSRGBAPercentShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRGBAPercentShader [[-RedPercent] ] [[-GreenPercent] ] [[-BluePercent] ] [[-AlphaPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRGSSAAShader.json b/docs/_data/Help/Set-OBSRGSSAAShader.json new file mode 100644 index 000000000..58a2de6ed --- /dev/null +++ b/docs/_data/Help/Set-OBSRGSSAAShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRGSSAAShader [[-ColorSigma] ] [[-SpatialSigma] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRainWindowShader.json b/docs/_data/Help/Set-OBSRainWindowShader.json new file mode 100644 index 000000000..13054569f --- /dev/null +++ b/docs/_data/Help/Set-OBSRainWindowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRainWindowShader [[-Size] ] [[-BlurSize] ] [[-TrailStrength] ] [[-TrailColor] ] [[-Speed] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-DebugShader] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRainbowShader.json b/docs/_data/Help/Set-OBSRainbowShader.json new file mode 100644 index 000000000..8de2d3c9c --- /dev/null +++ b/docs/_data/Help/Set-OBSRainbowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRainbowShader [[-Saturation] ] [[-Luminosity] ] [[-Spread] ] [[-Speed] ] [[-AlphaPercentage] ] [[-RotationOffset] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Vertical] [-Rotational] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRecordDirectory.json b/docs/_data/Help/Set-OBSRecordDirectory.json new file mode 100644 index 000000000..955d00e55 --- /dev/null +++ b/docs/_data/Help/Set-OBSRecordDirectory.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSRecordDirectory : SetRecordDirectory", + "Description": "Sets the current directory that the record output writes files to.\n\n\nSet-OBSRecordDirectory calls the OBS WebSocket with a request of type SetRecordDirectory.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setrecorddirectory" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRectangularDropShadowShader.json b/docs/_data/Help/Set-OBSRectangularDropShadowShader.json new file mode 100644 index 000000000..5122a4871 --- /dev/null +++ b/docs/_data/Help/Set-OBSRectangularDropShadowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSReflectShader.json b/docs/_data/Help/Set-OBSReflectShader.json new file mode 100644 index 000000000..262473d12 --- /dev/null +++ b/docs/_data/Help/Set-OBSReflectShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSReflectShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRemovePartialPixelsShader.json b/docs/_data/Help/Set-OBSRemovePartialPixelsShader.json new file mode 100644 index 000000000..36c15cd20 --- /dev/null +++ b/docs/_data/Help/Set-OBSRemovePartialPixelsShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRenderDelayFilter.json b/docs/_data/Help/Set-OBSRenderDelayFilter.json new file mode 100644 index 000000000..c898cf294 --- /dev/null +++ b/docs/_data/Help/Set-OBSRenderDelayFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a RenderDelay filter.", + "Description": "Adds or Changes a RenderDelay Filter on an OBS Input. \nThis changes the RenderDelay of an image.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSRenderDelayFilter -RenderDelay .75" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRepeatShader.json b/docs/_data/Help/Set-OBSRepeatShader.json new file mode 100644 index 000000000..9bd54d604 --- /dev/null +++ b/docs/_data/Help/Set-OBSRepeatShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRepeatShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Alpha] ] [[-Copies] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRepeatTextureShader.json b/docs/_data/Help/Set-OBSRepeatTextureShader.json new file mode 100644 index 000000000..d451333fa --- /dev/null +++ b/docs/_data/Help/Set-OBSRepeatTextureShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRepeatTextureShader [[-ViewProj] ] [[-ColorMatrix] ] [[-ColorRangeMin] ] [[-ColorRangeMax] ] [[-Image] ] [[-TexImage] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-UvSize] ] [[-RandF] ] [[-Blend] ] [[-Copies] ] [[-Notes] ] [[-AlphaPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRgbColorWheelShader.json b/docs/_data/Help/Set-OBSRgbColorWheelShader.json new file mode 100644 index 000000000..5b4a5222f --- /dev/null +++ b/docs/_data/Help/Set-OBSRgbColorWheelShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRgbColorWheelShader [[-Speed] ] [[-ColorDepth] ] [[-ColorToReplace] ] [[-AlphaPercentage] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRgbSplitShader.json b/docs/_data/Help/Set-OBSRgbSplitShader.json new file mode 100644 index 000000000..0e74e3f1b --- /dev/null +++ b/docs/_data/Help/Set-OBSRgbSplitShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRgbSplitShader [[-Redx] ] [[-Redy] ] [[-Greenx] ] [[-Greeny] ] [[-Bluex] ] [[-Bluey] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRgbvisibilityShader.json b/docs/_data/Help/Set-OBSRgbvisibilityShader.json new file mode 100644 index 000000000..90f27d82a --- /dev/null +++ b/docs/_data/Help/Set-OBSRgbvisibilityShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRgbvisibilityShader [[-Red] ] [[-Green] ] [[-Blue] ] [[-RedVisibility] ] [[-GreenVisibility] ] [[-BlueVisibility] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRippleShader.json b/docs/_data/Help/Set-OBSRippleShader.json new file mode 100644 index 000000000..0c381ad29 --- /dev/null +++ b/docs/_data/Help/Set-OBSRippleShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRippleShader [[-DistanceFactor] ] [[-TimeFactor] ] [[-PowerFactor] ] [[-CenterPosX] ] [[-CenterPosY] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRotatingSourceShader.json b/docs/_data/Help/Set-OBSRotatingSourceShader.json new file mode 100644 index 000000000..695a60151 --- /dev/null +++ b/docs/_data/Help/Set-OBSRotatingSourceShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRotatingSourceShader [[-SpinSpeed] ] [[-Rotation] ] [[-Zoomin] ] [[-XCenter] ] [[-YCenter] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-KeepAspectratio] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRotatoeShader.json b/docs/_data/Help/Set-OBSRotatoeShader.json new file mode 100644 index 000000000..9ebcffb5d --- /dev/null +++ b/docs/_data/Help/Set-OBSRotatoeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRotatoeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-SpeedPercent] ] [[-AxisX] ] [[-AxisY] ] [[-AxisZ] ] [[-AngleDegrees] ] [[-CenterWidthPercentage] ] [[-CenterHeightPercentage] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-RotateTransform] [-RotatePixels] [-RotateColors] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRoundedRect2Shader.json b/docs/_data/Help/Set-OBSRoundedRect2Shader.json new file mode 100644 index 000000000..92f11df06 --- /dev/null +++ b/docs/_data/Help/Set-OBSRoundedRect2Shader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRect2Shader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-FasterScan] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRoundedRectPerCornerShader.json b/docs/_data/Help/Set-OBSRoundedRectPerCornerShader.json new file mode 100644 index 000000000..a97578dbf --- /dev/null +++ b/docs/_data/Help/Set-OBSRoundedRectPerCornerShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] ] [[-CornerRadiusTr] ] [[-CornerRadiusBr] ] [[-CornerRadiusBl] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRoundedRectPerSideShader.json b/docs/_data/Help/Set-OBSRoundedRectPerSideShader.json new file mode 100644 index 000000000..4dbca8acf --- /dev/null +++ b/docs/_data/Help/Set-OBSRoundedRectPerSideShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] ] [[-CornerRadiusLeft] ] [[-CornerRadiusTop] ] [[-CornerRadiusRight] ] [[-BorderThickness] ] [[-BorderColor] ] [[-BorderAlphaStart] ] [[-BorderAlphaEnd] ] [[-AlphaCutOff] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRoundedRectShader.json b/docs/_data/Help/Set-OBSRoundedRectShader.json new file mode 100644 index 000000000..43f1cee77 --- /dev/null +++ b/docs/_data/Help/Set-OBSRoundedRectShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedRectShader [[-CornerRadius] ] [[-BorderThickness] ] [[-BorderColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRoundedStrokeGradientShader.json b/docs/_data/Help/Set-OBSRoundedStrokeGradientShader.json new file mode 100644 index 000000000..d60d4b519 --- /dev/null +++ b/docs/_data/Help/Set-OBSRoundedStrokeGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedStrokeGradientShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-RotationSpeed] ] [[-BorderColorL] ] [[-BorderColorR] ] [[-CenterWidth] ] [[-CenterHeight] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSRoundedStrokeShader.json b/docs/_data/Help/Set-OBSRoundedStrokeShader.json new file mode 100644 index 000000000..14cc8b08a --- /dev/null +++ b/docs/_data/Help/Set-OBSRoundedStrokeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSRoundedStrokeShader [[-CornerRadius] ] [[-BorderThickness] ] [[-MinimumAlphaPercent] ] [[-BorderColor] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSScaleFilter.json b/docs/_data/Help/Set-OBSScaleFilter.json new file mode 100644 index 000000000..e9ab1e703 --- /dev/null +++ b/docs/_data/Help/Set-OBSScaleFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a Scale filter.", + "Description": "Adds or Changes a Scale Filter on an OBS Input. \nThis allows you to resize the image source.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSScaleFilter -Resolution \"16:9\"" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSScanLineShader.json b/docs/_data/Help/Set-OBSScanLineShader.json new file mode 100644 index 000000000..d77b16a0f --- /dev/null +++ b/docs/_data/Help/Set-OBSScanLineShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSScanLineShader [[-Speed] ] [[-Angle] ] [[-Floor] ] [[-Period] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Lengthwise] [-Animate] [-Shift] [-Boost] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSceneItemBlendMode.json b/docs/_data/Help/Set-OBSSceneItemBlendMode.json new file mode 100644 index 000000000..64d3bfba2 --- /dev/null +++ b/docs/_data/Help/Set-OBSSceneItemBlendMode.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemBlendMode : SetSceneItemBlendMode", + "Description": "Sets the blend mode of a scene item.\n\nScenes and Groups\n\n\nSet-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type SetSceneItemBlendMode.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemblendmode" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSceneItemEnabled.json b/docs/_data/Help/Set-OBSSceneItemEnabled.json new file mode 100644 index 000000000..cd9119b44 --- /dev/null +++ b/docs/_data/Help/Set-OBSSceneItemEnabled.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemEnabled : SetSceneItemEnabled", + "Description": "Sets the enable state of a scene item.\n\nScenes and Groups\n\n\nSet-OBSSceneItemEnabled calls the OBS WebSocket with a request of type SetSceneItemEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemenabled" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSceneItemIndex.json b/docs/_data/Help/Set-OBSSceneItemIndex.json new file mode 100644 index 000000000..d09f124e4 --- /dev/null +++ b/docs/_data/Help/Set-OBSSceneItemIndex.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemIndex : SetSceneItemIndex", + "Description": "Sets the index position of a scene item in a scene.\n\nScenes and Groups\n\n\nSet-OBSSceneItemIndex calls the OBS WebSocket with a request of type SetSceneItemIndex.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemindex" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSceneItemLocked.json b/docs/_data/Help/Set-OBSSceneItemLocked.json new file mode 100644 index 000000000..ee6666a41 --- /dev/null +++ b/docs/_data/Help/Set-OBSSceneItemLocked.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemLocked : SetSceneItemLocked", + "Description": "Sets the lock state of a scene item.\n\nScenes and Group\n\n\nSet-OBSSceneItemLocked calls the OBS WebSocket with a request of type SetSceneItemLocked.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemlocked" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSceneItemTransform.json b/docs/_data/Help/Set-OBSSceneItemTransform.json new file mode 100644 index 000000000..732cc1c9e --- /dev/null +++ b/docs/_data/Help/Set-OBSSceneItemTransform.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemTransform : SetSceneItemTransform", + "Description": "Sets the transform and crop info of a scene item.\n\n\nSet-OBSSceneItemTransform calls the OBS WebSocket with a request of type SetSceneItemTransform.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemtransform" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSceneName.json b/docs/_data/Help/Set-OBSSceneName.json new file mode 100644 index 000000000..235975402 --- /dev/null +++ b/docs/_data/Help/Set-OBSSceneName.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneName : SetSceneName", + "Description": "Sets the name of a scene (rename).\n\n\nSet-OBSSceneName calls the OBS WebSocket with a request of type SetSceneName.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenename" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSceneSceneTransitionOverride.json b/docs/_data/Help/Set-OBSSceneSceneTransitionOverride.json new file mode 100644 index 000000000..b2d6b4ae0 --- /dev/null +++ b/docs/_data/Help/Set-OBSSceneSceneTransitionOverride.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneSceneTransitionOverride : SetSceneSceneTransitionOverride", + "Description": "Sets the scene transition overridden for a scene.\n\n\nSet-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type SetSceneSceneTransitionOverride.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenescenetransitionoverride" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSScrollFilter.json b/docs/_data/Help/Set-OBSScrollFilter.json new file mode 100644 index 000000000..09c1bf405 --- /dev/null +++ b/docs/_data/Help/Set-OBSScrollFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a scroll filter.", + "Description": "Adds or Changes a Scroll Filter on an OBS Input. \nThis allows you to scroll horizontally or vertically.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSScrollFilter -HorizontalSpeed 100 -VerticalSpeed 100" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSeascapeShader.json b/docs/_data/Help/Set-OBSSeascapeShader.json new file mode 100644 index 000000000..cdd926b70 --- /dev/null +++ b/docs/_data/Help/Set-OBSSeascapeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSeascapeShader [[-SEAHEIGHT] ] [[-SEACHOPPY] ] [[-SEASPEED] ] [[-SEAFREQ] ] [[-SEABASE] ] [[-SEAWATERCOLOR] ] [[-CAMERASPEED] ] [[-CAMERATURNSPEED] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-AA] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSeasickShader.json b/docs/_data/Help/Set-OBSSeasickShader.json new file mode 100644 index 000000000..eef433c89 --- /dev/null +++ b/docs/_data/Help/Set-OBSSeasickShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSeasickShader [[-Notes] ] [[-Amplitude] ] [[-Speed] ] [[-Frequency] ] [[-Opacity] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSelectiveColorShader.json b/docs/_data/Help/Set-OBSSelectiveColorShader.json new file mode 100644 index 000000000..fce5d6bdf --- /dev/null +++ b/docs/_data/Help/Set-OBSSelectiveColorShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSelectiveColorShader [[-CutoffRed] ] [[-CutoffGreen] ] [[-CutoffBlue] ] [[-CutoffYellow] ] [[-AcceptanceAmplifier] ] [[-Notes] ] [[-BackgroundType] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ShowRed] [-ShowGreen] [-ShowBlue] [-ShowYellow] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSShaderFilter.json b/docs/_data/Help/Set-OBSShaderFilter.json new file mode 100644 index 000000000..9992e3c5c --- /dev/null +++ b/docs/_data/Help/Set-OBSShaderFilter.json @@ -0,0 +1,49 @@ +{ + "Synopsis": "Sets a Shader filter.", + "Description": "Adds or Changes a Shader Filter on an OBS Input. \nThis requires that the [OBS Shader Filter](https://github.com/exeldro/obs-shaderfilter) is installed.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSShaderFilter -FilterName \"FisheyeShader\" -ShaderFile fisheye-xy -ShaderSetting @{ \n center_x_percent=30 \n center_y_percent=70 \n }" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSShaderFilter -FilterName \"SeasickShader\" -ShaderFile seasick -ShaderSetting @{ \n amplitude = 0.05 \n speed = 0.5 \n frequency = 12 \n opacity = 1 \n }" + }, + { + "Title": "EXAMPLE 3", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSShaderFilter -FilterName \"TwistShader\" -ShaderFile twist -ShaderSetting @{ \n center_x_percent=50 \n center_y_percent=50 \n power = 0.05 \n rotation = 80 \n }" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSShakeShader.json b/docs/_data/Help/Set-OBSShakeShader.json new file mode 100644 index 000000000..def40680c --- /dev/null +++ b/docs/_data/Help/Set-OBSShakeShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSShakeShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-LocalTime] ] [[-RandomScale] ] [[-Speed] ] [[-MinGrowthPixels] ] [[-MaxGrowthPixels] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Worble] [-RandomizeMovement] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSharpnessFilter.json b/docs/_data/Help/Set-OBSSharpnessFilter.json new file mode 100644 index 000000000..baa4da743 --- /dev/null +++ b/docs/_data/Help/Set-OBSSharpnessFilter.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a Sharpness filter.", + "Description": "Adds or Changes a Sharpness Filter on an OBS Input. \nThis changes the sharpness of an image.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | \n Set-OBSSharpnessFilter -Sharpness .75" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSShineShader.json b/docs/_data/Help/Set-OBSShineShader.json new file mode 100644 index 000000000..bb19782c3 --- /dev/null +++ b/docs/_data/Help/Set-OBSShineShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSShineShader [[-LTex] ] [[-ShineColor] ] [[-SpeedPercent] ] [[-GradientPercent] ] [[-DelayPercent] ] [[-Notes] ] [[-StartAdjust] ] [[-StopAdjust] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToAlphaLayer] [-Ease] [-Hide] [-Reverse] [-OneDirection] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSimpleGradientShader.json b/docs/_data/Help/Set-OBSSimpleGradientShader.json new file mode 100644 index 000000000..223095c61 --- /dev/null +++ b/docs/_data/Help/Set-OBSSimpleGradientShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSimpleGradientShader [[-SpeedPercentage] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-LensFlair] [-AnimateLensFlair] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSimplexNoiseShader.json b/docs/_data/Help/Set-OBSSimplexNoiseShader.json new file mode 100644 index 000000000..6d0a22a7f --- /dev/null +++ b/docs/_data/Help/Set-OBSSimplexNoiseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSimplexNoiseShader [[-SnapPercent] ] [[-SpeedPercent] ] [[-Resolution] ] [[-ForeColor] ] [[-BackColor] ] [[-AlphaPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Fractal] [-UseAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSmartDenoiseShader.json b/docs/_data/Help/Set-OBSSmartDenoiseShader.json new file mode 100644 index 000000000..8f0aca83b --- /dev/null +++ b/docs/_data/Help/Set-OBSSmartDenoiseShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSmartDenoiseShader [[-USigma] ] [[-UKSigma] ] [[-UThreshold] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSoundCloudSource.json b/docs/_data/Help/Set-OBSSoundCloudSource.json new file mode 100644 index 000000000..679cdeccc --- /dev/null +++ b/docs/_data/Help/Set-OBSSoundCloudSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Sets a Sound Cloud Source", + "Description": "Adds or changes a Sound Cloud source OBS. \nSound Cloud Sources are Browser Sources that display a [SoundCloud Player Widget](https://developers.soundcloud.com/docs/api/html5-widget).", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-obssoundCloudSource -Uri https://soundcloud.com/outertone/sets/new-earth" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSourceFilterEnabled.json b/docs/_data/Help/Set-OBSSourceFilterEnabled.json new file mode 100644 index 000000000..278d25116 --- /dev/null +++ b/docs/_data/Help/Set-OBSSourceFilterEnabled.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSourceFilterEnabled : SetSourceFilterEnabled", + "Description": "Sets the enable state of a source filter.\n\n\nSet-OBSSourceFilterEnabled calls the OBS WebSocket with a request of type SetSourceFilterEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterenabled" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSourceFilterIndex.json b/docs/_data/Help/Set-OBSSourceFilterIndex.json new file mode 100644 index 000000000..05405a53d --- /dev/null +++ b/docs/_data/Help/Set-OBSSourceFilterIndex.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSourceFilterIndex : SetSourceFilterIndex", + "Description": "Sets the index position of a filter on a source.\n\n\nSet-OBSSourceFilterIndex calls the OBS WebSocket with a request of type SetSourceFilterIndex.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterindex" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSourceFilterName.json b/docs/_data/Help/Set-OBSSourceFilterName.json new file mode 100644 index 000000000..50f75d34e --- /dev/null +++ b/docs/_data/Help/Set-OBSSourceFilterName.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSourceFilterName : SetSourceFilterName", + "Description": "Sets the name of a source filter (rename).\n\n\nSet-OBSSourceFilterName calls the OBS WebSocket with a request of type SetSourceFilterName.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltername" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSourceFilterSettings.json b/docs/_data/Help/Set-OBSSourceFilterSettings.json new file mode 100644 index 000000000..c89b80784 --- /dev/null +++ b/docs/_data/Help/Set-OBSSourceFilterSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSourceFilterSettings : SetSourceFilterSettings", + "Description": "Sets the settings of a source filter.\n\n\nSet-OBSSourceFilterSettings calls the OBS WebSocket with a request of type SetSourceFilterSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltersettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSpecularShineShader.json b/docs/_data/Help/Set-OBSSpecularShineShader.json new file mode 100644 index 000000000..a63d6e628 --- /dev/null +++ b/docs/_data/Help/Set-OBSSpecularShineShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSpecularShineShader [[-Hint] ] [[-Roughness] ] [[-LightStrength] ] [[-LightPositionX] ] [[-LightPositionY] ] [[-FlattenNormal] ] [[-StretchNormalX] ] [[-StretchNormalY] ] [[-LightColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSpotlightShader.json b/docs/_data/Help/Set-OBSSpotlightShader.json new file mode 100644 index 000000000..f43d3b11e --- /dev/null +++ b/docs/_data/Help/Set-OBSSpotlightShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSpotlightShader [[-SpeedPercent] ] [[-FocusPercent] ] [[-SpotlightColor] ] [[-HorizontalOffset] ] [[-VerticalOffset] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSStreamServiceSettings.json b/docs/_data/Help/Set-OBSStreamServiceSettings.json new file mode 100644 index 000000000..ab8ce9f3f --- /dev/null +++ b/docs/_data/Help/Set-OBSStreamServiceSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSStreamServiceSettings : SetStreamServiceSettings", + "Description": "Sets the current stream service settings (stream destination).\n\nNote: Simple RTMP settings can be set with type `rtmp_custom` and the settings fields `server` and `key`.\n\n\nSet-OBSStreamServiceSettings calls the OBS WebSocket with a request of type SetStreamServiceSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstreamservicesettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSStudioModeEnabled.json b/docs/_data/Help/Set-OBSStudioModeEnabled.json new file mode 100644 index 000000000..7344b392f --- /dev/null +++ b/docs/_data/Help/Set-OBSStudioModeEnabled.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSStudioModeEnabled : SetStudioModeEnabled", + "Description": "Enables or disables studio mode\n\n\nSet-OBSStudioModeEnabled calls the OBS WebSocket with a request of type SetStudioModeEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstudiomodeenabled" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSwirlShader.json b/docs/_data/Help/Set-OBSSwirlShader.json new file mode 100644 index 000000000..cde822f17 --- /dev/null +++ b/docs/_data/Help/Set-OBSSwirlShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSSwirlShader [[-Radius] ] [[-Angle] ] [[-CenterX] ] [[-CenterY] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Animate] [-Inverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSSwitchSource.json b/docs/_data/Help/Set-OBSSwitchSource.json new file mode 100644 index 000000000..9a526c96c --- /dev/null +++ b/docs/_data/Help/Set-OBSSwitchSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a VLC playlist source", + "Description": "Adds or sets VLC playlist sources to OBS. \nVLC must be installed for this to work.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSVLCSource -FilePath .\\*.mp3 # Creates a playlist of all MP3s in the current directory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSTBarPosition.json b/docs/_data/Help/Set-OBSTBarPosition.json new file mode 100644 index 000000000..6fa044b78 --- /dev/null +++ b/docs/_data/Help/Set-OBSTBarPosition.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSTBarPosition : SetTBarPosition", + "Description": "Sets the position of the TBar.\n\n**Very important note**: This will be deprecated and replaced in a future version of obs-websocket.\n\n\nSet-OBSTBarPosition calls the OBS WebSocket with a request of type SetTBarPosition.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#settbarposition" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSTetraShader.json b/docs/_data/Help/Set-OBSTetraShader.json new file mode 100644 index 000000000..966d730b0 --- /dev/null +++ b/docs/_data/Help/Set-OBSTetraShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTetraShader [[-RedR] ] [[-RedG] ] [[-RedB] ] [[-YelR] ] [[-YelG] ] [[-YelB] ] [[-GrnR] ] [[-GrnG] ] [[-GrnB] ] [[-CynR] ] [[-CynG] ] [[-CynB] ] [[-BluR] ] [[-BluG] ] [[-BluB] ] [[-MagR] ] [[-MagG] ] [[-MagB] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSThermalShader.json b/docs/_data/Help/Set-OBSThermalShader.json new file mode 100644 index 000000000..422ae31ea --- /dev/null +++ b/docs/_data/Help/Set-OBSThermalShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSThermalShader [[-Strength] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSTvCrtSubpixelShader.json b/docs/_data/Help/Set-OBSTvCrtSubpixelShader.json new file mode 100644 index 000000000..1f94cb996 --- /dev/null +++ b/docs/_data/Help/Set-OBSTvCrtSubpixelShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTvCrtSubpixelShader [[-ChannelWidth] ] [[-ChannelHeight] ] [[-HGap] ] [[-VGap] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSTwistShader.json b/docs/_data/Help/Set-OBSTwistShader.json new file mode 100644 index 000000000..fdbb559eb --- /dev/null +++ b/docs/_data/Help/Set-OBSTwistShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTwistShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-Rotation] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSTwoPassDropShadowShader.json b/docs/_data/Help/Set-OBSTwoPassDropShadowShader.json new file mode 100644 index 000000000..d0ea47a01 --- /dev/null +++ b/docs/_data/Help/Set-OBSTwoPassDropShadowShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSTwoPassDropShadowShader [[-ViewProj] ] [[-Image] ] [[-ElapsedTime] ] [[-UvOffset] ] [[-UvScale] ] [[-UvPixelInterval] ] [[-RandF] ] [[-UvSize] ] [[-ShadowOffsetX] ] [[-ShadowOffsetY] ] [[-ShadowBlurSize] ] [[-ShadowColor] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSVCRShader.json b/docs/_data/Help/Set-OBSVCRShader.json new file mode 100644 index 000000000..7649be26d --- /dev/null +++ b/docs/_data/Help/Set-OBSVCRShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVCRShader [[-VerticalShift] ] [[-Distort] ] [[-Vignet] ] [[-Stripe] ] [[-VerticalFactor] ] [[-VerticalHeight] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSVHSShader.json b/docs/_data/Help/Set-OBSVHSShader.json new file mode 100644 index 000000000..4527a7869 --- /dev/null +++ b/docs/_data/Help/Set-OBSVHSShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVHSShader [[-Range] ] [[-OffsetIntensity] ] [[-NoiseQuality] ] [[-NoiseIntensity] ] [[-ColorOffsetIntensity] ] [[-AlphaPercentage] ] [[-ColorToReplace] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSVLCSource.json b/docs/_data/Help/Set-OBSVLCSource.json new file mode 100644 index 000000000..9a526c96c --- /dev/null +++ b/docs/_data/Help/Set-OBSVLCSource.json @@ -0,0 +1,42 @@ +{ + "Synopsis": "Adds a VLC playlist source", + "Description": "Adds or sets VLC playlist sources to OBS. \nVLC must be installed for this to work.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Set-OBSVLCSource -FilePath .\\*.mp3 # Creates a playlist of all MP3s in the current directory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSVideoSettings.json b/docs/_data/Help/Set-OBSVideoSettings.json new file mode 100644 index 000000000..859a96c38 --- /dev/null +++ b/docs/_data/Help/Set-OBSVideoSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSVideoSettings : SetVideoSettings", + "Description": "Sets the current video settings.\n\nNote: Fields must be specified in pairs. For example, you cannot set only `baseWidth` without needing to specify `baseHeight`.\n\n\nSet-OBSVideoSettings calls the OBS WebSocket with a request of type SetVideoSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setvideosettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSVignettingShader.json b/docs/_data/Help/Set-OBSVignettingShader.json new file mode 100644 index 000000000..3ee3ee0f8 --- /dev/null +++ b/docs/_data/Help/Set-OBSVignettingShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVignettingShader [[-InnerRadius] ] [[-OuterRadius] ] [[-Opacity] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSVoronoiPixelationShader.json b/docs/_data/Help/Set-OBSVoronoiPixelationShader.json new file mode 100644 index 000000000..adb637d96 --- /dev/null +++ b/docs/_data/Help/Set-OBSVoronoiPixelationShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSVoronoiPixelationShader [[-PixH] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Alternative] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSWaveformSource.json b/docs/_data/Help/Set-OBSWaveformSource.json new file mode 100644 index 000000000..54d4cdd82 --- /dev/null +++ b/docs/_data/Help/Set-OBSWaveformSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "OBS Waveform Source", + "Description": "Gets, Sets, or Adds a waveform source in OBS. \nWaveform sources require the [Waveform Plugin](https://obsproject.com/forum/resources/waveform.1423/)", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Add-OBSWaveformSource -Name \"SpeakerWaveform\"" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSWindowCaptureSource.json b/docs/_data/Help/Set-OBSWindowCaptureSource.json new file mode 100644 index 000000000..eff834087 --- /dev/null +++ b/docs/_data/Help/Set-OBSWindowCaptureSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Adds or sets a window capture source", + "Description": "Adds or sets a windows capture source in OBS. This captures the contents of a window.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSWindowSource.json b/docs/_data/Help/Set-OBSWindowSource.json new file mode 100644 index 000000000..eff834087 --- /dev/null +++ b/docs/_data/Help/Set-OBSWindowSource.json @@ -0,0 +1,39 @@ +{ + "Synopsis": "Adds or sets a window capture source", + "Description": "Adds or sets a windows capture source in OBS. This captures the contents of a window.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSZigZagShader.json b/docs/_data/Help/Set-OBSZigZagShader.json new file mode 100644 index 000000000..877d9a7dd --- /dev/null +++ b/docs/_data/Help/Set-OBSZigZagShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZigZagShader [[-Radius] ] [[-Angle] ] [[-Period] ] [[-Amplitude] ] [[-CenterX] ] [[-CenterY] ] [[-Phase] ] [[-Animate] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSZoomBlurShader.json b/docs/_data/Help/Set-OBSZoomBlurShader.json new file mode 100644 index 000000000..5e3327904 --- /dev/null +++ b/docs/_data/Help/Set-OBSZoomBlurShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZoomBlurShader [[-Samples] ] [[-Magnitude] ] [[-SpeedPercent] ] [[-Notes] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSZoomShader.json b/docs/_data/Help/Set-OBSZoomShader.json new file mode 100644 index 000000000..471ef8b0d --- /dev/null +++ b/docs/_data/Help/Set-OBSZoomShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZoomShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-Power] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Set-OBSZoomXYShader.json b/docs/_data/Help/Set-OBSZoomXYShader.json new file mode 100644 index 000000000..7bc63723c --- /dev/null +++ b/docs/_data/Help/Set-OBSZoomXYShader.json @@ -0,0 +1,33 @@ +{ + "Synopsis": "Get-OBSZoomXYShader [[-CenterXPercent] ] [[-CenterYPercent] ] [[-XPower] ] [[-YPower] ] [[-SourceName] ] [[-FilterName] ] [[-ShaderText] ] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] []", + "Description": "", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + "System.String" + ], + "Outputs": [ + "System.Object" + ], + "Links": [], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Show-OBS.json b/docs/_data/Help/Show-OBS.json new file mode 100644 index 000000000..8e1e2deb0 --- /dev/null +++ b/docs/_data/Help/Show-OBS.json @@ -0,0 +1,44 @@ +{ + "Synopsis": "Shows content in OBS", + "Description": "Shows content in Open Broadcasting Studio", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "\n' | Set-Content .\\BlueRect.svg\nShow-OBS -FilePath .\\BlueRect.svg" + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Show-OBS -FilePath *excited* -RootPath $home\\Pictures\\Gif" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Start-OBSEffect.json b/docs/_data/Help/Start-OBSEffect.json new file mode 100644 index 000000000..650dd06d0 --- /dev/null +++ b/docs/_data/Help/Start-OBSEffect.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Starts obs-powershell effects.", + "Description": "Starts an effect in OBS PowerShell.\n\nAn effect is either a series of messages or a command that can produce a series of messages.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Start-OBSOutput.json b/docs/_data/Help/Start-OBSOutput.json new file mode 100644 index 000000000..f7f06d0e3 --- /dev/null +++ b/docs/_data/Help/Start-OBSOutput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Start-OBSOutput : StartOutput", + "Description": "Starts an output.\n\n\nStart-OBSOutput calls the OBS WebSocket with a request of type StartOutput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startoutput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Start-OBSRecord.json b/docs/_data/Help/Start-OBSRecord.json new file mode 100644 index 000000000..9ca1bfe4d --- /dev/null +++ b/docs/_data/Help/Start-OBSRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSRecord : StartRecord", + "Description": "Starts the record output.\n\n\nStart-OBSRecord calls the OBS WebSocket with a request of type StartRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Start-OBSReplayBuffer.json b/docs/_data/Help/Start-OBSReplayBuffer.json new file mode 100644 index 000000000..85287399e --- /dev/null +++ b/docs/_data/Help/Start-OBSReplayBuffer.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSReplayBuffer : StartReplayBuffer", + "Description": "Starts the replay buffer output.\n\n\nStart-OBSReplayBuffer calls the OBS WebSocket with a request of type StartReplayBuffer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startreplaybuffer" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSReplayBuffer" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Start-OBSStream.json b/docs/_data/Help/Start-OBSStream.json new file mode 100644 index 000000000..d03070ec3 --- /dev/null +++ b/docs/_data/Help/Start-OBSStream.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSStream : StartStream", + "Description": "Starts the stream output.\n\n\nStart-OBSStream calls the OBS WebSocket with a request of type StartStream.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSStream" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Start-OBSVirtualCam.json b/docs/_data/Help/Start-OBSVirtualCam.json new file mode 100644 index 000000000..a4fb618e8 --- /dev/null +++ b/docs/_data/Help/Start-OBSVirtualCam.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSVirtualCam : StartVirtualCam", + "Description": "Starts the virtualcam output.\n\n\nStart-OBSVirtualCam calls the OBS WebSocket with a request of type StartVirtualCam.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startvirtualcam" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSVirtualCam" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Start-Recording.json b/docs/_data/Help/Start-Recording.json new file mode 100644 index 000000000..9ca1bfe4d --- /dev/null +++ b/docs/_data/Help/Start-Recording.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSRecord : StartRecord", + "Description": "Starts the record output.\n\n\nStart-OBSRecord calls the OBS WebSocket with a request of type StartRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Start-Streaming.json b/docs/_data/Help/Start-Streaming.json new file mode 100644 index 000000000..d03070ec3 --- /dev/null +++ b/docs/_data/Help/Start-Streaming.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSStream : StartStream", + "Description": "Starts the stream output.\n\n\nStart-OBSStream calls the OBS WebSocket with a request of type StartStream.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSStream" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Stop-OBSEffect.json b/docs/_data/Help/Stop-OBSEffect.json new file mode 100644 index 000000000..9d2670e76 --- /dev/null +++ b/docs/_data/Help/Stop-OBSEffect.json @@ -0,0 +1,36 @@ +{ + "Synopsis": "Stops obs-powershell effects.", + "Description": "Stops an effect in OBS PowerShell.\n\nA running effect is a series of messages, and the obs-websocket does not let you cancel a message.\n\nHowever, OBS effects can be bounced or running in a loop.\n\nIf these effects are stopped, they will not continue to loop or bounce.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Stop-OBSOutput.json b/docs/_data/Help/Stop-OBSOutput.json new file mode 100644 index 000000000..df889ba83 --- /dev/null +++ b/docs/_data/Help/Stop-OBSOutput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Stop-OBSOutput : StopOutput", + "Description": "Stops an output.\n\n\nStop-OBSOutput calls the OBS WebSocket with a request of type StopOutput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopoutput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Stop-OBSRecord.json b/docs/_data/Help/Stop-OBSRecord.json new file mode 100644 index 000000000..b6b49dcdb --- /dev/null +++ b/docs/_data/Help/Stop-OBSRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSRecord : StopRecord", + "Description": "Stops the record output.\n\n\nStop-OBSRecord calls the OBS WebSocket with a request of type StopRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Stop-OBSReplayBuffer.json b/docs/_data/Help/Stop-OBSReplayBuffer.json new file mode 100644 index 000000000..c3bea5f30 --- /dev/null +++ b/docs/_data/Help/Stop-OBSReplayBuffer.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSReplayBuffer : StopReplayBuffer", + "Description": "Stops the replay buffer output.\n\n\nStop-OBSReplayBuffer calls the OBS WebSocket with a request of type StopReplayBuffer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopreplaybuffer" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSReplayBuffer" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Stop-OBSStream.json b/docs/_data/Help/Stop-OBSStream.json new file mode 100644 index 000000000..509847921 --- /dev/null +++ b/docs/_data/Help/Stop-OBSStream.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSStream : StopStream", + "Description": "Stops the stream output.\n\n\nStop-OBSStream calls the OBS WebSocket with a request of type StopStream.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSStream" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Stop-OBSVirtualCam.json b/docs/_data/Help/Stop-OBSVirtualCam.json new file mode 100644 index 000000000..22ae9bb40 --- /dev/null +++ b/docs/_data/Help/Stop-OBSVirtualCam.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSVirtualCam : StopVirtualCam", + "Description": "Stops the virtualcam output.\n\n\nStop-OBSVirtualCam calls the OBS WebSocket with a request of type StopVirtualCam.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopvirtualcam" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSVirtualCam" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Stop-Recording.json b/docs/_data/Help/Stop-Recording.json new file mode 100644 index 000000000..b6b49dcdb --- /dev/null +++ b/docs/_data/Help/Stop-Recording.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSRecord : StopRecord", + "Description": "Stops the record output.\n\n\nStop-OBSRecord calls the OBS WebSocket with a request of type StopRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Stop-Streaming.json b/docs/_data/Help/Stop-Streaming.json new file mode 100644 index 000000000..509847921 --- /dev/null +++ b/docs/_data/Help/Stop-Streaming.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSStream : StopStream", + "Description": "Stops the stream output.\n\n\nStop-OBSStream calls the OBS WebSocket with a request of type StopStream.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSStream" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Switch-OBSInputMute.json b/docs/_data/Help/Switch-OBSInputMute.json new file mode 100644 index 000000000..d2d732cbd --- /dev/null +++ b/docs/_data/Help/Switch-OBSInputMute.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Switch-OBSInputMute : ToggleInputMute", + "Description": "Toggles the audio mute state of an input.\n\n\nSwitch-OBSInputMute calls the OBS WebSocket with a request of type ToggleInputMute.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleinputmute" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Switch-OBSOutput.json b/docs/_data/Help/Switch-OBSOutput.json new file mode 100644 index 000000000..b5a71b5e8 --- /dev/null +++ b/docs/_data/Help/Switch-OBSOutput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Switch-OBSOutput : ToggleOutput", + "Description": "Toggles the status of an output.\n\n\nSwitch-OBSOutput calls the OBS WebSocket with a request of type ToggleOutput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleoutput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/Switch-OBSRecord.json b/docs/_data/Help/Switch-OBSRecord.json new file mode 100644 index 000000000..5d4ad4d8e --- /dev/null +++ b/docs/_data/Help/Switch-OBSRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSRecord : ToggleRecord", + "Description": "Toggles the status of the record output.\n\n\nSwitch-OBSRecord calls the OBS WebSocket with a request of type ToggleRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Switch-OBSRecordPause.json b/docs/_data/Help/Switch-OBSRecordPause.json new file mode 100644 index 000000000..bdcc0e9b9 --- /dev/null +++ b/docs/_data/Help/Switch-OBSRecordPause.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSRecordPause : ToggleRecordPause", + "Description": "Toggles pause on the record output.\n\n\nSwitch-OBSRecordPause calls the OBS WebSocket with a request of type ToggleRecordPause.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecordpause" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSRecordPause" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Switch-OBSReplayBuffer.json b/docs/_data/Help/Switch-OBSReplayBuffer.json new file mode 100644 index 000000000..391e546dc --- /dev/null +++ b/docs/_data/Help/Switch-OBSReplayBuffer.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSReplayBuffer : ToggleReplayBuffer", + "Description": "Toggles the state of the replay buffer output.\n\n\nSwitch-OBSReplayBuffer calls the OBS WebSocket with a request of type ToggleReplayBuffer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglereplaybuffer" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSReplayBuffer" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Switch-OBSStream.json b/docs/_data/Help/Switch-OBSStream.json new file mode 100644 index 000000000..3764dc799 --- /dev/null +++ b/docs/_data/Help/Switch-OBSStream.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSStream : ToggleStream", + "Description": "Toggles the status of the stream output.\n\n\nSwitch-OBSStream calls the OBS WebSocket with a request of type ToggleStream.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglestream" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSStream" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Switch-OBSVirtualCam.json b/docs/_data/Help/Switch-OBSVirtualCam.json new file mode 100644 index 000000000..9b7ce61cb --- /dev/null +++ b/docs/_data/Help/Switch-OBSVirtualCam.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSVirtualCam : ToggleVirtualCam", + "Description": "Toggles the state of the virtualcam output.\n\n\nSwitch-OBSVirtualCam calls the OBS WebSocket with a request of type ToggleVirtualCam.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglevirtualcam" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSVirtualCam" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/Watch-OBS.json b/docs/_data/Help/Watch-OBS.json new file mode 100644 index 000000000..ce62fed63 --- /dev/null +++ b/docs/_data/Help/Watch-OBS.json @@ -0,0 +1,47 @@ +{ + "Synopsis": "Watches OBS", + "Description": "Watches the OBS websocket for events.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + null, + null + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Watch-OBS -WebSocketToken 12345 # Obviously, replace this with your password." + }, + { + "Title": "EXAMPLE 2", + "Markdown": "", + "Code": "Watch-OBS # If you turn off authentication on OBS" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.BroadcastCustomEvent.json b/docs/_data/Help/obs.powershell.websocket.BroadcastCustomEvent.json new file mode 100644 index 000000000..19b946e89 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.BroadcastCustomEvent.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSCustomEvent : BroadcastCustomEvent", + "Description": "Broadcasts a `CustomEvent` to all WebSocket clients. Receivers are clients which are identified and subscribed.\n\n\nSend-OBSCustomEvent calls the OBS WebSocket with a request of type BroadcastCustomEvent.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#broadcastcustomevent" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.CallVendorRequest.json b/docs/_data/Help/obs.powershell.websocket.CallVendorRequest.json new file mode 100644 index 000000000..e3939a498 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.CallVendorRequest.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSCallVendorRequest : CallVendorRequest", + "Description": "Call a request registered to a vendor.\n\nA vendor is a unique name registered by a third-party plugin or script, which allows for custom requests and events to be added to obs-websocket.\nIf a plugin or script implements vendor requests or events, documentation is expected to be provided with them.\n\n\nSend-OBSCallVendorRequest calls the OBS WebSocket with a request of type CallVendorRequest.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#callvendorrequest" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.CreateInput.json b/docs/_data/Help/obs.powershell.websocket.CreateInput.json new file mode 100644 index 000000000..8da924e11 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.CreateInput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSInput : CreateInput", + "Description": "Creates a new input, adding it as a scene item to the specified scene.\n\n\nAdd-OBSInput calls the OBS WebSocket with a request of type CreateInput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createinput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.CreateProfile.json b/docs/_data/Help/obs.powershell.websocket.CreateProfile.json new file mode 100644 index 000000000..ba931c320 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.CreateProfile.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSProfile : CreateProfile", + "Description": "Creates a new profile, switching to it in the process\n\n\nAdd-OBSProfile calls the OBS WebSocket with a request of type CreateProfile.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createprofile" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.CreateScene.json b/docs/_data/Help/obs.powershell.websocket.CreateScene.json new file mode 100644 index 000000000..18fd556b0 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.CreateScene.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSScene : CreateScene", + "Description": "Creates a new scene in OBS.\n\n\nAdd-OBSScene calls the OBS WebSocket with a request of type CreateScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscene" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.CreateSceneCollection.json b/docs/_data/Help/obs.powershell.websocket.CreateSceneCollection.json new file mode 100644 index 000000000..b7e0b3348 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.CreateSceneCollection.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSSceneCollection : CreateSceneCollection", + "Description": "Creates a new scene collection, switching to it in the process.\n\nNote: This will block until the collection has finished changing.\n\n\nAdd-OBSSceneCollection calls the OBS WebSocket with a request of type CreateSceneCollection.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscenecollection" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.CreateSceneItem.json b/docs/_data/Help/obs.powershell.websocket.CreateSceneItem.json new file mode 100644 index 000000000..449e42cd0 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.CreateSceneItem.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSSceneItem : CreateSceneItem", + "Description": "Creates a new scene item using a source.\n\nScenes only\n\n\nAdd-OBSSceneItem calls the OBS WebSocket with a request of type CreateSceneItem.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.CreateSourceFilter.json b/docs/_data/Help/obs.powershell.websocket.CreateSourceFilter.json new file mode 100644 index 000000000..deb82ea07 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.CreateSourceFilter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Add-OBSSourceFilter : CreateSourceFilter", + "Description": "Creates a new filter, adding it to the specified source.\n\n\nAdd-OBSSourceFilter calls the OBS WebSocket with a request of type CreateSourceFilter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsourcefilter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.DuplicateSceneItem.json b/docs/_data/Help/obs.powershell.websocket.DuplicateSceneItem.json new file mode 100644 index 000000000..f7eef3b83 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.DuplicateSceneItem.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Copy-OBSSceneItem : DuplicateSceneItem", + "Description": "Duplicates a scene item, copying all transform and crop info.\n\nScenes only\n\n\nCopy-OBSSceneItem calls the OBS WebSocket with a request of type DuplicateSceneItem.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#duplicatesceneitem" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetCurrentPreviewScene.json b/docs/_data/Help/obs.powershell.websocket.GetCurrentPreviewScene.json new file mode 100644 index 000000000..b43b28342 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetCurrentPreviewScene.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSCurrentPreviewScene : GetCurrentPreviewScene", + "Description": "Gets the current preview scene.\n\nOnly available when studio mode is enabled.\n\nNote: This request is slated to have the `currentPreview`-prefixed fields removed from in an upcoming RPC version.\n\n\nGet-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type GetCurrentPreviewScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentpreviewscene" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSCurrentPreviewScene" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetCurrentProgramScene.json b/docs/_data/Help/obs.powershell.websocket.GetCurrentProgramScene.json new file mode 100644 index 000000000..94add3940 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetCurrentProgramScene.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSCurrentProgramScene : GetCurrentProgramScene", + "Description": "Gets the current program scene.\n\nNote: This request is slated to have the `currentProgram`-prefixed fields removed from in an upcoming RPC version.\n\n\nGet-OBSCurrentProgramScene calls the OBS WebSocket with a request of type GetCurrentProgramScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentprogramscene" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSCurrentProgramScene" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetCurrentSceneTransition.json b/docs/_data/Help/obs.powershell.websocket.GetCurrentSceneTransition.json new file mode 100644 index 000000000..e48a69c6a --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetCurrentSceneTransition.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSCurrentSceneTransition : GetCurrentSceneTransition", + "Description": "Gets information about the current scene transition.\n\n\nGet-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type GetCurrentSceneTransition.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransition" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSCurrentSceneTransition" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetCurrentSceneTransitionCursor.json b/docs/_data/Help/obs.powershell.websocket.GetCurrentSceneTransitionCursor.json new file mode 100644 index 000000000..fe3160b45 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetCurrentSceneTransitionCursor.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSCurrentSceneTransitionCursor : GetCurrentSceneTransitionCursor", + "Description": "Gets the cursor position of the current scene transition.\n\nNote: `transitionCursor` will return 1.0 when the transition is inactive.\n\n\nGet-OBSCurrentSceneTransitionCursor calls the OBS WebSocket with a request of type GetCurrentSceneTransitionCursor.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransitioncursor" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSCurrentSceneTransitionCursor" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetGroupList.json b/docs/_data/Help/obs.powershell.websocket.GetGroupList.json new file mode 100644 index 000000000..da8d3ac58 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetGroupList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSGroup : GetGroupList", + "Description": "Gets an array of all groups in OBS.\n\nGroups in OBS are actually scenes, but renamed and modified. In obs-websocket, we treat them as scenes where we can.\n\n\nGet-OBSGroup calls the OBS WebSocket with a request of type GetGroupList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgrouplist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSGroup" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetGroupSceneItemList.json b/docs/_data/Help/obs.powershell.websocket.GetGroupSceneItemList.json new file mode 100644 index 000000000..aad67fa45 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetGroupSceneItemList.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSGroupSceneItem : GetGroupSceneItemList", + "Description": "Basically GetSceneItemList, but for groups.\n\nUsing groups at all in OBS is discouraged, as they are very broken under the hood. Please use nested scenes instead.\n\nGroups only\n\n\nGet-OBSGroupSceneItem calls the OBS WebSocket with a request of type GetGroupSceneItemList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgroupsceneitemlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetHotkeyList.json b/docs/_data/Help/obs.powershell.websocket.GetHotkeyList.json new file mode 100644 index 000000000..1cfc31a8f --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetHotkeyList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSHotkey : GetHotkeyList", + "Description": "Gets an array of all hotkey names in OBS.\n\nNote: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests.\n\n\nGet-OBSHotkey calls the OBS WebSocket with a request of type GetHotkeyList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gethotkeylist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSHotkey" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputAudioBalance.json b/docs/_data/Help/obs.powershell.websocket.GetInputAudioBalance.json new file mode 100644 index 000000000..a0bf0858b --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputAudioBalance.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputAudioBalance : GetInputAudioBalance", + "Description": "Gets the audio balance of an input.\n\n\nGet-OBSInputAudioBalance calls the OBS WebSocket with a request of type GetInputAudioBalance.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiobalance" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputAudioMonitorType.json b/docs/_data/Help/obs.powershell.websocket.GetInputAudioMonitorType.json new file mode 100644 index 000000000..a44f32cb6 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputAudioMonitorType.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputAudioMonitorType : GetInputAudioMonitorType", + "Description": "Gets the audio monitor type of an input.\n\nThe available audio monitor types are:\n\n- `OBS_MONITORING_TYPE_NONE`\n- `OBS_MONITORING_TYPE_MONITOR_ONLY`\n- `OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT`\n\n\nGet-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type GetInputAudioMonitorType.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiomonitortype" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputAudioSyncOffset.json b/docs/_data/Help/obs.powershell.websocket.GetInputAudioSyncOffset.json new file mode 100644 index 000000000..4e7dddb57 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputAudioSyncOffset.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputAudioSyncOffset : GetInputAudioSyncOffset", + "Description": "Gets the audio sync offset of an input.\n\nNote: The audio sync offset can be negative too!\n\n\nGet-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type GetInputAudioSyncOffset.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiosyncoffset" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputAudioTracks.json b/docs/_data/Help/obs.powershell.websocket.GetInputAudioTracks.json new file mode 100644 index 000000000..ce62e8548 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputAudioTracks.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputAudioTracks : GetInputAudioTracks", + "Description": "Gets the enable state of all audio tracks of an input.\n\n\nGet-OBSInputAudioTracks calls the OBS WebSocket with a request of type GetInputAudioTracks.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiotracks" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputDefaultSettings.json b/docs/_data/Help/obs.powershell.websocket.GetInputDefaultSettings.json new file mode 100644 index 000000000..f3cf78157 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputDefaultSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputDefaultSettings : GetInputDefaultSettings", + "Description": "Gets the default settings for an input kind.\n\n\nGet-OBSInputDefaultSettings calls the OBS WebSocket with a request of type GetInputDefaultSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputdefaultsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputKindList.json b/docs/_data/Help/obs.powershell.websocket.GetInputKindList.json new file mode 100644 index 000000000..2774bd13e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputKindList.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputKind : GetInputKindList", + "Description": "Gets an array of all available input kinds in OBS.\n\n\nGet-OBSInputKind calls the OBS WebSocket with a request of type GetInputKindList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputkindlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputList.json b/docs/_data/Help/obs.powershell.websocket.GetInputList.json new file mode 100644 index 000000000..75167e000 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputList.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInput : GetInputList", + "Description": "Gets an array of all inputs in OBS.\n\n\nGet-OBSInput calls the OBS WebSocket with a request of type GetInputList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputMute.json b/docs/_data/Help/obs.powershell.websocket.GetInputMute.json new file mode 100644 index 000000000..4d2cf61d1 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputMute.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputMute : GetInputMute", + "Description": "Gets the audio mute state of an input.\n\n\nGet-OBSInputMute calls the OBS WebSocket with a request of type GetInputMute.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputmute" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputPropertiesListPropertyItems.json b/docs/_data/Help/obs.powershell.websocket.GetInputPropertiesListPropertyItems.json new file mode 100644 index 000000000..a20a903a7 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputPropertiesListPropertyItems.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputPropertiesListPropertyItems : GetInputPropertiesListPropertyItems", + "Description": "Gets the items of a list property from an input's properties.\n\nNote: Use this in cases where an input provides a dynamic, selectable list of items. For example, display capture, where it provides a list of available displays.\n\n\nGet-OBSInputPropertiesListPropertyItems calls the OBS WebSocket with a request of type GetInputPropertiesListPropertyItems.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputpropertieslistpropertyitems" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputSettings.json b/docs/_data/Help/obs.powershell.websocket.GetInputSettings.json new file mode 100644 index 000000000..49e1507d8 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputSettings : GetInputSettings", + "Description": "Gets the settings of an input.\n\nNote: Does not include defaults. To create the entire settings object, overlay `inputSettings` over the `defaultInputSettings` provided by `GetInputDefaultSettings`.\n\n\nGet-OBSInputSettings calls the OBS WebSocket with a request of type GetInputSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetInputVolume.json b/docs/_data/Help/obs.powershell.websocket.GetInputVolume.json new file mode 100644 index 000000000..c39c227db --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetInputVolume.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSInputVolume : GetInputVolume", + "Description": "Gets the current volume setting of an input.\n\n\nGet-OBSInputVolume calls the OBS WebSocket with a request of type GetInputVolume.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputvolume" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetLastReplayBufferReplay.json b/docs/_data/Help/obs.powershell.websocket.GetLastReplayBufferReplay.json new file mode 100644 index 000000000..a09404aaa --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetLastReplayBufferReplay.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSLastReplayBufferReplay : GetLastReplayBufferReplay", + "Description": "Gets the filename of the last replay buffer save file.\n\n\nGet-OBSLastReplayBufferReplay calls the OBS WebSocket with a request of type GetLastReplayBufferReplay.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getlastreplaybufferreplay" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSLastReplayBufferReplay" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetMediaInputStatus.json b/docs/_data/Help/obs.powershell.websocket.GetMediaInputStatus.json new file mode 100644 index 000000000..68173d2d5 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetMediaInputStatus.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSMediaInputStatus : GetMediaInputStatus", + "Description": "Gets the status of a media input.\n\nMedia States:\n\n- `OBS_MEDIA_STATE_NONE`\n- `OBS_MEDIA_STATE_PLAYING`\n- `OBS_MEDIA_STATE_OPENING`\n- `OBS_MEDIA_STATE_BUFFERING`\n- `OBS_MEDIA_STATE_PAUSED`\n- `OBS_MEDIA_STATE_STOPPED`\n- `OBS_MEDIA_STATE_ENDED`\n- `OBS_MEDIA_STATE_ERROR`\n\n\nGet-OBSMediaInputStatus calls the OBS WebSocket with a request of type GetMediaInputStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmediainputstatus" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetMonitorList.json b/docs/_data/Help/obs.powershell.websocket.GetMonitorList.json new file mode 100644 index 000000000..222d79896 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetMonitorList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSMonitor : GetMonitorList", + "Description": "Gets a list of connected monitors and information about them.\n\n\nGet-OBSMonitor calls the OBS WebSocket with a request of type GetMonitorList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmonitorlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSMonitor" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetOutputList.json b/docs/_data/Help/obs.powershell.websocket.GetOutputList.json new file mode 100644 index 000000000..dceabe56f --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetOutputList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSOutput : GetOutputList", + "Description": "Gets the list of available outputs.\n\n\nGet-OBSOutput calls the OBS WebSocket with a request of type GetOutputList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSOutput" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetOutputSettings.json b/docs/_data/Help/obs.powershell.websocket.GetOutputSettings.json new file mode 100644 index 000000000..2045b742e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetOutputSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSOutputSettings : GetOutputSettings", + "Description": "Gets the settings of an output.\n\n\nGet-OBSOutputSettings calls the OBS WebSocket with a request of type GetOutputSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetOutputStatus.json b/docs/_data/Help/obs.powershell.websocket.GetOutputStatus.json new file mode 100644 index 000000000..3ada79716 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetOutputStatus.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSOutputStatus : GetOutputStatus", + "Description": "Gets the status of an output.\n\n\nGet-OBSOutputStatus calls the OBS WebSocket with a request of type GetOutputStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputstatus" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetPersistentData.json b/docs/_data/Help/obs.powershell.websocket.GetPersistentData.json new file mode 100644 index 000000000..0c4ebfef0 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetPersistentData.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSPersistentData : GetPersistentData", + "Description": "Gets the value of a \"slot\" from the selected persistent data realm.\n\n\nGet-OBSPersistentData calls the OBS WebSocket with a request of type GetPersistentData.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getpersistentdata" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetProfileList.json b/docs/_data/Help/obs.powershell.websocket.GetProfileList.json new file mode 100644 index 000000000..7d0cd691e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetProfileList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSProfile : GetProfileList", + "Description": "Gets an array of all profiles\n\n\nGet-OBSProfile calls the OBS WebSocket with a request of type GetProfileList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofilelist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSProfile" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetProfileParameter.json b/docs/_data/Help/obs.powershell.websocket.GetProfileParameter.json new file mode 100644 index 000000000..8ecd4fb2e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetProfileParameter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSProfileParameter : GetProfileParameter", + "Description": "Gets a parameter from the current profile's configuration.\n\n\nGet-OBSProfileParameter calls the OBS WebSocket with a request of type GetProfileParameter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofileparameter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetRecordDirectory.json b/docs/_data/Help/obs.powershell.websocket.GetRecordDirectory.json new file mode 100644 index 000000000..40bcc9246 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetRecordDirectory.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSRecordDirectory : GetRecordDirectory", + "Description": "Gets the current directory that the record output is set to.\n\n\nGet-OBSRecordDirectory calls the OBS WebSocket with a request of type GetRecordDirectory.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecorddirectory" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSRecordDirectory" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetRecordStatus.json b/docs/_data/Help/obs.powershell.websocket.GetRecordStatus.json new file mode 100644 index 000000000..a653ce70e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetRecordStatus.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSRecordStatus : GetRecordStatus", + "Description": "Gets the status of the record output.\n\n\nGet-OBSRecordStatus calls the OBS WebSocket with a request of type GetRecordStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecordstatus" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSRecordStatus" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetReplayBufferStatus.json b/docs/_data/Help/obs.powershell.websocket.GetReplayBufferStatus.json new file mode 100644 index 000000000..01ee56f61 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetReplayBufferStatus.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSReplayBufferStatus : GetReplayBufferStatus", + "Description": "Gets the status of the replay buffer output.\n\n\nGet-OBSReplayBufferStatus calls the OBS WebSocket with a request of type GetReplayBufferStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getreplaybufferstatus" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSReplayBufferStatus" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneCollectionList.json b/docs/_data/Help/obs.powershell.websocket.GetSceneCollectionList.json new file mode 100644 index 000000000..76e87627a --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneCollectionList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSSceneCollection : GetSceneCollectionList", + "Description": "Gets an array of all scene collections\n\n\nGet-OBSSceneCollection calls the OBS WebSocket with a request of type GetSceneCollectionList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenecollectionlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSSceneCollection" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneItemBlendMode.json b/docs/_data/Help/obs.powershell.websocket.GetSceneItemBlendMode.json new file mode 100644 index 000000000..4c33df294 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneItemBlendMode.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemBlendMode : GetSceneItemBlendMode", + "Description": "Gets the blend mode of a scene item.\n\nBlend modes:\n\n- `OBS_BLEND_NORMAL`\n- `OBS_BLEND_ADDITIVE`\n- `OBS_BLEND_SUBTRACT`\n- `OBS_BLEND_SCREEN`\n- `OBS_BLEND_MULTIPLY`\n- `OBS_BLEND_LIGHTEN`\n- `OBS_BLEND_DARKEN`\n\nScenes and Groups\n\n\nGet-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type GetSceneItemBlendMode.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemblendmode" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneItemEnabled.json b/docs/_data/Help/obs.powershell.websocket.GetSceneItemEnabled.json new file mode 100644 index 000000000..621b87202 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneItemEnabled.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemEnabled : GetSceneItemEnabled", + "Description": "Gets the enable state of a scene item.\n\nScenes and Groups\n\n\nGet-OBSSceneItemEnabled calls the OBS WebSocket with a request of type GetSceneItemEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemenabled" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneItemId.json b/docs/_data/Help/obs.powershell.websocket.GetSceneItemId.json new file mode 100644 index 000000000..e04e18bf0 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneItemId.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemId : GetSceneItemId", + "Description": "Searches a scene for a source, and returns its id.\n\nScenes and Groups\n\n\nGet-OBSSceneItemId calls the OBS WebSocket with a request of type GetSceneItemId.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemid" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneItemIndex.json b/docs/_data/Help/obs.powershell.websocket.GetSceneItemIndex.json new file mode 100644 index 000000000..6e42c172a --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneItemIndex.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemIndex : GetSceneItemIndex", + "Description": "Gets the index position of a scene item in a scene.\n\nAn index of 0 is at the bottom of the source list in the UI.\n\nScenes and Groups\n\n\nGet-OBSSceneItemIndex calls the OBS WebSocket with a request of type GetSceneItemIndex.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemindex" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneItemList.json b/docs/_data/Help/obs.powershell.websocket.GetSceneItemList.json new file mode 100644 index 000000000..5e8f92cc4 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneItemList.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItem : GetSceneItemList", + "Description": "Gets a list of all scene items in a scene.\n\nScenes only\n\n\nGet-OBSSceneItem calls the OBS WebSocket with a request of type GetSceneItemList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneItemLocked.json b/docs/_data/Help/obs.powershell.websocket.GetSceneItemLocked.json new file mode 100644 index 000000000..56b213ea4 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneItemLocked.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemLocked : GetSceneItemLocked", + "Description": "Gets the lock state of a scene item.\n\nScenes and Groups\n\n\nGet-OBSSceneItemLocked calls the OBS WebSocket with a request of type GetSceneItemLocked.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlocked" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneItemSource.json b/docs/_data/Help/obs.powershell.websocket.GetSceneItemSource.json new file mode 100644 index 000000000..64f5da3a0 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneItemSource.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemSource : GetSceneItemSource", + "Description": "Gets the source associated with a scene item.\n\n\nGet-OBSSceneItemSource calls the OBS WebSocket with a request of type GetSceneItemSource.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneItemTransform.json b/docs/_data/Help/obs.powershell.websocket.GetSceneItemTransform.json new file mode 100644 index 000000000..97e2d954e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneItemTransform.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneItemTransform : GetSceneItemTransform", + "Description": "Gets the transform and crop info of a scene item.\n\nScenes and Groups\n\n\nGet-OBSSceneItemTransform calls the OBS WebSocket with a request of type GetSceneItemTransform.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemtransform" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneList.json b/docs/_data/Help/obs.powershell.websocket.GetSceneList.json new file mode 100644 index 000000000..8be5c3b01 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSScene : GetSceneList", + "Description": "Gets an array of all scenes in OBS.\n\n\nGet-OBSScene calls the OBS WebSocket with a request of type GetSceneList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenelist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSScene" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneSceneTransitionOverride.json b/docs/_data/Help/obs.powershell.websocket.GetSceneSceneTransitionOverride.json new file mode 100644 index 000000000..4f0e8ef18 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneSceneTransitionOverride.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSceneSceneTransitionOverride : GetSceneSceneTransitionOverride", + "Description": "Gets the scene transition overridden for a scene.\n\nNote: A transition UUID response field is not currently able to be implemented as of 2024-1-18.\n\n\nGet-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type GetSceneSceneTransitionOverride.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenescenetransitionoverride" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSceneTransitionList.json b/docs/_data/Help/obs.powershell.websocket.GetSceneTransitionList.json new file mode 100644 index 000000000..d2d6c77ea --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSceneTransitionList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSSceneTransition : GetSceneTransitionList", + "Description": "Gets an array of all scene transitions in OBS.\n\n\nGet-OBSSceneTransition calls the OBS WebSocket with a request of type GetSceneTransitionList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenetransitionlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSSceneTransition" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSourceActive.json b/docs/_data/Help/obs.powershell.websocket.GetSourceActive.json new file mode 100644 index 000000000..a45d5096e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSourceActive.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceActive : GetSourceActive", + "Description": "Gets the active and show state of a source.\n\n**Compatible with inputs and scenes.**\n\n\nGet-OBSSourceActive calls the OBS WebSocket with a request of type GetSourceActive.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourceactive" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSourceFilter.json b/docs/_data/Help/obs.powershell.websocket.GetSourceFilter.json new file mode 100644 index 000000000..d8589e082 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSourceFilter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceFilter : GetSourceFilter", + "Description": "Gets the info for a specific source filter.\n\n\nGet-OBSSourceFilter calls the OBS WebSocket with a request of type GetSourceFilter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSourceFilterDefaultSettings.json b/docs/_data/Help/obs.powershell.websocket.GetSourceFilterDefaultSettings.json new file mode 100644 index 000000000..a08aabdfb --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSourceFilterDefaultSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceFilterDefaultSettings : GetSourceFilterDefaultSettings", + "Description": "Gets the default settings for a filter kind.\n\n\nGet-OBSSourceFilterDefaultSettings calls the OBS WebSocket with a request of type GetSourceFilterDefaultSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterdefaultsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSourceFilterKindList.json b/docs/_data/Help/obs.powershell.websocket.GetSourceFilterKindList.json new file mode 100644 index 000000000..803939ba3 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSourceFilterKindList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSSourceFilterKind : GetSourceFilterKindList", + "Description": "Gets an array of all available source filter kinds.\n\nSimilar to `GetInputKindList`\n\n\nGet-OBSSourceFilterKind calls the OBS WebSocket with a request of type GetSourceFilterKindList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSSourceFilterKind" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSourceFilterList.json b/docs/_data/Help/obs.powershell.websocket.GetSourceFilterList.json new file mode 100644 index 000000000..48a148103 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSourceFilterList.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceFilterList : GetSourceFilterList", + "Description": "Gets an array of all of a source's filters.\n\n\nGet-OBSSourceFilterList calls the OBS WebSocket with a request of type GetSourceFilterList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterlist" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSourceScreenshot.json b/docs/_data/Help/obs.powershell.websocket.GetSourceScreenshot.json new file mode 100644 index 000000000..9e60ff7e4 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSourceScreenshot.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Get-OBSSourceScreenshot : GetSourceScreenshot", + "Description": "Gets a Base64-encoded screenshot of a source.\n\nThe `imageWidth` and `imageHeight` parameters are treated as \"scale to inner\", meaning the smallest ratio will be used and the aspect ratio of the original resolution is kept.\nIf `imageWidth` and `imageHeight` are not specified, the compressed image will use the full resolution of the source.\n\n**Compatible with inputs and scenes.**\n\n\nGet-OBSSourceScreenshot calls the OBS WebSocket with a request of type GetSourceScreenshot.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcescreenshot" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetSpecialInputs.json b/docs/_data/Help/obs.powershell.websocket.GetSpecialInputs.json new file mode 100644 index 000000000..831f76ca5 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetSpecialInputs.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSSpecialInputs : GetSpecialInputs", + "Description": "Gets the names of all special inputs.\n\n\nGet-OBSSpecialInputs calls the OBS WebSocket with a request of type GetSpecialInputs.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getspecialinputs" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSSpecialInputs" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetStats.json b/docs/_data/Help/obs.powershell.websocket.GetStats.json new file mode 100644 index 000000000..11e6051aa --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetStats.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSStats : GetStats", + "Description": "Gets statistics about OBS, obs-websocket, and the current session.\n\n\nGet-OBSStats calls the OBS WebSocket with a request of type GetStats.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstats" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSStats" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetStreamServiceSettings.json b/docs/_data/Help/obs.powershell.websocket.GetStreamServiceSettings.json new file mode 100644 index 000000000..a23e50331 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetStreamServiceSettings.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSStreamServiceSettings : GetStreamServiceSettings", + "Description": "Gets the current stream service settings (stream destination).\n\n\nGet-OBSStreamServiceSettings calls the OBS WebSocket with a request of type GetStreamServiceSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamservicesettings" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSStreamServiceSettings" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetStreamStatus.json b/docs/_data/Help/obs.powershell.websocket.GetStreamStatus.json new file mode 100644 index 000000000..368bf63f5 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetStreamStatus.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSStreamStatus : GetStreamStatus", + "Description": "Gets the status of the stream output.\n\n\nGet-OBSStreamStatus calls the OBS WebSocket with a request of type GetStreamStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamstatus" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSStreamStatus" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetStudioModeEnabled.json b/docs/_data/Help/obs.powershell.websocket.GetStudioModeEnabled.json new file mode 100644 index 000000000..446caef59 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetStudioModeEnabled.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSStudioModeEnabled : GetStudioModeEnabled", + "Description": "Gets whether studio is enabled.\n\n\nGet-OBSStudioModeEnabled calls the OBS WebSocket with a request of type GetStudioModeEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstudiomodeenabled" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSStudioModeEnabled" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetTransitionKindList.json b/docs/_data/Help/obs.powershell.websocket.GetTransitionKindList.json new file mode 100644 index 000000000..6dc953c2a --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetTransitionKindList.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSTransitionKind : GetTransitionKindList", + "Description": "Gets an array of all available transition kinds.\n\nSimilar to `GetInputKindList`\n\n\nGet-OBSTransitionKind calls the OBS WebSocket with a request of type GetTransitionKindList.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gettransitionkindlist" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSTransitionKind" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetVersion.json b/docs/_data/Help/obs.powershell.websocket.GetVersion.json new file mode 100644 index 000000000..8dc1e4c68 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetVersion.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSVersion : GetVersion", + "Description": "Gets data about the current plugin and RPC version.\n\n\nGet-OBSVersion calls the OBS WebSocket with a request of type GetVersion.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getversion" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSVersion" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetVideoSettings.json b/docs/_data/Help/obs.powershell.websocket.GetVideoSettings.json new file mode 100644 index 000000000..4bcd61a83 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetVideoSettings.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSVideoSettings : GetVideoSettings", + "Description": "Gets the current video settings.\n\nNote: To get the true FPS value, divide the FPS numerator by the FPS denominator. Example: `60000/1001`\n\n\nGet-OBSVideoSettings calls the OBS WebSocket with a request of type GetVideoSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvideosettings" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSVideoSettings" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.GetVirtualCamStatus.json b/docs/_data/Help/obs.powershell.websocket.GetVirtualCamStatus.json new file mode 100644 index 000000000..0591fdfa8 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.GetVirtualCamStatus.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Get-OBSVirtualCamStatus : GetVirtualCamStatus", + "Description": "Gets the status of the virtualcam output.\n\n\nGet-OBSVirtualCamStatus calls the OBS WebSocket with a request of type GetVirtualCamStatus.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvirtualcamstatus" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Get-OBSVirtualCamStatus" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.OffsetMediaInputCursor.json b/docs/_data/Help/obs.powershell.websocket.OffsetMediaInputCursor.json new file mode 100644 index 000000000..ad3ebe5ab --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.OffsetMediaInputCursor.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSOffsetMediaInputCursor : OffsetMediaInputCursor", + "Description": "Offsets the current cursor position of a media input by the specified value.\n\nThis request does not perform bounds checking of the cursor position.\n\n\nSend-OBSOffsetMediaInputCursor calls the OBS WebSocket with a request of type OffsetMediaInputCursor.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#offsetmediainputcursor" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.OpenInputFiltersDialog.json b/docs/_data/Help/obs.powershell.websocket.OpenInputFiltersDialog.json new file mode 100644 index 000000000..5aefb71c1 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.OpenInputFiltersDialog.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSInputFiltersDialog : OpenInputFiltersDialog", + "Description": "Opens the filters dialog of an input.\n\n\nOpen-OBSInputFiltersDialog calls the OBS WebSocket with a request of type OpenInputFiltersDialog.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputfiltersdialog" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.OpenInputInteractDialog.json b/docs/_data/Help/obs.powershell.websocket.OpenInputInteractDialog.json new file mode 100644 index 000000000..7f7176f4b --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.OpenInputInteractDialog.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSInputInteractDialog : OpenInputInteractDialog", + "Description": "Opens the interact dialog of an input.\n\n\nOpen-OBSInputInteractDialog calls the OBS WebSocket with a request of type OpenInputInteractDialog.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputinteractdialog" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.OpenInputPropertiesDialog.json b/docs/_data/Help/obs.powershell.websocket.OpenInputPropertiesDialog.json new file mode 100644 index 000000000..63667431c --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.OpenInputPropertiesDialog.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSInputPropertiesDialog : OpenInputPropertiesDialog", + "Description": "Opens the properties dialog of an input.\n\n\nOpen-OBSInputPropertiesDialog calls the OBS WebSocket with a request of type OpenInputPropertiesDialog.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputpropertiesdialog" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.OpenSourceProjector.json b/docs/_data/Help/obs.powershell.websocket.OpenSourceProjector.json new file mode 100644 index 000000000..e36288136 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.OpenSourceProjector.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSSourceProjector : OpenSourceProjector", + "Description": "Opens a projector for a source.\n\nNote: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release.\n\n\nOpen-OBSSourceProjector calls the OBS WebSocket with a request of type OpenSourceProjector.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#opensourceprojector" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.OpenVideoMixProjector.json b/docs/_data/Help/obs.powershell.websocket.OpenVideoMixProjector.json new file mode 100644 index 000000000..e70e977db --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.OpenVideoMixProjector.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Open-OBSVideoMixProjector : OpenVideoMixProjector", + "Description": "Opens a projector for a specific output video mix.\n\nMix types:\n\n- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PREVIEW`\n- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PROGRAM`\n- `OBS_WEBSOCKET_VIDEO_MIX_TYPE_MULTIVIEW`\n\nNote: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release.\n\n\nOpen-OBSVideoMixProjector calls the OBS WebSocket with a request of type OpenVideoMixProjector.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openvideomixprojector" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.PauseRecord.json b/docs/_data/Help/obs.powershell.websocket.PauseRecord.json new file mode 100644 index 000000000..491a063d4 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.PauseRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Send-OBSPauseRecord : PauseRecord", + "Description": "Pauses the record output.\n\n\nSend-OBSPauseRecord calls the OBS WebSocket with a request of type PauseRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pauserecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Send-OBSPauseRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.PressInputPropertiesButton.json b/docs/_data/Help/obs.powershell.websocket.PressInputPropertiesButton.json new file mode 100644 index 000000000..9083e5aea --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.PressInputPropertiesButton.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSPressInputPropertiesButton : PressInputPropertiesButton", + "Description": "Presses a button in the properties of an input.\n\nSome known `propertyName` values are:\n\n- `refreshnocache` - Browser source reload button\n\nNote: Use this in cases where there is a button in the properties of an input that cannot be accessed in any other way. For example, browser sources, where there is a refresh button.\n\n\nSend-OBSPressInputPropertiesButton calls the OBS WebSocket with a request of type PressInputPropertiesButton.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pressinputpropertiesbutton" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.RemoveInput.json b/docs/_data/Help/obs.powershell.websocket.RemoveInput.json new file mode 100644 index 000000000..50e5dd762 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.RemoveInput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSInput : RemoveInput", + "Description": "Removes an existing input.\n\nNote: Will immediately remove all associated scene items.\n\n\nRemove-OBSInput calls the OBS WebSocket with a request of type RemoveInput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeinput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.RemoveProfile.json b/docs/_data/Help/obs.powershell.websocket.RemoveProfile.json new file mode 100644 index 000000000..67206fcbe --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.RemoveProfile.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSProfile : RemoveProfile", + "Description": "Removes a profile. If the current profile is chosen, it will change to a different profile first.\n\n\nRemove-OBSProfile calls the OBS WebSocket with a request of type RemoveProfile.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeprofile" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.RemoveScene.json b/docs/_data/Help/obs.powershell.websocket.RemoveScene.json new file mode 100644 index 000000000..65abc9777 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.RemoveScene.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSScene : RemoveScene", + "Description": "Removes a scene from OBS.\n\n\nRemove-OBSScene calls the OBS WebSocket with a request of type RemoveScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removescene" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.RemoveSceneItem.json b/docs/_data/Help/obs.powershell.websocket.RemoveSceneItem.json new file mode 100644 index 000000000..9389206ea --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.RemoveSceneItem.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSSceneItem : RemoveSceneItem", + "Description": "Removes a scene item from a scene.\n\nScenes only\n\n\nRemove-OBSSceneItem calls the OBS WebSocket with a request of type RemoveSceneItem.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesceneitem" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.RemoveSourceFilter.json b/docs/_data/Help/obs.powershell.websocket.RemoveSourceFilter.json new file mode 100644 index 000000000..616566669 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.RemoveSourceFilter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Remove-OBSSourceFilter : RemoveSourceFilter", + "Description": "Removes a filter from a source.\n\n\nRemove-OBSSourceFilter calls the OBS WebSocket with a request of type RemoveSourceFilter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesourcefilter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.ResumeRecord.json b/docs/_data/Help/obs.powershell.websocket.ResumeRecord.json new file mode 100644 index 000000000..69558d735 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.ResumeRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Resume-OBSRecord : ResumeRecord", + "Description": "Resumes the record output.\n\n\nResume-OBSRecord calls the OBS WebSocket with a request of type ResumeRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#resumerecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Resume-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SaveReplayBuffer.json b/docs/_data/Help/obs.powershell.websocket.SaveReplayBuffer.json new file mode 100644 index 000000000..ab364b8f0 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SaveReplayBuffer.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Save-OBSReplayBuffer : SaveReplayBuffer", + "Description": "Saves the contents of the replay buffer output.\n\n\nSave-OBSReplayBuffer calls the OBS WebSocket with a request of type SaveReplayBuffer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savereplaybuffer" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Save-OBSReplayBuffer" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SaveSourceScreenshot.json b/docs/_data/Help/obs.powershell.websocket.SaveSourceScreenshot.json new file mode 100644 index 000000000..c5cdd47fd --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SaveSourceScreenshot.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Save-OBSSourceScreenshot : SaveSourceScreenshot", + "Description": "Saves a screenshot of a source to the filesystem.\n\nThe `imageWidth` and `imageHeight` parameters are treated as \"scale to inner\", meaning the smallest ratio will be used and the aspect ratio of the original resolution is kept.\nIf `imageWidth` and `imageHeight` are not specified, the compressed image will use the full resolution of the source.\n\n**Compatible with inputs and scenes.**\n\n\nSave-OBSSourceScreenshot calls the OBS WebSocket with a request of type SaveSourceScreenshot.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savesourcescreenshot" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SendStreamCaption.json b/docs/_data/Help/obs.powershell.websocket.SendStreamCaption.json new file mode 100644 index 000000000..9553cca0d --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SendStreamCaption.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSStreamCaption : SendStreamCaption", + "Description": "Sends CEA-608 caption text over the stream output.\n\n\nSend-OBSStreamCaption calls the OBS WebSocket with a request of type SendStreamCaption.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sendstreamcaption" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetCurrentPreviewScene.json b/docs/_data/Help/obs.powershell.websocket.SetCurrentPreviewScene.json new file mode 100644 index 000000000..eb2470d69 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetCurrentPreviewScene.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentPreviewScene : SetCurrentPreviewScene", + "Description": "Sets the current preview scene.\n\nOnly available when studio mode is enabled.\n\n\nSet-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type SetCurrentPreviewScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentpreviewscene" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetCurrentProfile.json b/docs/_data/Help/obs.powershell.websocket.SetCurrentProfile.json new file mode 100644 index 000000000..31e8a9800 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetCurrentProfile.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentProfile : SetCurrentProfile", + "Description": "Switches to a profile.\n\n\nSet-OBSCurrentProfile calls the OBS WebSocket with a request of type SetCurrentProfile.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprofile" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetCurrentProgramScene.json b/docs/_data/Help/obs.powershell.websocket.SetCurrentProgramScene.json new file mode 100644 index 000000000..dfd7b5e17 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetCurrentProgramScene.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentProgramScene : SetCurrentProgramScene", + "Description": "Sets the current program scene.\n\n\nSet-OBSCurrentProgramScene calls the OBS WebSocket with a request of type SetCurrentProgramScene.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprogramscene" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneCollection.json b/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneCollection.json new file mode 100644 index 000000000..393ea8d12 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneCollection.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentSceneCollection : SetCurrentSceneCollection", + "Description": "Switches to a scene collection.\n\nNote: This will block until the collection has finished changing.\n\n\nSet-OBSCurrentSceneCollection calls the OBS WebSocket with a request of type SetCurrentSceneCollection.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenecollection" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneTransition.json b/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneTransition.json new file mode 100644 index 000000000..a51a09284 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneTransition.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentSceneTransition : SetCurrentSceneTransition", + "Description": "Sets the current scene transition.\n\nSmall note: While the namespace of scene transitions is generally unique, that uniqueness is not a guarantee as it is with other resources like inputs.\n\n\nSet-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type SetCurrentSceneTransition.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransition" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneTransitionDuration.json b/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneTransitionDuration.json new file mode 100644 index 000000000..8fcf5a67d --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneTransitionDuration.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentSceneTransitionDuration : SetCurrentSceneTransitionDuration", + "Description": "Sets the duration of the current scene transition, if it is not fixed.\n\n\nSet-OBSCurrentSceneTransitionDuration calls the OBS WebSocket with a request of type SetCurrentSceneTransitionDuration.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionduration" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneTransitionSettings.json b/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneTransitionSettings.json new file mode 100644 index 000000000..91b05df62 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetCurrentSceneTransitionSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSCurrentSceneTransitionSettings : SetCurrentSceneTransitionSettings", + "Description": "Sets the settings of the current scene transition.\n\n\nSet-OBSCurrentSceneTransitionSettings calls the OBS WebSocket with a request of type SetCurrentSceneTransitionSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetInputAudioBalance.json b/docs/_data/Help/obs.powershell.websocket.SetInputAudioBalance.json new file mode 100644 index 000000000..98dac717e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetInputAudioBalance.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputAudioBalance : SetInputAudioBalance", + "Description": "Sets the audio balance of an input.\n\n\nSet-OBSInputAudioBalance calls the OBS WebSocket with a request of type SetInputAudioBalance.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiobalance" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetInputAudioMonitorType.json b/docs/_data/Help/obs.powershell.websocket.SetInputAudioMonitorType.json new file mode 100644 index 000000000..b284d6da0 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetInputAudioMonitorType.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputAudioMonitorType : SetInputAudioMonitorType", + "Description": "Sets the audio monitor type of an input.\n\n\nSet-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type SetInputAudioMonitorType.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiomonitortype" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetInputAudioSyncOffset.json b/docs/_data/Help/obs.powershell.websocket.SetInputAudioSyncOffset.json new file mode 100644 index 000000000..55ad570d0 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetInputAudioSyncOffset.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputAudioSyncOffset : SetInputAudioSyncOffset", + "Description": "Sets the audio sync offset of an input.\n\n\nSet-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type SetInputAudioSyncOffset.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiosyncoffset" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetInputAudioTracks.json b/docs/_data/Help/obs.powershell.websocket.SetInputAudioTracks.json new file mode 100644 index 000000000..973b1e245 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetInputAudioTracks.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputAudioTracks : SetInputAudioTracks", + "Description": "Sets the enable state of audio tracks of an input.\n\n\nSet-OBSInputAudioTracks calls the OBS WebSocket with a request of type SetInputAudioTracks.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiotracks" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetInputMute.json b/docs/_data/Help/obs.powershell.websocket.SetInputMute.json new file mode 100644 index 000000000..06b2e281b --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetInputMute.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputMute : SetInputMute", + "Description": "Sets the audio mute state of an input.\n\n\nSet-OBSInputMute calls the OBS WebSocket with a request of type SetInputMute.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputmute" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetInputName.json b/docs/_data/Help/obs.powershell.websocket.SetInputName.json new file mode 100644 index 000000000..746ffead7 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetInputName.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputName : SetInputName", + "Description": "Sets the name of an input (rename).\n\n\nSet-OBSInputName calls the OBS WebSocket with a request of type SetInputName.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputname" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetInputSettings.json b/docs/_data/Help/obs.powershell.websocket.SetInputSettings.json new file mode 100644 index 000000000..2ef9f5a6d --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetInputSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputSettings : SetInputSettings", + "Description": "Sets the settings of an input.\n\n\nSet-OBSInputSettings calls the OBS WebSocket with a request of type SetInputSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetInputVolume.json b/docs/_data/Help/obs.powershell.websocket.SetInputVolume.json new file mode 100644 index 000000000..d8be904e6 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetInputVolume.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSInputVolume : SetInputVolume", + "Description": "Sets the volume setting of an input.\n\n\nSet-OBSInputVolume calls the OBS WebSocket with a request of type SetInputVolume.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputvolume" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetMediaInputCursor.json b/docs/_data/Help/obs.powershell.websocket.SetMediaInputCursor.json new file mode 100644 index 000000000..035416dd2 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetMediaInputCursor.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSMediaInputCursor : SetMediaInputCursor", + "Description": "Sets the cursor position of a media input.\n\nThis request does not perform bounds checking of the cursor position.\n\n\nSet-OBSMediaInputCursor calls the OBS WebSocket with a request of type SetMediaInputCursor.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setmediainputcursor" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetOutputSettings.json b/docs/_data/Help/obs.powershell.websocket.SetOutputSettings.json new file mode 100644 index 000000000..a6b9683fc --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetOutputSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSOutputSettings : SetOutputSettings", + "Description": "Sets the settings of an output.\n\n\nSet-OBSOutputSettings calls the OBS WebSocket with a request of type SetOutputSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setoutputsettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetPersistentData.json b/docs/_data/Help/obs.powershell.websocket.SetPersistentData.json new file mode 100644 index 000000000..3aa2b426a --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetPersistentData.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSPersistentData : SetPersistentData", + "Description": "Sets the value of a \"slot\" from the selected persistent data realm.\n\n\nSet-OBSPersistentData calls the OBS WebSocket with a request of type SetPersistentData.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setpersistentdata" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetProfileParameter.json b/docs/_data/Help/obs.powershell.websocket.SetProfileParameter.json new file mode 100644 index 000000000..56f05cb3b --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetProfileParameter.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSProfileParameter : SetProfileParameter", + "Description": "Sets the value of a parameter in the current profile's configuration.\n\n\nSet-OBSProfileParameter calls the OBS WebSocket with a request of type SetProfileParameter.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setprofileparameter" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetRecordDirectory.json b/docs/_data/Help/obs.powershell.websocket.SetRecordDirectory.json new file mode 100644 index 000000000..955d00e55 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetRecordDirectory.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSRecordDirectory : SetRecordDirectory", + "Description": "Sets the current directory that the record output writes files to.\n\n\nSet-OBSRecordDirectory calls the OBS WebSocket with a request of type SetRecordDirectory.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setrecorddirectory" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSceneItemBlendMode.json b/docs/_data/Help/obs.powershell.websocket.SetSceneItemBlendMode.json new file mode 100644 index 000000000..64d3bfba2 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSceneItemBlendMode.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemBlendMode : SetSceneItemBlendMode", + "Description": "Sets the blend mode of a scene item.\n\nScenes and Groups\n\n\nSet-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type SetSceneItemBlendMode.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemblendmode" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSceneItemEnabled.json b/docs/_data/Help/obs.powershell.websocket.SetSceneItemEnabled.json new file mode 100644 index 000000000..cd9119b44 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSceneItemEnabled.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemEnabled : SetSceneItemEnabled", + "Description": "Sets the enable state of a scene item.\n\nScenes and Groups\n\n\nSet-OBSSceneItemEnabled calls the OBS WebSocket with a request of type SetSceneItemEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemenabled" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSceneItemIndex.json b/docs/_data/Help/obs.powershell.websocket.SetSceneItemIndex.json new file mode 100644 index 000000000..d09f124e4 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSceneItemIndex.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemIndex : SetSceneItemIndex", + "Description": "Sets the index position of a scene item in a scene.\n\nScenes and Groups\n\n\nSet-OBSSceneItemIndex calls the OBS WebSocket with a request of type SetSceneItemIndex.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemindex" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSceneItemLocked.json b/docs/_data/Help/obs.powershell.websocket.SetSceneItemLocked.json new file mode 100644 index 000000000..ee6666a41 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSceneItemLocked.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemLocked : SetSceneItemLocked", + "Description": "Sets the lock state of a scene item.\n\nScenes and Group\n\n\nSet-OBSSceneItemLocked calls the OBS WebSocket with a request of type SetSceneItemLocked.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemlocked" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSceneItemTransform.json b/docs/_data/Help/obs.powershell.websocket.SetSceneItemTransform.json new file mode 100644 index 000000000..732cc1c9e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSceneItemTransform.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneItemTransform : SetSceneItemTransform", + "Description": "Sets the transform and crop info of a scene item.\n\n\nSet-OBSSceneItemTransform calls the OBS WebSocket with a request of type SetSceneItemTransform.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemtransform" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSceneName.json b/docs/_data/Help/obs.powershell.websocket.SetSceneName.json new file mode 100644 index 000000000..235975402 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSceneName.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneName : SetSceneName", + "Description": "Sets the name of a scene (rename).\n\n\nSet-OBSSceneName calls the OBS WebSocket with a request of type SetSceneName.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenename" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSceneSceneTransitionOverride.json b/docs/_data/Help/obs.powershell.websocket.SetSceneSceneTransitionOverride.json new file mode 100644 index 000000000..b2d6b4ae0 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSceneSceneTransitionOverride.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSceneSceneTransitionOverride : SetSceneSceneTransitionOverride", + "Description": "Sets the scene transition overridden for a scene.\n\n\nSet-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type SetSceneSceneTransitionOverride.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenescenetransitionoverride" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSourceFilterEnabled.json b/docs/_data/Help/obs.powershell.websocket.SetSourceFilterEnabled.json new file mode 100644 index 000000000..278d25116 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSourceFilterEnabled.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSourceFilterEnabled : SetSourceFilterEnabled", + "Description": "Sets the enable state of a source filter.\n\n\nSet-OBSSourceFilterEnabled calls the OBS WebSocket with a request of type SetSourceFilterEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterenabled" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSourceFilterIndex.json b/docs/_data/Help/obs.powershell.websocket.SetSourceFilterIndex.json new file mode 100644 index 000000000..05405a53d --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSourceFilterIndex.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSourceFilterIndex : SetSourceFilterIndex", + "Description": "Sets the index position of a filter on a source.\n\n\nSet-OBSSourceFilterIndex calls the OBS WebSocket with a request of type SetSourceFilterIndex.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterindex" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSourceFilterName.json b/docs/_data/Help/obs.powershell.websocket.SetSourceFilterName.json new file mode 100644 index 000000000..50f75d34e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSourceFilterName.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSourceFilterName : SetSourceFilterName", + "Description": "Sets the name of a source filter (rename).\n\n\nSet-OBSSourceFilterName calls the OBS WebSocket with a request of type SetSourceFilterName.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltername" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetSourceFilterSettings.json b/docs/_data/Help/obs.powershell.websocket.SetSourceFilterSettings.json new file mode 100644 index 000000000..c89b80784 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetSourceFilterSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSSourceFilterSettings : SetSourceFilterSettings", + "Description": "Sets the settings of a source filter.\n\n\nSet-OBSSourceFilterSettings calls the OBS WebSocket with a request of type SetSourceFilterSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltersettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetStreamServiceSettings.json b/docs/_data/Help/obs.powershell.websocket.SetStreamServiceSettings.json new file mode 100644 index 000000000..ab8ce9f3f --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetStreamServiceSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSStreamServiceSettings : SetStreamServiceSettings", + "Description": "Sets the current stream service settings (stream destination).\n\nNote: Simple RTMP settings can be set with type `rtmp_custom` and the settings fields `server` and `key`.\n\n\nSet-OBSStreamServiceSettings calls the OBS WebSocket with a request of type SetStreamServiceSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstreamservicesettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetStudioModeEnabled.json b/docs/_data/Help/obs.powershell.websocket.SetStudioModeEnabled.json new file mode 100644 index 000000000..7344b392f --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetStudioModeEnabled.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSStudioModeEnabled : SetStudioModeEnabled", + "Description": "Enables or disables studio mode\n\n\nSet-OBSStudioModeEnabled calls the OBS WebSocket with a request of type SetStudioModeEnabled.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstudiomodeenabled" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetTBarPosition.json b/docs/_data/Help/obs.powershell.websocket.SetTBarPosition.json new file mode 100644 index 000000000..6fa044b78 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetTBarPosition.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSTBarPosition : SetTBarPosition", + "Description": "Sets the position of the TBar.\n\n**Very important note**: This will be deprecated and replaced in a future version of obs-websocket.\n\n\nSet-OBSTBarPosition calls the OBS WebSocket with a request of type SetTBarPosition.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#settbarposition" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.SetVideoSettings.json b/docs/_data/Help/obs.powershell.websocket.SetVideoSettings.json new file mode 100644 index 000000000..859a96c38 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.SetVideoSettings.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Set-OBSVideoSettings : SetVideoSettings", + "Description": "Sets the current video settings.\n\nNote: Fields must be specified in pairs. For example, you cannot set only `baseWidth` without needing to specify `baseHeight`.\n\n\nSet-OBSVideoSettings calls the OBS WebSocket with a request of type SetVideoSettings.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setvideosettings" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.Sleep.json b/docs/_data/Help/obs.powershell.websocket.Sleep.json new file mode 100644 index 000000000..2d5957186 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.Sleep.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSSleep : Sleep", + "Description": "Sleeps for a time duration or number of frames. Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`.\n\n\nSend-OBSSleep calls the OBS WebSocket with a request of type Sleep.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sleep" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StartOutput.json b/docs/_data/Help/obs.powershell.websocket.StartOutput.json new file mode 100644 index 000000000..f7f06d0e3 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StartOutput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Start-OBSOutput : StartOutput", + "Description": "Starts an output.\n\n\nStart-OBSOutput calls the OBS WebSocket with a request of type StartOutput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startoutput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StartRecord.json b/docs/_data/Help/obs.powershell.websocket.StartRecord.json new file mode 100644 index 000000000..9ca1bfe4d --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StartRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSRecord : StartRecord", + "Description": "Starts the record output.\n\n\nStart-OBSRecord calls the OBS WebSocket with a request of type StartRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StartReplayBuffer.json b/docs/_data/Help/obs.powershell.websocket.StartReplayBuffer.json new file mode 100644 index 000000000..85287399e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StartReplayBuffer.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSReplayBuffer : StartReplayBuffer", + "Description": "Starts the replay buffer output.\n\n\nStart-OBSReplayBuffer calls the OBS WebSocket with a request of type StartReplayBuffer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startreplaybuffer" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSReplayBuffer" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StartStream.json b/docs/_data/Help/obs.powershell.websocket.StartStream.json new file mode 100644 index 000000000..d03070ec3 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StartStream.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSStream : StartStream", + "Description": "Starts the stream output.\n\n\nStart-OBSStream calls the OBS WebSocket with a request of type StartStream.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSStream" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StartVirtualCam.json b/docs/_data/Help/obs.powershell.websocket.StartVirtualCam.json new file mode 100644 index 000000000..a4fb618e8 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StartVirtualCam.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Start-OBSVirtualCam : StartVirtualCam", + "Description": "Starts the virtualcam output.\n\n\nStart-OBSVirtualCam calls the OBS WebSocket with a request of type StartVirtualCam.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startvirtualcam" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Start-OBSVirtualCam" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StopOutput.json b/docs/_data/Help/obs.powershell.websocket.StopOutput.json new file mode 100644 index 000000000..df889ba83 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StopOutput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Stop-OBSOutput : StopOutput", + "Description": "Stops an output.\n\n\nStop-OBSOutput calls the OBS WebSocket with a request of type StopOutput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopoutput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StopRecord.json b/docs/_data/Help/obs.powershell.websocket.StopRecord.json new file mode 100644 index 000000000..b6b49dcdb --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StopRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSRecord : StopRecord", + "Description": "Stops the record output.\n\n\nStop-OBSRecord calls the OBS WebSocket with a request of type StopRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StopReplayBuffer.json b/docs/_data/Help/obs.powershell.websocket.StopReplayBuffer.json new file mode 100644 index 000000000..c3bea5f30 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StopReplayBuffer.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSReplayBuffer : StopReplayBuffer", + "Description": "Stops the replay buffer output.\n\n\nStop-OBSReplayBuffer calls the OBS WebSocket with a request of type StopReplayBuffer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopreplaybuffer" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSReplayBuffer" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StopStream.json b/docs/_data/Help/obs.powershell.websocket.StopStream.json new file mode 100644 index 000000000..509847921 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StopStream.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSStream : StopStream", + "Description": "Stops the stream output.\n\n\nStop-OBSStream calls the OBS WebSocket with a request of type StopStream.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSStream" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.StopVirtualCam.json b/docs/_data/Help/obs.powershell.websocket.StopVirtualCam.json new file mode 100644 index 000000000..22ae9bb40 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.StopVirtualCam.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Stop-OBSVirtualCam : StopVirtualCam", + "Description": "Stops the virtualcam output.\n\n\nStop-OBSVirtualCam calls the OBS WebSocket with a request of type StopVirtualCam.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopvirtualcam" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Stop-OBSVirtualCam" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.ToggleInputMute.json b/docs/_data/Help/obs.powershell.websocket.ToggleInputMute.json new file mode 100644 index 000000000..d2d732cbd --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.ToggleInputMute.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Switch-OBSInputMute : ToggleInputMute", + "Description": "Toggles the audio mute state of an input.\n\n\nSwitch-OBSInputMute calls the OBS WebSocket with a request of type ToggleInputMute.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleinputmute" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.ToggleOutput.json b/docs/_data/Help/obs.powershell.websocket.ToggleOutput.json new file mode 100644 index 000000000..b5a71b5e8 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.ToggleOutput.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Switch-OBSOutput : ToggleOutput", + "Description": "Toggles the status of an output.\n\n\nSwitch-OBSOutput calls the OBS WebSocket with a request of type ToggleOutput.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleoutput" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.ToggleRecord.json b/docs/_data/Help/obs.powershell.websocket.ToggleRecord.json new file mode 100644 index 000000000..5d4ad4d8e --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.ToggleRecord.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSRecord : ToggleRecord", + "Description": "Toggles the status of the record output.\n\n\nSwitch-OBSRecord calls the OBS WebSocket with a request of type ToggleRecord.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecord" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSRecord" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.ToggleRecordPause.json b/docs/_data/Help/obs.powershell.websocket.ToggleRecordPause.json new file mode 100644 index 000000000..bdcc0e9b9 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.ToggleRecordPause.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSRecordPause : ToggleRecordPause", + "Description": "Toggles pause on the record output.\n\n\nSwitch-OBSRecordPause calls the OBS WebSocket with a request of type ToggleRecordPause.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecordpause" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSRecordPause" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.ToggleReplayBuffer.json b/docs/_data/Help/obs.powershell.websocket.ToggleReplayBuffer.json new file mode 100644 index 000000000..391e546dc --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.ToggleReplayBuffer.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSReplayBuffer : ToggleReplayBuffer", + "Description": "Toggles the state of the replay buffer output.\n\n\nSwitch-OBSReplayBuffer calls the OBS WebSocket with a request of type ToggleReplayBuffer.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglereplaybuffer" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSReplayBuffer" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.ToggleStream.json b/docs/_data/Help/obs.powershell.websocket.ToggleStream.json new file mode 100644 index 000000000..3764dc799 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.ToggleStream.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSStream : ToggleStream", + "Description": "Toggles the status of the stream output.\n\n\nSwitch-OBSStream calls the OBS WebSocket with a request of type ToggleStream.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglestream" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSStream" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.ToggleVirtualCam.json b/docs/_data/Help/obs.powershell.websocket.ToggleVirtualCam.json new file mode 100644 index 000000000..9b7ce61cb --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.ToggleVirtualCam.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Switch-OBSVirtualCam : ToggleVirtualCam", + "Description": "Toggles the state of the virtualcam output.\n\n\nSwitch-OBSVirtualCam calls the OBS WebSocket with a request of type ToggleVirtualCam.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglevirtualcam" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Switch-OBSVirtualCam" + } + ] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.TriggerHotkeyByKeySequence.json b/docs/_data/Help/obs.powershell.websocket.TriggerHotkeyByKeySequence.json new file mode 100644 index 000000000..5069579d8 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.TriggerHotkeyByKeySequence.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSTriggerHotkeyByKeySequence : TriggerHotkeyByKeySequence", + "Description": "Triggers a hotkey using a sequence of keys.\n\nNote: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests.\n\n\nSend-OBSTriggerHotkeyByKeySequence calls the OBS WebSocket with a request of type TriggerHotkeyByKeySequence.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybykeysequence" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.TriggerHotkeyByName.json b/docs/_data/Help/obs.powershell.websocket.TriggerHotkeyByName.json new file mode 100644 index 000000000..f3749977f --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.TriggerHotkeyByName.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSTriggerHotkeyByName : TriggerHotkeyByName", + "Description": "Triggers a hotkey using its name. See `GetHotkeyList`.\n\nNote: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests.\n\n\nSend-OBSTriggerHotkeyByName calls the OBS WebSocket with a request of type TriggerHotkeyByName.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybyname" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.TriggerMediaInputAction.json b/docs/_data/Help/obs.powershell.websocket.TriggerMediaInputAction.json new file mode 100644 index 000000000..eb40f4bfb --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.TriggerMediaInputAction.json @@ -0,0 +1,35 @@ +{ + "Synopsis": "Send-OBSTriggerMediaInputAction : TriggerMediaInputAction", + "Description": "Triggers an action on a media input.\n\n\nSend-OBSTriggerMediaInputAction calls the OBS WebSocket with a request of type TriggerMediaInputAction.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggermediainputaction" + ], + "Examples": [] +} \ No newline at end of file diff --git a/docs/_data/Help/obs.powershell.websocket.TriggerStudioModeTransition.json b/docs/_data/Help/obs.powershell.websocket.TriggerStudioModeTransition.json new file mode 100644 index 000000000..69a7c95f7 --- /dev/null +++ b/docs/_data/Help/obs.powershell.websocket.TriggerStudioModeTransition.json @@ -0,0 +1,41 @@ +{ + "Synopsis": "Send-OBSTriggerStudioModeTransition : TriggerStudioModeTransition", + "Description": "Triggers the current scene transition. Same functionality as the `Transition` button in studio mode.\n\n\nSend-OBSTriggerStudioModeTransition calls the OBS WebSocket with a request of type TriggerStudioModeTransition.", + "Parameters": [ + { + "Name": null, + "Type": null, + "Description": "", + "Required": false, + "Position": 0, + "Aliases": null, + "DefaultValue": null, + "Globbing": false, + "PipelineInput": null, + "variableLength": false + } + ], + "Notes": [ + null + ], + "CommandType": "Function", + "Component": [ + null + ], + "Inputs": [ + null + ], + "Outputs": [ + null + ], + "Links": [ + "https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerstudiomodetransition" + ], + "Examples": [ + { + "Title": "EXAMPLE 1", + "Markdown": "", + "Code": "Send-OBSTriggerStudioModeTransition" + } + ] +} \ No newline at end of file diff --git a/docs/obs-powershell-commands.md b/docs/obs-powershell-commands.md index 9d50944e5..552443d8d 100644 --- a/docs/obs-powershell-commands.md +++ b/docs/obs-powershell-commands.md @@ -1,8 +1,8 @@ obs-powershell-commands ----------------------- -obs-powershell exports 339 commands -(169 functions and 170 aliases) +obs-powershell exports 787 commands +(316 functions and 471 aliases) A good number of these commands directly correspond to an obs-websocket message. For a complete list, see [obs-powershell-websocket-commands](obs-powershell-websocket-commands.md). @@ -12,177 +12,324 @@ Functions ========= -|Name |Synopsis | -|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------| -|[Add-OBSInput](Add-OBSInput.md) |Add-OBSInput : CreateInput | -|[Add-OBSProfile](Add-OBSProfile.md) |Add-OBSProfile : CreateProfile | -|[Add-OBSScene](Add-OBSScene.md) |Add-OBSScene : CreateScene | -|[Add-OBSSceneCollection](Add-OBSSceneCollection.md) |Add-OBSSceneCollection : CreateSceneCollection | -|[Add-OBSSceneItem](Add-OBSSceneItem.md) |Add-OBSSceneItem : CreateSceneItem | -|[Add-OBSSourceFilter](Add-OBSSourceFilter.md) |Add-OBSSourceFilter : CreateSourceFilter | -|[Clear-OBSScene](Clear-OBSScene.md) |Clears a Scene in OBS | -|[Connect-OBS](Connect-OBS.md) |Connects to Open Broadcast Studio | -|[Copy-OBSSceneItem](Copy-OBSSceneItem.md) |Copy-OBSSceneItem : DuplicateSceneItem | -|[Disconnect-OBS](Disconnect-OBS.md) |Disconnects OBS | -|[Get-OBS](Get-OBS.md) |Gets OBS | -|[Get-OBSCurrentPreviewScene](Get-OBSCurrentPreviewScene.md) |Get-OBSCurrentPreviewScene : GetCurrentPreviewScene | -|[Get-OBSCurrentProgramScene](Get-OBSCurrentProgramScene.md) |Get-OBSCurrentProgramScene : GetCurrentProgramScene | -|[Get-OBSCurrentSceneTransition](Get-OBSCurrentSceneTransition.md) |Get-OBSCurrentSceneTransition : GetCurrentSceneTransition | -|[Get-OBSCurrentSceneTransitionCursor](Get-OBSCurrentSceneTransitionCursor.md) |Get-OBSCurrentSceneTransitionCursor : GetCurrentSceneTransitionCursor | -|[Get-OBSEffect](Get-OBSEffect.md) |Gets OBS Effects | -|[Get-OBSGroup](Get-OBSGroup.md) |Get-OBSGroup : GetGroupList | -|[Get-OBSGroupSceneItem](Get-OBSGroupSceneItem.md) |Get-OBSGroupSceneItem : GetGroupSceneItemList | -|[Get-OBSHotkey](Get-OBSHotkey.md) |Get-OBSHotkey : GetHotkeyList | -|[Get-OBSInput](Get-OBSInput.md) |Get-OBSInput : GetInputList | -|[Get-OBSInputAudioBalance](Get-OBSInputAudioBalance.md) |Get-OBSInputAudioBalance : GetInputAudioBalance | -|[Get-OBSInputAudioMonitorType](Get-OBSInputAudioMonitorType.md) |Get-OBSInputAudioMonitorType : GetInputAudioMonitorType | -|[Get-OBSInputAudioSyncOffset](Get-OBSInputAudioSyncOffset.md) |Get-OBSInputAudioSyncOffset : GetInputAudioSyncOffset | -|[Get-OBSInputAudioTracks](Get-OBSInputAudioTracks.md) |Get-OBSInputAudioTracks : GetInputAudioTracks | -|[Get-OBSInputDefaultSettings](Get-OBSInputDefaultSettings.md) |Get-OBSInputDefaultSettings : GetInputDefaultSettings | -|[Get-OBSInputKind](Get-OBSInputKind.md) |Get-OBSInputKind : GetInputKindList | -|[Get-OBSInputMute](Get-OBSInputMute.md) |Get-OBSInputMute : GetInputMute | -|[Get-OBSInputPropertiesListPropertyItems](Get-OBSInputPropertiesListPropertyItems.md)|Get-OBSInputPropertiesListPropertyItems : GetInputPropertiesListPropertyItems| -|[Get-OBSInputSettings](Get-OBSInputSettings.md) |Get-OBSInputSettings : GetInputSettings | -|[Get-OBSInputVolume](Get-OBSInputVolume.md) |Get-OBSInputVolume : GetInputVolume | -|[Get-OBSLastReplayBufferReplay](Get-OBSLastReplayBufferReplay.md) |Get-OBSLastReplayBufferReplay : GetLastReplayBufferReplay | -|[Get-OBSMediaInputStatus](Get-OBSMediaInputStatus.md) |Get-OBSMediaInputStatus : GetMediaInputStatus | -|[Get-OBSMonitor](Get-OBSMonitor.md) |Get-OBSMonitor : GetMonitorList | -|[Get-OBSOutput](Get-OBSOutput.md) |Get-OBSOutput : GetOutputList | -|[Get-OBSOutputSettings](Get-OBSOutputSettings.md) |Get-OBSOutputSettings : GetOutputSettings | -|[Get-OBSOutputStatus](Get-OBSOutputStatus.md) |Get-OBSOutputStatus : GetOutputStatus | -|[Get-OBSPersistentData](Get-OBSPersistentData.md) |Get-OBSPersistentData : GetPersistentData | -|[Get-OBSProfile](Get-OBSProfile.md) |Get-OBSProfile : GetProfileList | -|[Get-OBSProfileParameter](Get-OBSProfileParameter.md) |Get-OBSProfileParameter : GetProfileParameter | -|[Get-OBSRecordDirectory](Get-OBSRecordDirectory.md) |Get-OBSRecordDirectory : GetRecordDirectory | -|[Get-OBSRecordStatus](Get-OBSRecordStatus.md) |Get-OBSRecordStatus : GetRecordStatus | -|[Get-OBSReplayBufferStatus](Get-OBSReplayBufferStatus.md) |Get-OBSReplayBufferStatus : GetReplayBufferStatus | -|[Get-OBSScene](Get-OBSScene.md) |Get-OBSScene : GetSceneList | -|[Get-OBSSceneCollection](Get-OBSSceneCollection.md) |Get-OBSSceneCollection : GetSceneCollectionList | -|[Get-OBSSceneItem](Get-OBSSceneItem.md) |Get-OBSSceneItem : GetSceneItemList | -|[Get-OBSSceneItemBlendMode](Get-OBSSceneItemBlendMode.md) |Get-OBSSceneItemBlendMode : GetSceneItemBlendMode | -|[Get-OBSSceneItemEnabled](Get-OBSSceneItemEnabled.md) |Get-OBSSceneItemEnabled : GetSceneItemEnabled | -|[Get-OBSSceneItemId](Get-OBSSceneItemId.md) |Get-OBSSceneItemId : GetSceneItemId | -|[Get-OBSSceneItemIndex](Get-OBSSceneItemIndex.md) |Get-OBSSceneItemIndex : GetSceneItemIndex | -|[Get-OBSSceneItemLocked](Get-OBSSceneItemLocked.md) |Get-OBSSceneItemLocked : GetSceneItemLocked | -|[Get-OBSSceneItemTransform](Get-OBSSceneItemTransform.md) |Get-OBSSceneItemTransform : GetSceneItemTransform | -|[Get-OBSSceneSceneTransitionOverride](Get-OBSSceneSceneTransitionOverride.md) |Get-OBSSceneSceneTransitionOverride : GetSceneSceneTransitionOverride | -|[Get-OBSSceneTransition](Get-OBSSceneTransition.md) |Get-OBSSceneTransition : GetSceneTransitionList | -|[Get-OBSSourceActive](Get-OBSSourceActive.md) |Get-OBSSourceActive : GetSourceActive | -|[Get-OBSSourceFilter](Get-OBSSourceFilter.md) |Get-OBSSourceFilter : GetSourceFilter | -|[Get-OBSSourceFilterDefaultSettings](Get-OBSSourceFilterDefaultSettings.md) |Get-OBSSourceFilterDefaultSettings : GetSourceFilterDefaultSettings | -|[Get-OBSSourceFilterList](Get-OBSSourceFilterList.md) |Get-OBSSourceFilterList : GetSourceFilterList | -|[Get-OBSSourceScreenshot](Get-OBSSourceScreenshot.md) |Get-OBSSourceScreenshot : GetSourceScreenshot | -|[Get-OBSSpecialInputs](Get-OBSSpecialInputs.md) |Get-OBSSpecialInputs : GetSpecialInputs | -|[Get-OBSStats](Get-OBSStats.md) |Get-OBSStats : GetStats | -|[Get-OBSStreamServiceSettings](Get-OBSStreamServiceSettings.md) |Get-OBSStreamServiceSettings : GetStreamServiceSettings | -|[Get-OBSStreamStatus](Get-OBSStreamStatus.md) |Get-OBSStreamStatus : GetStreamStatus | -|[Get-OBSStudioModeEnabled](Get-OBSStudioModeEnabled.md) |Get-OBSStudioModeEnabled : GetStudioModeEnabled | -|[Get-OBSTransitionKind](Get-OBSTransitionKind.md) |Get-OBSTransitionKind : GetTransitionKindList | -|[Get-OBSVersion](Get-OBSVersion.md) |Get-OBSVersion : GetVersion | -|[Get-OBSVideoSettings](Get-OBSVideoSettings.md) |Get-OBSVideoSettings : GetVideoSettings | -|[Get-OBSVirtualCamStatus](Get-OBSVirtualCamStatus.md) |Get-OBSVirtualCamStatus : GetVirtualCamStatus | -|[Hide-OBS](Hide-OBS.md) |Hide OBS | -|[Import-OBSEffect](Import-OBSEffect.md) |Imports Effects | -|[Open-OBSInputFiltersDialog](Open-OBSInputFiltersDialog.md) |Open-OBSInputFiltersDialog : OpenInputFiltersDialog | -|[Open-OBSInputInteractDialog](Open-OBSInputInteractDialog.md) |Open-OBSInputInteractDialog : OpenInputInteractDialog | -|[Open-OBSInputPropertiesDialog](Open-OBSInputPropertiesDialog.md) |Open-OBSInputPropertiesDialog : OpenInputPropertiesDialog | -|[Open-OBSSourceProjector](Open-OBSSourceProjector.md) |Open-OBSSourceProjector : OpenSourceProjector | -|[Open-OBSVideoMixProjector](Open-OBSVideoMixProjector.md) |Open-OBSVideoMixProjector : OpenVideoMixProjector | -|[Receive-OBS](Receive-OBS.md) |Receives data from OBS | -|[Remove-OBS](Remove-OBS.md) |Remove OBS | -|[Remove-OBSEffect](Remove-OBSEffect.md) |Removes OBS Effects | -|[Remove-OBSInput](Remove-OBSInput.md) |Remove-OBSInput : RemoveInput | -|[Remove-OBSProfile](Remove-OBSProfile.md) |Remove-OBSProfile : RemoveProfile | -|[Remove-OBSScene](Remove-OBSScene.md) |Remove-OBSScene : RemoveScene | -|[Remove-OBSSceneItem](Remove-OBSSceneItem.md) |Remove-OBSSceneItem : RemoveSceneItem | -|[Remove-OBSSourceFilter](Remove-OBSSourceFilter.md) |Remove-OBSSourceFilter : RemoveSourceFilter | -|[Resume-OBSRecord](Resume-OBSRecord.md) |Resume-OBSRecord : ResumeRecord | -|[Save-OBSReplayBuffer](Save-OBSReplayBuffer.md) |Save-OBSReplayBuffer : SaveReplayBuffer | -|[Save-OBSSourceScreenshot](Save-OBSSourceScreenshot.md) |Save-OBSSourceScreenshot : SaveSourceScreenshot | -|[Send-OBS](Send-OBS.md) |Sends messages to the OBS websocket. | -|[Send-OBSCallVendorRequest](Send-OBSCallVendorRequest.md) |Send-OBSCallVendorRequest : CallVendorRequest | -|[Send-OBSCustomEvent](Send-OBSCustomEvent.md) |Send-OBSCustomEvent : BroadcastCustomEvent | -|[Send-OBSOffsetMediaInputCursor](Send-OBSOffsetMediaInputCursor.md) |Send-OBSOffsetMediaInputCursor : OffsetMediaInputCursor | -|[Send-OBSPauseRecord](Send-OBSPauseRecord.md) |Send-OBSPauseRecord : PauseRecord | -|[Send-OBSPressInputPropertiesButton](Send-OBSPressInputPropertiesButton.md) |Send-OBSPressInputPropertiesButton : PressInputPropertiesButton | -|[Send-OBSSleep](Send-OBSSleep.md) |Send-OBSSleep : Sleep | -|[Send-OBSStreamCaption](Send-OBSStreamCaption.md) |Send-OBSStreamCaption : SendStreamCaption | -|[Send-OBSTriggerHotkeyByKeySequence](Send-OBSTriggerHotkeyByKeySequence.md) |Send-OBSTriggerHotkeyByKeySequence : TriggerHotkeyByKeySequence | -|[Send-OBSTriggerHotkeyByName](Send-OBSTriggerHotkeyByName.md) |Send-OBSTriggerHotkeyByName : TriggerHotkeyByName | -|[Send-OBSTriggerMediaInputAction](Send-OBSTriggerMediaInputAction.md) |Send-OBSTriggerMediaInputAction : TriggerMediaInputAction | -|[Send-OBSTriggerStudioModeTransition](Send-OBSTriggerStudioModeTransition.md) |Send-OBSTriggerStudioModeTransition : TriggerStudioModeTransition | -|[Set-OBS3DFilter](Set-OBS3DFilter.md) |Sets an OBS 3D Filter. | -|[Set-OBSAudioOutputSource](Set-OBSAudioOutputSource.md) |Adds or sets an audio output source | -|[Set-OBSBrowserSource](Set-OBSBrowserSource.md) |Sets a browser source | -|[Set-OBSColorFilter](Set-OBSColorFilter.md) |Sets a color filter | -|[Set-OBSColorSource](Set-OBSColorSource.md) |Adds a color source | -|[Set-OBSCurrentPreviewScene](Set-OBSCurrentPreviewScene.md) |Set-OBSCurrentPreviewScene : SetCurrentPreviewScene | -|[Set-OBSCurrentProfile](Set-OBSCurrentProfile.md) |Set-OBSCurrentProfile : SetCurrentProfile | -|[Set-OBSCurrentProgramScene](Set-OBSCurrentProgramScene.md) |Set-OBSCurrentProgramScene : SetCurrentProgramScene | -|[Set-OBSCurrentSceneCollection](Set-OBSCurrentSceneCollection.md) |Set-OBSCurrentSceneCollection : SetCurrentSceneCollection | -|[Set-OBSCurrentSceneTransition](Set-OBSCurrentSceneTransition.md) |Set-OBSCurrentSceneTransition : SetCurrentSceneTransition | -|[Set-OBSCurrentSceneTransitionDuration](Set-OBSCurrentSceneTransitionDuration.md) |Set-OBSCurrentSceneTransitionDuration : SetCurrentSceneTransitionDuration | -|[Set-OBSCurrentSceneTransitionSettings](Set-OBSCurrentSceneTransitionSettings.md) |Set-OBSCurrentSceneTransitionSettings : SetCurrentSceneTransitionSettings | -|[Set-OBSDisplaySource](Set-OBSDisplaySource.md) |Adds a display source | -|[Set-OBSEqualizerFilter](Set-OBSEqualizerFilter.md) |Sets a Equalizer filter. | -|[Set-OBSGainFilter](Set-OBSGainFilter.md) |Sets a Gain filter. | -|[Set-OBSInputAudioBalance](Set-OBSInputAudioBalance.md) |Set-OBSInputAudioBalance : SetInputAudioBalance | -|[Set-OBSInputAudioMonitorType](Set-OBSInputAudioMonitorType.md) |Set-OBSInputAudioMonitorType : SetInputAudioMonitorType | -|[Set-OBSInputAudioSyncOffset](Set-OBSInputAudioSyncOffset.md) |Set-OBSInputAudioSyncOffset : SetInputAudioSyncOffset | -|[Set-OBSInputAudioTracks](Set-OBSInputAudioTracks.md) |Set-OBSInputAudioTracks : SetInputAudioTracks | -|[Set-OBSInputMute](Set-OBSInputMute.md) |Set-OBSInputMute : SetInputMute | -|[Set-OBSInputName](Set-OBSInputName.md) |Set-OBSInputName : SetInputName | -|[Set-OBSInputSettings](Set-OBSInputSettings.md) |Set-OBSInputSettings : SetInputSettings | -|[Set-OBSInputVolume](Set-OBSInputVolume.md) |Set-OBSInputVolume : SetInputVolume | -|[Set-OBSMediaInputCursor](Set-OBSMediaInputCursor.md) |Set-OBSMediaInputCursor : SetMediaInputCursor | -|[Set-OBSMediaSource](Set-OBSMediaSource.md) |Adds a media source | -|[Set-OBSOutputSettings](Set-OBSOutputSettings.md) |Set-OBSOutputSettings : SetOutputSettings | -|[Set-OBSPersistentData](Set-OBSPersistentData.md) |Set-OBSPersistentData : SetPersistentData | -|[Set-OBSProfileParameter](Set-OBSProfileParameter.md) |Set-OBSProfileParameter : SetProfileParameter | -|[Set-OBSRecordDirectory](Set-OBSRecordDirectory.md) |Set-OBSRecordDirectory : SetRecordDirectory | -|[Set-OBSRenderDelayFilter](Set-OBSRenderDelayFilter.md) |Sets a RenderDelay filter. | -|[Set-OBSScaleFilter](Set-OBSScaleFilter.md) |Sets a Scale filter. | -|[Set-OBSSceneItemBlendMode](Set-OBSSceneItemBlendMode.md) |Set-OBSSceneItemBlendMode : SetSceneItemBlendMode | -|[Set-OBSSceneItemEnabled](Set-OBSSceneItemEnabled.md) |Set-OBSSceneItemEnabled : SetSceneItemEnabled | -|[Set-OBSSceneItemIndex](Set-OBSSceneItemIndex.md) |Set-OBSSceneItemIndex : SetSceneItemIndex | -|[Set-OBSSceneItemLocked](Set-OBSSceneItemLocked.md) |Set-OBSSceneItemLocked : SetSceneItemLocked | -|[Set-OBSSceneItemTransform](Set-OBSSceneItemTransform.md) |Set-OBSSceneItemTransform : SetSceneItemTransform | -|[Set-OBSSceneName](Set-OBSSceneName.md) |Set-OBSSceneName : SetSceneName | -|[Set-OBSSceneSceneTransitionOverride](Set-OBSSceneSceneTransitionOverride.md) |Set-OBSSceneSceneTransitionOverride : SetSceneSceneTransitionOverride | -|[Set-OBSScrollFilter](Set-OBSScrollFilter.md) |Sets a scroll filter. | -|[Set-OBSShaderFilter](Set-OBSShaderFilter.md) |Sets a Shader filter. | -|[Set-OBSSharpnessFilter](Set-OBSSharpnessFilter.md) |Sets a Sharpness filter. | -|[Set-OBSSourceFilterEnabled](Set-OBSSourceFilterEnabled.md) |Set-OBSSourceFilterEnabled : SetSourceFilterEnabled | -|[Set-OBSSourceFilterIndex](Set-OBSSourceFilterIndex.md) |Set-OBSSourceFilterIndex : SetSourceFilterIndex | -|[Set-OBSSourceFilterName](Set-OBSSourceFilterName.md) |Set-OBSSourceFilterName : SetSourceFilterName | -|[Set-OBSSourceFilterSettings](Set-OBSSourceFilterSettings.md) |Set-OBSSourceFilterSettings : SetSourceFilterSettings | -|[Set-OBSStreamServiceSettings](Set-OBSStreamServiceSettings.md) |Set-OBSStreamServiceSettings : SetStreamServiceSettings | -|[Set-OBSStudioModeEnabled](Set-OBSStudioModeEnabled.md) |Set-OBSStudioModeEnabled : SetStudioModeEnabled | -|[Set-OBSTBarPosition](Set-OBSTBarPosition.md) |Set-OBSTBarPosition : SetTBarPosition | -|[Set-OBSVideoSettings](Set-OBSVideoSettings.md) |Set-OBSVideoSettings : SetVideoSettings | -|[Set-OBSVLCSource](Set-OBSVLCSource.md) |Adds a VLC playlist source | -|[Set-OBSWindowSource](Set-OBSWindowSource.md) |Adds or sets a window capture source | -|[Show-OBS](Show-OBS.md) |Shows content in OBS | -|[Start-OBSEffect](Start-OBSEffect.md) |Starts obs-powershell effects. | -|[Start-OBSOutput](Start-OBSOutput.md) |Start-OBSOutput : StartOutput | -|[Start-OBSRecord](Start-OBSRecord.md) |Start-OBSRecord : StartRecord | -|[Start-OBSReplayBuffer](Start-OBSReplayBuffer.md) |Start-OBSReplayBuffer : StartReplayBuffer | -|[Start-OBSStream](Start-OBSStream.md) |Start-OBSStream : StartStream | -|[Start-OBSVirtualCam](Start-OBSVirtualCam.md) |Start-OBSVirtualCam : StartVirtualCam | -|[Stop-OBSEffect](Stop-OBSEffect.md) |Stops obs-powershell effects. | -|[Stop-OBSOutput](Stop-OBSOutput.md) |Stop-OBSOutput : StopOutput | -|[Stop-OBSRecord](Stop-OBSRecord.md) |Stop-OBSRecord : StopRecord | -|[Stop-OBSReplayBuffer](Stop-OBSReplayBuffer.md) |Stop-OBSReplayBuffer : StopReplayBuffer | -|[Stop-OBSStream](Stop-OBSStream.md) |Stop-OBSStream : StopStream | -|[Stop-OBSVirtualCam](Stop-OBSVirtualCam.md) |Stop-OBSVirtualCam : StopVirtualCam | -|[Switch-OBSInputMute](Switch-OBSInputMute.md) |Switch-OBSInputMute : ToggleInputMute | -|[Switch-OBSOutput](Switch-OBSOutput.md) |Switch-OBSOutput : ToggleOutput | -|[Switch-OBSRecord](Switch-OBSRecord.md) |Switch-OBSRecord : ToggleRecord | -|[Switch-OBSRecordPause](Switch-OBSRecordPause.md) |Switch-OBSRecordPause : ToggleRecordPause | -|[Switch-OBSReplayBuffer](Switch-OBSReplayBuffer.md) |Switch-OBSReplayBuffer : ToggleReplayBuffer | -|[Switch-OBSStream](Switch-OBSStream.md) |Switch-OBSStream : ToggleStream | -|[Switch-OBSVirtualCam](Switch-OBSVirtualCam.md) |Switch-OBSVirtualCam : ToggleVirtualCam | -|[Watch-OBS](Watch-OBS.md) |Watches OBS | +|Name |Synopsis| +|------------------------------------------------------------------------------------------|--------| +|[Add-OBSInput](Add-OBSInput.md) | +|[Add-OBSProfile](Add-OBSProfile.md) | +|[Add-OBSScene](Add-OBSScene.md) | +|[Add-OBSSceneCollection](Add-OBSSceneCollection.md) | +|[Add-OBSSceneItem](Add-OBSSceneItem.md) | +|[Add-OBSSourceFilter](Add-OBSSourceFilter.md) | +|[Clear-OBSScene](Clear-OBSScene.md) | +|[Connect-OBS](Connect-OBS.md) | +|[Copy-OBSSceneItem](Copy-OBSSceneItem.md) | +|[Disconnect-OBS](Disconnect-OBS.md) | +|[Get-OBS](Get-OBS.md) | +|[Get-OBS3dSwapTransitionShader](Get-OBS3dSwapTransitionShader.md) | +|[Get-OBSAddShader](Get-OBSAddShader.md) | +|[Get-OBSAlphaBorderShader](Get-OBSAlphaBorderShader.md) | +|[Get-OBSAlphaGamingBentCameraShader](Get-OBSAlphaGamingBentCameraShader.md) | +|[Get-OBSAnimatedPathShader](Get-OBSAnimatedPathShader.md) | +|[Get-OBSAnimatedTextureShader](Get-OBSAnimatedTextureShader.md) | +|[Get-OBSAsciiShader](Get-OBSAsciiShader.md) | +|[Get-OBSAspectRatioShader](Get-OBSAspectRatioShader.md) | +|[Get-OBSBackgroundRemovalShader](Get-OBSBackgroundRemovalShader.md) | +|[Get-OBSBlendOpacityShader](Get-OBSBlendOpacityShader.md) | +|[Get-OBSBlinkShader](Get-OBSBlinkShader.md) | +|[Get-OBSBloomShader](Get-OBSBloomShader.md) | +|[Get-OBSBorderShader](Get-OBSBorderShader.md) | +|[Get-OBSBoxBlurShader](Get-OBSBoxBlurShader.md) | +|[Get-OBSBulgePinchShader](Get-OBSBulgePinchShader.md) | +|[Get-OBSBurnShader](Get-OBSBurnShader.md) | +|[Get-OBSCartoonShader](Get-OBSCartoonShader.md) | +|[Get-OBSCellShadedShader](Get-OBSCellShadedShader.md) | +|[Get-OBSChromaticAberrationShader](Get-OBSChromaticAberrationShader.md) | +|[Get-OBSChromaUVDistortionShader](Get-OBSChromaUVDistortionShader.md) | +|[Get-OBSCircleMaskFilterShader](Get-OBSCircleMaskFilterShader.md) | +|[Get-OBSClockAnalogShader](Get-OBSClockAnalogShader.md) | +|[Get-OBSClockDigitalLedShader](Get-OBSClockDigitalLedShader.md) | +|[Get-OBSClockDigitalNixieShader](Get-OBSClockDigitalNixieShader.md) | +|[Get-OBSColorDepthShader](Get-OBSColorDepthShader.md) | +|[Get-OBSColorGradeFilterShader](Get-OBSColorGradeFilterShader.md) | +|[Get-OBSCornerPinShader](Get-OBSCornerPinShader.md) | +|[Get-OBSCrtCurvatureShader](Get-OBSCrtCurvatureShader.md) | +|[Get-OBSCurrentPreviewScene](Get-OBSCurrentPreviewScene.md) | +|[Get-OBSCurrentProgramScene](Get-OBSCurrentProgramScene.md) | +|[Get-OBSCurrentSceneTransition](Get-OBSCurrentSceneTransition.md) | +|[Get-OBSCurrentSceneTransitionCursor](Get-OBSCurrentSceneTransitionCursor.md) | +|[Get-OBSCurveShader](Get-OBSCurveShader.md) | +|[Get-OBSCutRectPerCornerShader](Get-OBSCutRectPerCornerShader.md) | +|[Get-OBSCylinderShader](Get-OBSCylinderShader.md) | +|[Get-OBSDarkenShader](Get-OBSDarkenShader.md) | +|[Get-OBSDeadPixelFixerShader](Get-OBSDeadPixelFixerShader.md) | +|[Get-OBSDensitySatHueShader](Get-OBSDensitySatHueShader.md) | +|[Get-OBSDiffuseTransitionShader](Get-OBSDiffuseTransitionShader.md) | +|[Get-OBSDigitalRainShader](Get-OBSDigitalRainShader.md) | +|[Get-OBSDivideRotateShader](Get-OBSDivideRotateShader.md) | +|[Get-OBSDoodleShader](Get-OBSDoodleShader.md) | +|[Get-OBSDrawingsShader](Get-OBSDrawingsShader.md) | +|[Get-OBSDropShadowShader](Get-OBSDropShadowShader.md) | +|[Get-OBSDrunkShader](Get-OBSDrunkShader.md) | +|[Get-OBSDynamicMaskShader](Get-OBSDynamicMaskShader.md) | +|[Get-OBSEdgeDetectionShader](Get-OBSEdgeDetectionShader.md) | +|[Get-OBSEffect](Get-OBSEffect.md) | +|[Get-OBSEmbersShader](Get-OBSEmbersShader.md) | +|[Get-OBSEmbossColorShader](Get-OBSEmbossColorShader.md) | +|[Get-OBSEmbossShader](Get-OBSEmbossShader.md) | +|[Get-OBSExeldroBentCameraShader](Get-OBSExeldroBentCameraShader.md) | +|[Get-OBSFadeTransitionShader](Get-OBSFadeTransitionShader.md) | +|[Get-OBSFillColorGradientShader](Get-OBSFillColorGradientShader.md) | +|[Get-OBSFillColorLinearShader](Get-OBSFillColorLinearShader.md) | +|[Get-OBSFillColorRadialDegreesShader](Get-OBSFillColorRadialDegreesShader.md) | +|[Get-OBSFillColorRadialPercentageShader](Get-OBSFillColorRadialPercentageShader.md) | +|[Get-OBSFilterTemplateShader](Get-OBSFilterTemplateShader.md) | +|[Get-OBSFire3Shader](Get-OBSFire3Shader.md) | +|[Get-OBSFireShader](Get-OBSFireShader.md) | +|[Get-OBSFireworks2Shader](Get-OBSFireworks2Shader.md) | +|[Get-OBSFireworksShader](Get-OBSFireworksShader.md) | +|[Get-OBSFisheyeShader](Get-OBSFisheyeShader.md) | +|[Get-OBSFisheyeXyShader](Get-OBSFisheyeXyShader.md) | +|[Get-OBSFlipShader](Get-OBSFlipShader.md) | +|[Get-OBSFrostedGlassShader](Get-OBSFrostedGlassShader.md) | +|[Get-OBSGammaCorrectionShader](Get-OBSGammaCorrectionShader.md) | +|[Get-OBSGaussianBlurAdvancedShader](Get-OBSGaussianBlurAdvancedShader.md) | +|[Get-OBSGaussianBlurShader](Get-OBSGaussianBlurShader.md) | +|[Get-OBSGaussianBlurSimpleShader](Get-OBSGaussianBlurSimpleShader.md) | +|[Get-OBSGaussianExampleShader](Get-OBSGaussianExampleShader.md) | +|[Get-OBSGaussianSimpleShader](Get-OBSGaussianSimpleShader.md) | +|[Get-OBSGbCameraShader](Get-OBSGbCameraShader.md) | +|[Get-OBSGlassShader](Get-OBSGlassShader.md) | +|[Get-OBSGlitchAnalogShader](Get-OBSGlitchAnalogShader.md) | +|[Get-OBSGlitchShader](Get-OBSGlitchShader.md) | +|[Get-OBSGlowShader](Get-OBSGlowShader.md) | +|[Get-OBSGradientShader](Get-OBSGradientShader.md) | +|[Get-OBSGroup](Get-OBSGroup.md) | +|[Get-OBSGroupSceneItem](Get-OBSGroupSceneItem.md) | +|[Get-OBSHalftoneShader](Get-OBSHalftoneShader.md) | +|[Get-OBSHeatWaveSimpleShader](Get-OBSHeatWaveSimpleShader.md) | +|[Get-OBSHexagonShader](Get-OBSHexagonShader.md) | +|[Get-OBSHotkey](Get-OBSHotkey.md) | +|[Get-OBSHslHsvSaturationShader](Get-OBSHslHsvSaturationShader.md) | +|[Get-OBSHueRotatonShader](Get-OBSHueRotatonShader.md) | +|[Get-OBSInput](Get-OBSInput.md) | +|[Get-OBSInputAudioBalance](Get-OBSInputAudioBalance.md) | +|[Get-OBSInputAudioMonitorType](Get-OBSInputAudioMonitorType.md) | +|[Get-OBSInputAudioSyncOffset](Get-OBSInputAudioSyncOffset.md) | +|[Get-OBSInputAudioTracks](Get-OBSInputAudioTracks.md) | +|[Get-OBSInputDefaultSettings](Get-OBSInputDefaultSettings.md) | +|[Get-OBSInputKind](Get-OBSInputKind.md) | +|[Get-OBSInputMute](Get-OBSInputMute.md) | +|[Get-OBSInputPropertiesListPropertyItems](Get-OBSInputPropertiesListPropertyItems.md)| +|[Get-OBSInputSettings](Get-OBSInputSettings.md) | +|[Get-OBSInputVolume](Get-OBSInputVolume.md) | +|[Get-OBSIntensityScopeShader](Get-OBSIntensityScopeShader.md) | +|[Get-OBSInvertLumaShader](Get-OBSInvertLumaShader.md) | +|[Get-OBSLastReplayBufferReplay](Get-OBSLastReplayBufferReplay.md) | +|[Get-OBSLuminance2Shader](Get-OBSLuminance2Shader.md) | +|[Get-OBSLuminanceAlphaShader](Get-OBSLuminanceAlphaShader.md) | +|[Get-OBSLuminanceShader](Get-OBSLuminanceShader.md) | +|[Get-OBSMatrixShader](Get-OBSMatrixShader.md) | +|[Get-OBSMediaInputStatus](Get-OBSMediaInputStatus.md) | +|[Get-OBSMonitor](Get-OBSMonitor.md) | +|[Get-OBSMultiplyShader](Get-OBSMultiplyShader.md) | +|[Get-OBSNightSkyShader](Get-OBSNightSkyShader.md) | +|[Get-OBSOpacityShader](Get-OBSOpacityShader.md) | +|[Get-OBSOutput](Get-OBSOutput.md) | +|[Get-OBSOutputSettings](Get-OBSOutputSettings.md) | +|[Get-OBSOutputStatus](Get-OBSOutputStatus.md) | +|[Get-OBSPagePeelShader](Get-OBSPagePeelShader.md) | +|[Get-OBSPagePeelTransitionShader](Get-OBSPagePeelTransitionShader.md) | +|[Get-OBSPerlinNoiseShader](Get-OBSPerlinNoiseShader.md) | +|[Get-OBSPersistentData](Get-OBSPersistentData.md) | +|[Get-OBSPieChartShader](Get-OBSPieChartShader.md) | +|[Get-OBSPixelationShader](Get-OBSPixelationShader.md) | +|[Get-OBSPixelationTransitionShader](Get-OBSPixelationTransitionShader.md) | +|[Get-OBSPolarShader](Get-OBSPolarShader.md) | +|[Get-OBSProfile](Get-OBSProfile.md) | +|[Get-OBSProfileParameter](Get-OBSProfileParameter.md) | +|[Get-OBSPulseShader](Get-OBSPulseShader.md) | +|[Get-OBSRainbowShader](Get-OBSRainbowShader.md) | +|[Get-OBSRainWindowShader](Get-OBSRainWindowShader.md) | +|[Get-OBSRecordDirectory](Get-OBSRecordDirectory.md) | +|[Get-OBSRecordStatus](Get-OBSRecordStatus.md) | +|[Get-OBSRectangularDropShadowShader](Get-OBSRectangularDropShadowShader.md) | +|[Get-OBSReflectShader](Get-OBSReflectShader.md) | +|[Get-OBSRemovePartialPixelsShader](Get-OBSRemovePartialPixelsShader.md) | +|[Get-OBSRepeatShader](Get-OBSRepeatShader.md) | +|[Get-OBSRepeatTextureShader](Get-OBSRepeatTextureShader.md) | +|[Get-OBSReplayBufferStatus](Get-OBSReplayBufferStatus.md) | +|[Get-OBSRGBAPercentShader](Get-OBSRGBAPercentShader.md) | +|[Get-OBSRgbColorWheelShader](Get-OBSRgbColorWheelShader.md) | +|[Get-OBSRgbSplitShader](Get-OBSRgbSplitShader.md) | +|[Get-OBSRgbvisibilityShader](Get-OBSRgbvisibilityShader.md) | +|[Get-OBSRGSSAAShader](Get-OBSRGSSAAShader.md) | +|[Get-OBSRippleShader](Get-OBSRippleShader.md) | +|[Get-OBSRotatingSourceShader](Get-OBSRotatingSourceShader.md) | +|[Get-OBSRotatoeShader](Get-OBSRotatoeShader.md) | +|[Get-OBSRoundedRect2Shader](Get-OBSRoundedRect2Shader.md) | +|[Get-OBSRoundedRectPerCornerShader](Get-OBSRoundedRectPerCornerShader.md) | +|[Get-OBSRoundedRectPerSideShader](Get-OBSRoundedRectPerSideShader.md) | +|[Get-OBSRoundedRectShader](Get-OBSRoundedRectShader.md) | +|[Get-OBSRoundedStrokeGradientShader](Get-OBSRoundedStrokeGradientShader.md) | +|[Get-OBSRoundedStrokeShader](Get-OBSRoundedStrokeShader.md) | +|[Get-OBSScanLineShader](Get-OBSScanLineShader.md) | +|[Get-OBSScene](Get-OBSScene.md) | +|[Get-OBSSceneCollection](Get-OBSSceneCollection.md) | +|[Get-OBSSceneItem](Get-OBSSceneItem.md) | +|[Get-OBSSceneItemBlendMode](Get-OBSSceneItemBlendMode.md) | +|[Get-OBSSceneItemEnabled](Get-OBSSceneItemEnabled.md) | +|[Get-OBSSceneItemId](Get-OBSSceneItemId.md) | +|[Get-OBSSceneItemIndex](Get-OBSSceneItemIndex.md) | +|[Get-OBSSceneItemLocked](Get-OBSSceneItemLocked.md) | +|[Get-OBSSceneItemSource](Get-OBSSceneItemSource.md) | +|[Get-OBSSceneItemTransform](Get-OBSSceneItemTransform.md) | +|[Get-OBSSceneSceneTransitionOverride](Get-OBSSceneSceneTransitionOverride.md) | +|[Get-OBSSceneTransition](Get-OBSSceneTransition.md) | +|[Get-OBSSeascapeShader](Get-OBSSeascapeShader.md) | +|[Get-OBSSeasickShader](Get-OBSSeasickShader.md) | +|[Get-OBSSelectiveColorShader](Get-OBSSelectiveColorShader.md) | +|[Get-OBSShakeShader](Get-OBSShakeShader.md) | +|[Get-OBSShineShader](Get-OBSShineShader.md) | +|[Get-OBSSimpleGradientShader](Get-OBSSimpleGradientShader.md) | +|[Get-OBSSimplexNoiseShader](Get-OBSSimplexNoiseShader.md) | +|[Get-OBSSmartDenoiseShader](Get-OBSSmartDenoiseShader.md) | +|[Get-OBSSourceActive](Get-OBSSourceActive.md) | +|[Get-OBSSourceFilter](Get-OBSSourceFilter.md) | +|[Get-OBSSourceFilterDefaultSettings](Get-OBSSourceFilterDefaultSettings.md) | +|[Get-OBSSourceFilterKind](Get-OBSSourceFilterKind.md) | +|[Get-OBSSourceFilterList](Get-OBSSourceFilterList.md) | +|[Get-OBSSourceScreenshot](Get-OBSSourceScreenshot.md) | +|[Get-OBSSpecialInputs](Get-OBSSpecialInputs.md) | +|[Get-OBSSpecularShineShader](Get-OBSSpecularShineShader.md) | +|[Get-OBSSpotlightShader](Get-OBSSpotlightShader.md) | +|[Get-OBSStats](Get-OBSStats.md) | +|[Get-OBSStreamServiceSettings](Get-OBSStreamServiceSettings.md) | +|[Get-OBSStreamStatus](Get-OBSStreamStatus.md) | +|[Get-OBSStudioModeEnabled](Get-OBSStudioModeEnabled.md) | +|[Get-OBSSwirlShader](Get-OBSSwirlShader.md) | +|[Get-OBSTetraShader](Get-OBSTetraShader.md) | +|[Get-OBSThermalShader](Get-OBSThermalShader.md) | +|[Get-OBSTransitionKind](Get-OBSTransitionKind.md) | +|[Get-OBSTvCrtSubpixelShader](Get-OBSTvCrtSubpixelShader.md) | +|[Get-OBSTwistShader](Get-OBSTwistShader.md) | +|[Get-OBSTwoPassDropShadowShader](Get-OBSTwoPassDropShadowShader.md) | +|[Get-OBSVCRShader](Get-OBSVCRShader.md) | +|[Get-OBSVersion](Get-OBSVersion.md) | +|[Get-OBSVHSShader](Get-OBSVHSShader.md) | +|[Get-OBSVideoSettings](Get-OBSVideoSettings.md) | +|[Get-OBSVignettingShader](Get-OBSVignettingShader.md) | +|[Get-OBSVirtualCamStatus](Get-OBSVirtualCamStatus.md) | +|[Get-OBSVoronoiPixelationShader](Get-OBSVoronoiPixelationShader.md) | +|[Get-OBSZigZagShader](Get-OBSZigZagShader.md) | +|[Get-OBSZoomBlurShader](Get-OBSZoomBlurShader.md) | +|[Get-OBSZoomShader](Get-OBSZoomShader.md) | +|[Get-OBSZoomXYShader](Get-OBSZoomXYShader.md) | +|[Hide-OBS](Hide-OBS.md) | +|[Import-OBSEffect](Import-OBSEffect.md) | +|[Open-OBSInputFiltersDialog](Open-OBSInputFiltersDialog.md) | +|[Open-OBSInputInteractDialog](Open-OBSInputInteractDialog.md) | +|[Open-OBSInputPropertiesDialog](Open-OBSInputPropertiesDialog.md) | +|[Open-OBSSourceProjector](Open-OBSSourceProjector.md) | +|[Open-OBSVideoMixProjector](Open-OBSVideoMixProjector.md) | +|[Receive-OBS](Receive-OBS.md) | +|[Remove-OBS](Remove-OBS.md) | +|[Remove-OBSEffect](Remove-OBSEffect.md) | +|[Remove-OBSInput](Remove-OBSInput.md) | +|[Remove-OBSProfile](Remove-OBSProfile.md) | +|[Remove-OBSScene](Remove-OBSScene.md) | +|[Remove-OBSSceneItem](Remove-OBSSceneItem.md) | +|[Remove-OBSSourceFilter](Remove-OBSSourceFilter.md) | +|[Resume-OBSRecord](Resume-OBSRecord.md) | +|[Save-OBSReplayBuffer](Save-OBSReplayBuffer.md) | +|[Save-OBSSourceScreenshot](Save-OBSSourceScreenshot.md) | +|[Send-OBS](Send-OBS.md) | +|[Send-OBSCallVendorRequest](Send-OBSCallVendorRequest.md) | +|[Send-OBSCustomEvent](Send-OBSCustomEvent.md) | +|[Send-OBSOffsetMediaInputCursor](Send-OBSOffsetMediaInputCursor.md) | +|[Send-OBSPauseRecord](Send-OBSPauseRecord.md) | +|[Send-OBSPressInputPropertiesButton](Send-OBSPressInputPropertiesButton.md) | +|[Send-OBSSleep](Send-OBSSleep.md) | +|[Send-OBSStreamCaption](Send-OBSStreamCaption.md) | +|[Send-OBSTriggerHotkeyByKeySequence](Send-OBSTriggerHotkeyByKeySequence.md) | +|[Send-OBSTriggerHotkeyByName](Send-OBSTriggerHotkeyByName.md) | +|[Send-OBSTriggerMediaInputAction](Send-OBSTriggerMediaInputAction.md) | +|[Send-OBSTriggerStudioModeTransition](Send-OBSTriggerStudioModeTransition.md) | +|[Set-OBS3DFilter](Set-OBS3DFilter.md) | +|[Set-OBSAudioOutputSource](Set-OBSAudioOutputSource.md) | +|[Set-OBSBrowserSource](Set-OBSBrowserSource.md) | +|[Set-OBSColorFilter](Set-OBSColorFilter.md) | +|[Set-OBSColorSource](Set-OBSColorSource.md) | +|[Set-OBSCurrentPreviewScene](Set-OBSCurrentPreviewScene.md) | +|[Set-OBSCurrentProfile](Set-OBSCurrentProfile.md) | +|[Set-OBSCurrentProgramScene](Set-OBSCurrentProgramScene.md) | +|[Set-OBSCurrentSceneCollection](Set-OBSCurrentSceneCollection.md) | +|[Set-OBSCurrentSceneTransition](Set-OBSCurrentSceneTransition.md) | +|[Set-OBSCurrentSceneTransitionDuration](Set-OBSCurrentSceneTransitionDuration.md) | +|[Set-OBSCurrentSceneTransitionSettings](Set-OBSCurrentSceneTransitionSettings.md) | +|[Set-OBSDisplaySource](Set-OBSDisplaySource.md) | +|[Set-OBSEqualizerFilter](Set-OBSEqualizerFilter.md) | +|[Set-OBSGainFilter](Set-OBSGainFilter.md) | +|[Set-OBSInputAudioBalance](Set-OBSInputAudioBalance.md) | +|[Set-OBSInputAudioMonitorType](Set-OBSInputAudioMonitorType.md) | +|[Set-OBSInputAudioSyncOffset](Set-OBSInputAudioSyncOffset.md) | +|[Set-OBSInputAudioTracks](Set-OBSInputAudioTracks.md) | +|[Set-OBSInputMute](Set-OBSInputMute.md) | +|[Set-OBSInputName](Set-OBSInputName.md) | +|[Set-OBSInputSettings](Set-OBSInputSettings.md) | +|[Set-OBSInputVolume](Set-OBSInputVolume.md) | +|[Set-OBSMarkdownSource](Set-OBSMarkdownSource.md) | +|[Set-OBSMediaInputCursor](Set-OBSMediaInputCursor.md) | +|[Set-OBSMediaSource](Set-OBSMediaSource.md) | +|[Set-OBSOutputSettings](Set-OBSOutputSettings.md) | +|[Set-OBSPersistentData](Set-OBSPersistentData.md) | +|[Set-OBSProfileParameter](Set-OBSProfileParameter.md) | +|[Set-OBSRecordDirectory](Set-OBSRecordDirectory.md) | +|[Set-OBSRenderDelayFilter](Set-OBSRenderDelayFilter.md) | +|[Set-OBSScaleFilter](Set-OBSScaleFilter.md) | +|[Set-OBSSceneItemBlendMode](Set-OBSSceneItemBlendMode.md) | +|[Set-OBSSceneItemEnabled](Set-OBSSceneItemEnabled.md) | +|[Set-OBSSceneItemIndex](Set-OBSSceneItemIndex.md) | +|[Set-OBSSceneItemLocked](Set-OBSSceneItemLocked.md) | +|[Set-OBSSceneItemTransform](Set-OBSSceneItemTransform.md) | +|[Set-OBSSceneName](Set-OBSSceneName.md) | +|[Set-OBSSceneSceneTransitionOverride](Set-OBSSceneSceneTransitionOverride.md) | +|[Set-OBSScrollFilter](Set-OBSScrollFilter.md) | +|[Set-OBSShaderFilter](Set-OBSShaderFilter.md) | +|[Set-OBSSharpnessFilter](Set-OBSSharpnessFilter.md) | +|[Set-OBSSoundCloudSource](Set-OBSSoundCloudSource.md) | +|[Set-OBSSourceFilterEnabled](Set-OBSSourceFilterEnabled.md) | +|[Set-OBSSourceFilterIndex](Set-OBSSourceFilterIndex.md) | +|[Set-OBSSourceFilterName](Set-OBSSourceFilterName.md) | +|[Set-OBSSourceFilterSettings](Set-OBSSourceFilterSettings.md) | +|[Set-OBSStreamServiceSettings](Set-OBSStreamServiceSettings.md) | +|[Set-OBSStudioModeEnabled](Set-OBSStudioModeEnabled.md) | +|[Set-OBSSwitchSource](Set-OBSSwitchSource.md) | +|[Set-OBSTBarPosition](Set-OBSTBarPosition.md) | +|[Set-OBSVideoSettings](Set-OBSVideoSettings.md) | +|[Set-OBSVLCSource](Set-OBSVLCSource.md) | +|[Set-OBSWaveformSource](Set-OBSWaveformSource.md) | +|[Set-OBSWindowSource](Set-OBSWindowSource.md) | +|[Show-OBS](Show-OBS.md) | +|[Start-OBSEffect](Start-OBSEffect.md) | +|[Start-OBSOutput](Start-OBSOutput.md) | +|[Start-OBSRecord](Start-OBSRecord.md) | +|[Start-OBSReplayBuffer](Start-OBSReplayBuffer.md) | +|[Start-OBSStream](Start-OBSStream.md) | +|[Start-OBSVirtualCam](Start-OBSVirtualCam.md) | +|[Stop-OBSEffect](Stop-OBSEffect.md) | +|[Stop-OBSOutput](Stop-OBSOutput.md) | +|[Stop-OBSRecord](Stop-OBSRecord.md) | +|[Stop-OBSReplayBuffer](Stop-OBSReplayBuffer.md) | +|[Stop-OBSStream](Stop-OBSStream.md) | +|[Stop-OBSVirtualCam](Stop-OBSVirtualCam.md) | +|[Switch-OBSInputMute](Switch-OBSInputMute.md) | +|[Switch-OBSOutput](Switch-OBSOutput.md) | +|[Switch-OBSRecord](Switch-OBSRecord.md) | +|[Switch-OBSRecordPause](Switch-OBSRecordPause.md) | +|[Switch-OBSReplayBuffer](Switch-OBSReplayBuffer.md) | +|[Switch-OBSStream](Switch-OBSStream.md) | +|[Switch-OBSVirtualCam](Switch-OBSVirtualCam.md) | +|[Watch-OBS](Watch-OBS.md) | @@ -203,14 +350,92 @@ Aliases |[Copy-OBSSceneItem](Copy-OBSSceneItem.md) | |[Disconnect-OBS](Disconnect-OBS.md) | |[Get-OBS](Get-OBS.md) | +|[Get-OBS3dSwapTransitionShader](Get-OBS3dSwapTransitionShader.md) | +|[Get-OBSAddShader](Get-OBSAddShader.md) | +|[Get-OBSAlphaBorderShader](Get-OBSAlphaBorderShader.md) | +|[Get-OBSAlphaGamingBentCameraShader](Get-OBSAlphaGamingBentCameraShader.md) | +|[Get-OBSAnimatedPathShader](Get-OBSAnimatedPathShader.md) | +|[Get-OBSAnimatedTextureShader](Get-OBSAnimatedTextureShader.md) | +|[Get-OBSAsciiShader](Get-OBSAsciiShader.md) | +|[Get-OBSAspectRatioShader](Get-OBSAspectRatioShader.md) | +|[Get-OBSBackgroundRemovalShader](Get-OBSBackgroundRemovalShader.md) | +|[Get-OBSBlendOpacityShader](Get-OBSBlendOpacityShader.md) | +|[Get-OBSBlinkShader](Get-OBSBlinkShader.md) | +|[Get-OBSBloomShader](Get-OBSBloomShader.md) | +|[Get-OBSBorderShader](Get-OBSBorderShader.md) | +|[Get-OBSBoxBlurShader](Get-OBSBoxBlurShader.md) | +|[Get-OBSBulgePinchShader](Get-OBSBulgePinchShader.md) | +|[Get-OBSBurnShader](Get-OBSBurnShader.md) | +|[Get-OBSCartoonShader](Get-OBSCartoonShader.md) | +|[Get-OBSCellShadedShader](Get-OBSCellShadedShader.md) | +|[Get-OBSChromaticAberrationShader](Get-OBSChromaticAberrationShader.md) | +|[Get-OBSChromaUVDistortionShader](Get-OBSChromaUVDistortionShader.md) | +|[Get-OBSCircleMaskFilterShader](Get-OBSCircleMaskFilterShader.md) | +|[Get-OBSClockAnalogShader](Get-OBSClockAnalogShader.md) | +|[Get-OBSClockDigitalLedShader](Get-OBSClockDigitalLedShader.md) | +|[Get-OBSClockDigitalNixieShader](Get-OBSClockDigitalNixieShader.md) | +|[Get-OBSColorDepthShader](Get-OBSColorDepthShader.md) | +|[Get-OBSColorGradeFilterShader](Get-OBSColorGradeFilterShader.md) | +|[Get-OBSCornerPinShader](Get-OBSCornerPinShader.md) | +|[Get-OBSCrtCurvatureShader](Get-OBSCrtCurvatureShader.md) | |[Get-OBSCurrentPreviewScene](Get-OBSCurrentPreviewScene.md) | |[Get-OBSCurrentProgramScene](Get-OBSCurrentProgramScene.md) | |[Get-OBSCurrentSceneTransition](Get-OBSCurrentSceneTransition.md) | |[Get-OBSCurrentSceneTransitionCursor](Get-OBSCurrentSceneTransitionCursor.md) | +|[Get-OBSCurveShader](Get-OBSCurveShader.md) | +|[Get-OBSCutRectPerCornerShader](Get-OBSCutRectPerCornerShader.md) | +|[Get-OBSCylinderShader](Get-OBSCylinderShader.md) | +|[Get-OBSDarkenShader](Get-OBSDarkenShader.md) | +|[Get-OBSDeadPixelFixerShader](Get-OBSDeadPixelFixerShader.md) | +|[Get-OBSDensitySatHueShader](Get-OBSDensitySatHueShader.md) | +|[Get-OBSDiffuseTransitionShader](Get-OBSDiffuseTransitionShader.md) | +|[Get-OBSDigitalRainShader](Get-OBSDigitalRainShader.md) | +|[Get-OBSDivideRotateShader](Get-OBSDivideRotateShader.md) | +|[Get-OBSDoodleShader](Get-OBSDoodleShader.md) | +|[Get-OBSDrawingsShader](Get-OBSDrawingsShader.md) | +|[Get-OBSDropShadowShader](Get-OBSDropShadowShader.md) | +|[Get-OBSDrunkShader](Get-OBSDrunkShader.md) | +|[Get-OBSDynamicMaskShader](Get-OBSDynamicMaskShader.md) | +|[Get-OBSEdgeDetectionShader](Get-OBSEdgeDetectionShader.md) | |[Get-OBSEffect](Get-OBSEffect.md) | +|[Get-OBSEmbersShader](Get-OBSEmbersShader.md) | +|[Get-OBSEmbossColorShader](Get-OBSEmbossColorShader.md) | +|[Get-OBSEmbossShader](Get-OBSEmbossShader.md) | +|[Get-OBSExeldroBentCameraShader](Get-OBSExeldroBentCameraShader.md) | +|[Get-OBSFadeTransitionShader](Get-OBSFadeTransitionShader.md) | +|[Get-OBSFillColorGradientShader](Get-OBSFillColorGradientShader.md) | +|[Get-OBSFillColorLinearShader](Get-OBSFillColorLinearShader.md) | +|[Get-OBSFillColorRadialDegreesShader](Get-OBSFillColorRadialDegreesShader.md) | +|[Get-OBSFillColorRadialPercentageShader](Get-OBSFillColorRadialPercentageShader.md) | +|[Get-OBSFilterTemplateShader](Get-OBSFilterTemplateShader.md) | +|[Get-OBSFire3Shader](Get-OBSFire3Shader.md) | +|[Get-OBSFireShader](Get-OBSFireShader.md) | +|[Get-OBSFireworks2Shader](Get-OBSFireworks2Shader.md) | +|[Get-OBSFireworksShader](Get-OBSFireworksShader.md) | +|[Get-OBSFisheyeShader](Get-OBSFisheyeShader.md) | +|[Get-OBSFisheyeXyShader](Get-OBSFisheyeXyShader.md) | +|[Get-OBSFlipShader](Get-OBSFlipShader.md) | +|[Get-OBSFrostedGlassShader](Get-OBSFrostedGlassShader.md) | +|[Get-OBSGammaCorrectionShader](Get-OBSGammaCorrectionShader.md) | +|[Get-OBSGaussianBlurAdvancedShader](Get-OBSGaussianBlurAdvancedShader.md) | +|[Get-OBSGaussianBlurShader](Get-OBSGaussianBlurShader.md) | +|[Get-OBSGaussianBlurSimpleShader](Get-OBSGaussianBlurSimpleShader.md) | +|[Get-OBSGaussianExampleShader](Get-OBSGaussianExampleShader.md) | +|[Get-OBSGaussianSimpleShader](Get-OBSGaussianSimpleShader.md) | +|[Get-OBSGbCameraShader](Get-OBSGbCameraShader.md) | +|[Get-OBSGlassShader](Get-OBSGlassShader.md) | +|[Get-OBSGlitchAnalogShader](Get-OBSGlitchAnalogShader.md) | +|[Get-OBSGlitchShader](Get-OBSGlitchShader.md) | +|[Get-OBSGlowShader](Get-OBSGlowShader.md) | +|[Get-OBSGradientShader](Get-OBSGradientShader.md) | |[Get-OBSGroup](Get-OBSGroup.md) | |[Get-OBSGroupSceneItem](Get-OBSGroupSceneItem.md) | +|[Get-OBSHalftoneShader](Get-OBSHalftoneShader.md) | +|[Get-OBSHeatWaveSimpleShader](Get-OBSHeatWaveSimpleShader.md) | +|[Get-OBSHexagonShader](Get-OBSHexagonShader.md) | |[Get-OBSHotkey](Get-OBSHotkey.md) | +|[Get-OBSHslHsvSaturationShader](Get-OBSHslHsvSaturationShader.md) | +|[Get-OBSHueRotatonShader](Get-OBSHueRotatonShader.md) | |[Get-OBSInput](Get-OBSInput.md) | |[Get-OBSInputAudioBalance](Get-OBSInputAudioBalance.md) | |[Get-OBSInputAudioMonitorType](Get-OBSInputAudioMonitorType.md) | @@ -222,18 +447,57 @@ Aliases |[Get-OBSInputPropertiesListPropertyItems](Get-OBSInputPropertiesListPropertyItems.md)| |[Get-OBSInputSettings](Get-OBSInputSettings.md) | |[Get-OBSInputVolume](Get-OBSInputVolume.md) | +|[Get-OBSIntensityScopeShader](Get-OBSIntensityScopeShader.md) | +|[Get-OBSInvertLumaShader](Get-OBSInvertLumaShader.md) | |[Get-OBSLastReplayBufferReplay](Get-OBSLastReplayBufferReplay.md) | +|[Get-OBSLuminance2Shader](Get-OBSLuminance2Shader.md) | +|[Get-OBSLuminanceAlphaShader](Get-OBSLuminanceAlphaShader.md) | +|[Get-OBSLuminanceShader](Get-OBSLuminanceShader.md) | +|[Get-OBSMatrixShader](Get-OBSMatrixShader.md) | |[Get-OBSMediaInputStatus](Get-OBSMediaInputStatus.md) | |[Get-OBSMonitor](Get-OBSMonitor.md) | +|[Get-OBSMultiplyShader](Get-OBSMultiplyShader.md) | +|[Get-OBSNightSkyShader](Get-OBSNightSkyShader.md) | +|[Get-OBSOpacityShader](Get-OBSOpacityShader.md) | |[Get-OBSOutput](Get-OBSOutput.md) | |[Get-OBSOutputSettings](Get-OBSOutputSettings.md) | |[Get-OBSOutputStatus](Get-OBSOutputStatus.md) | +|[Get-OBSPagePeelShader](Get-OBSPagePeelShader.md) | +|[Get-OBSPagePeelTransitionShader](Get-OBSPagePeelTransitionShader.md) | +|[Get-OBSPerlinNoiseShader](Get-OBSPerlinNoiseShader.md) | |[Get-OBSPersistentData](Get-OBSPersistentData.md) | +|[Get-OBSPieChartShader](Get-OBSPieChartShader.md) | +|[Get-OBSPixelationShader](Get-OBSPixelationShader.md) | +|[Get-OBSPixelationTransitionShader](Get-OBSPixelationTransitionShader.md) | +|[Get-OBSPolarShader](Get-OBSPolarShader.md) | |[Get-OBSProfile](Get-OBSProfile.md) | |[Get-OBSProfileParameter](Get-OBSProfileParameter.md) | +|[Get-OBSPulseShader](Get-OBSPulseShader.md) | +|[Get-OBSRainbowShader](Get-OBSRainbowShader.md) | +|[Get-OBSRainWindowShader](Get-OBSRainWindowShader.md) | |[Get-OBSRecordDirectory](Get-OBSRecordDirectory.md) | |[Get-OBSRecordStatus](Get-OBSRecordStatus.md) | +|[Get-OBSRectangularDropShadowShader](Get-OBSRectangularDropShadowShader.md) | +|[Get-OBSReflectShader](Get-OBSReflectShader.md) | +|[Get-OBSRemovePartialPixelsShader](Get-OBSRemovePartialPixelsShader.md) | +|[Get-OBSRepeatShader](Get-OBSRepeatShader.md) | +|[Get-OBSRepeatTextureShader](Get-OBSRepeatTextureShader.md) | |[Get-OBSReplayBufferStatus](Get-OBSReplayBufferStatus.md) | +|[Get-OBSRGBAPercentShader](Get-OBSRGBAPercentShader.md) | +|[Get-OBSRgbColorWheelShader](Get-OBSRgbColorWheelShader.md) | +|[Get-OBSRgbSplitShader](Get-OBSRgbSplitShader.md) | +|[Get-OBSRgbvisibilityShader](Get-OBSRgbvisibilityShader.md) | +|[Get-OBSRGSSAAShader](Get-OBSRGSSAAShader.md) | +|[Get-OBSRippleShader](Get-OBSRippleShader.md) | +|[Get-OBSRotatingSourceShader](Get-OBSRotatingSourceShader.md) | +|[Get-OBSRotatoeShader](Get-OBSRotatoeShader.md) | +|[Get-OBSRoundedRect2Shader](Get-OBSRoundedRect2Shader.md) | +|[Get-OBSRoundedRectPerCornerShader](Get-OBSRoundedRectPerCornerShader.md) | +|[Get-OBSRoundedRectPerSideShader](Get-OBSRoundedRectPerSideShader.md) | +|[Get-OBSRoundedRectShader](Get-OBSRoundedRectShader.md) | +|[Get-OBSRoundedStrokeGradientShader](Get-OBSRoundedStrokeGradientShader.md) | +|[Get-OBSRoundedStrokeShader](Get-OBSRoundedStrokeShader.md) | +|[Get-OBSScanLineShader](Get-OBSScanLineShader.md) | |[Get-OBSScene](Get-OBSScene.md) | |[Get-OBSSceneCollection](Get-OBSSceneCollection.md) | |[Get-OBSSceneItem](Get-OBSSceneItem.md) | @@ -242,23 +506,49 @@ Aliases |[Get-OBSSceneItemId](Get-OBSSceneItemId.md) | |[Get-OBSSceneItemIndex](Get-OBSSceneItemIndex.md) | |[Get-OBSSceneItemLocked](Get-OBSSceneItemLocked.md) | +|[Get-OBSSceneItemSource](Get-OBSSceneItemSource.md) | |[Get-OBSSceneItemTransform](Get-OBSSceneItemTransform.md) | |[Get-OBSSceneSceneTransitionOverride](Get-OBSSceneSceneTransitionOverride.md) | |[Get-OBSSceneTransition](Get-OBSSceneTransition.md) | +|[Get-OBSSeascapeShader](Get-OBSSeascapeShader.md) | +|[Get-OBSSeasickShader](Get-OBSSeasickShader.md) | +|[Get-OBSSelectiveColorShader](Get-OBSSelectiveColorShader.md) | +|[Get-OBSShakeShader](Get-OBSShakeShader.md) | +|[Get-OBSShineShader](Get-OBSShineShader.md) | +|[Get-OBSSimpleGradientShader](Get-OBSSimpleGradientShader.md) | +|[Get-OBSSimplexNoiseShader](Get-OBSSimplexNoiseShader.md) | +|[Get-OBSSmartDenoiseShader](Get-OBSSmartDenoiseShader.md) | |[Get-OBSSourceActive](Get-OBSSourceActive.md) | |[Get-OBSSourceFilter](Get-OBSSourceFilter.md) | |[Get-OBSSourceFilterDefaultSettings](Get-OBSSourceFilterDefaultSettings.md) | +|[Get-OBSSourceFilterKind](Get-OBSSourceFilterKind.md) | |[Get-OBSSourceFilterList](Get-OBSSourceFilterList.md) | |[Get-OBSSourceScreenshot](Get-OBSSourceScreenshot.md) | |[Get-OBSSpecialInputs](Get-OBSSpecialInputs.md) | +|[Get-OBSSpecularShineShader](Get-OBSSpecularShineShader.md) | +|[Get-OBSSpotlightShader](Get-OBSSpotlightShader.md) | |[Get-OBSStats](Get-OBSStats.md) | |[Get-OBSStreamServiceSettings](Get-OBSStreamServiceSettings.md) | |[Get-OBSStreamStatus](Get-OBSStreamStatus.md) | |[Get-OBSStudioModeEnabled](Get-OBSStudioModeEnabled.md) | +|[Get-OBSSwirlShader](Get-OBSSwirlShader.md) | +|[Get-OBSTetraShader](Get-OBSTetraShader.md) | +|[Get-OBSThermalShader](Get-OBSThermalShader.md) | |[Get-OBSTransitionKind](Get-OBSTransitionKind.md) | +|[Get-OBSTvCrtSubpixelShader](Get-OBSTvCrtSubpixelShader.md) | +|[Get-OBSTwistShader](Get-OBSTwistShader.md) | +|[Get-OBSTwoPassDropShadowShader](Get-OBSTwoPassDropShadowShader.md) | +|[Get-OBSVCRShader](Get-OBSVCRShader.md) | |[Get-OBSVersion](Get-OBSVersion.md) | +|[Get-OBSVHSShader](Get-OBSVHSShader.md) | |[Get-OBSVideoSettings](Get-OBSVideoSettings.md) | +|[Get-OBSVignettingShader](Get-OBSVignettingShader.md) | |[Get-OBSVirtualCamStatus](Get-OBSVirtualCamStatus.md) | +|[Get-OBSVoronoiPixelationShader](Get-OBSVoronoiPixelationShader.md) | +|[Get-OBSZigZagShader](Get-OBSZigZagShader.md) | +|[Get-OBSZoomBlurShader](Get-OBSZoomBlurShader.md) | +|[Get-OBSZoomShader](Get-OBSZoomShader.md) | +|[Get-OBSZoomXYShader](Get-OBSZoomXYShader.md) | |[Hide-OBS](Hide-OBS.md) | |[Import-OBSEffect](Import-OBSEffect.md) | |[Open-OBSInputFiltersDialog](Open-OBSInputFiltersDialog.md) | @@ -312,6 +602,7 @@ Aliases |[Set-OBSInputName](Set-OBSInputName.md) | |[Set-OBSInputSettings](Set-OBSInputSettings.md) | |[Set-OBSInputVolume](Set-OBSInputVolume.md) | +|[Set-OBSMarkdownSource](Set-OBSMarkdownSource.md) | |[Set-OBSMediaInputCursor](Set-OBSMediaInputCursor.md) | |[Set-OBSMediaSource](Set-OBSMediaSource.md) | |[Set-OBSOutputSettings](Set-OBSOutputSettings.md) | @@ -330,15 +621,18 @@ Aliases |[Set-OBSScrollFilter](Set-OBSScrollFilter.md) | |[Set-OBSShaderFilter](Set-OBSShaderFilter.md) | |[Set-OBSSharpnessFilter](Set-OBSSharpnessFilter.md) | +|[Set-OBSSoundCloudSource](Set-OBSSoundCloudSource.md) | |[Set-OBSSourceFilterEnabled](Set-OBSSourceFilterEnabled.md) | |[Set-OBSSourceFilterIndex](Set-OBSSourceFilterIndex.md) | |[Set-OBSSourceFilterName](Set-OBSSourceFilterName.md) | |[Set-OBSSourceFilterSettings](Set-OBSSourceFilterSettings.md) | |[Set-OBSStreamServiceSettings](Set-OBSStreamServiceSettings.md) | |[Set-OBSStudioModeEnabled](Set-OBSStudioModeEnabled.md) | +|[Set-OBSSwitchSource](Set-OBSSwitchSource.md) | |[Set-OBSTBarPosition](Set-OBSTBarPosition.md) | |[Set-OBSVideoSettings](Set-OBSVideoSettings.md) | |[Set-OBSVLCSource](Set-OBSVLCSource.md) | +|[Set-OBSWaveformSource](Set-OBSWaveformSource.md) | |[Set-OBSWindowSource](Set-OBSWindowSource.md) | |[Show-OBS](Show-OBS.md) | |[Start-OBSEffect](Start-OBSEffect.md) | diff --git a/docs/obs-powershell-websocket-commands.md b/docs/obs-powershell-websocket-commands.md index f2e425dae..88aff1ded 100644 --- a/docs/obs-powershell-websocket-commands.md +++ b/docs/obs-powershell-websocket-commands.md @@ -52,12 +52,14 @@ and are are generated by [PipeScript](https://github.com/StartAutomating/PipeScr |[Get-OBSSceneItemId](Get-OBSSceneItemId.md) |[GetSceneItemId](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemid) | |[Get-OBSSceneItemIndex](Get-OBSSceneItemIndex.md) |[GetSceneItemIndex](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemindex) | |[Get-OBSSceneItemLocked](Get-OBSSceneItemLocked.md) |[GetSceneItemLocked](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlocked) | +|[Get-OBSSceneItemSource](Get-OBSSceneItemSource.md) |[GetSceneItemSource](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource) | |[Get-OBSSceneItemTransform](Get-OBSSceneItemTransform.md) |[GetSceneItemTransform](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemtransform) | |[Get-OBSSceneSceneTransitionOverride](Get-OBSSceneSceneTransitionOverride.md) |[GetSceneSceneTransitionOverride](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenescenetransitionoverride) | |[Get-OBSSceneTransition](Get-OBSSceneTransition.md) |[GetSceneTransitionList](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenetransitionlist) | |[Get-OBSSourceActive](Get-OBSSourceActive.md) |[GetSourceActive](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourceactive) | |[Get-OBSSourceFilter](Get-OBSSourceFilter.md) |[GetSourceFilter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilter) | |[Get-OBSSourceFilterDefaultSettings](Get-OBSSourceFilterDefaultSettings.md) |[GetSourceFilterDefaultSettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterdefaultsettings) | +|[Get-OBSSourceFilterKind](Get-OBSSourceFilterKind.md) |[GetSourceFilterKindList](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist) | |[Get-OBSSourceFilterList](Get-OBSSourceFilterList.md) |[GetSourceFilterList](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterlist) | |[Get-OBSSourceScreenshot](Get-OBSSourceScreenshot.md) |[GetSourceScreenshot](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcescreenshot) | |[Get-OBSSpecialInputs](Get-OBSSpecialInputs.md) |[GetSpecialInputs](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getspecialinputs) | diff --git a/docs/obs.powershell.websocket.BroadcastCustomEvent.md b/docs/obs.powershell.websocket.BroadcastCustomEvent.md index 4a563af3c..7c1e646db 100644 --- a/docs/obs.powershell.websocket.BroadcastCustomEvent.md +++ b/docs/obs.powershell.websocket.BroadcastCustomEvent.md @@ -1,91 +1,49 @@ Send-OBSCustomEvent ------------------- - - - ### Synopsis Send-OBSCustomEvent : BroadcastCustomEvent - - --- - ### Description Broadcasts a `CustomEvent` to all WebSocket clients. Receivers are clients which are identified and subscribed. - Send-OBSCustomEvent calls the OBS WebSocket with a request of type BroadcastCustomEvent. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#broadcastcustomevent](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#broadcastcustomevent) - - - - --- - ### Parameters #### **EventData** - Data payload to emit to all receivers - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSCustomEvent [-EventData] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.CallVendorRequest.md b/docs/obs.powershell.websocket.CallVendorRequest.md index 91ea9061e..7f3c680ba 100644 --- a/docs/obs.powershell.websocket.CallVendorRequest.md +++ b/docs/obs.powershell.websocket.CallVendorRequest.md @@ -1,17 +1,11 @@ Send-OBSCallVendorRequest ------------------------- - - - ### Synopsis Send-OBSCallVendorRequest : CallVendorRequest - - --- - ### Description Call a request registered to a vendor. @@ -19,106 +13,54 @@ Call a request registered to a vendor. A vendor is a unique name registered by a third-party plugin or script, which allows for custom requests and events to be added to obs-websocket. If a plugin or script implements vendor requests or events, documentation is expected to be provided with them. - Send-OBSCallVendorRequest calls the OBS WebSocket with a request of type CallVendorRequest. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#callvendorrequest](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#callvendorrequest) - - - - --- - ### Parameters #### **VendorName** - Name of the vendor to use - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **RequestType** - The request type to call - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **RequestData** - Object containing appropriate request data - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|false |3 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSCallVendorRequest [-VendorName] [-RequestType] [[-RequestData] ] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.CreateInput.md b/docs/obs.powershell.websocket.CreateInput.md index f8906181f..880b6f2b4 100644 --- a/docs/obs.powershell.websocket.CreateInput.md +++ b/docs/obs.powershell.websocket.CreateInput.md @@ -1,152 +1,85 @@ Add-OBSInput ------------ - - - ### Synopsis Add-OBSInput : CreateInput - - --- - ### Description Creates a new input, adding it as a scene item to the specified scene. - Add-OBSInput calls the OBS WebSocket with a request of type CreateInput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createinput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createinput) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to add the input to as a scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to add the input to as a scene item +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputName** - Name of the new input to created - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **InputKind** - The kind of input to be created - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **InputSettings** - Settings object to initialize the input with - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|false |4 |true (ByPropertyName)| - - +|`[PSObject]`|false |5 |true (ByPropertyName)| #### **SceneItemEnabled** - Whether to set the created scene item to enabled or disabled - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Add-OBSInput [-SceneName] [-InputName] [-InputKind] [[-InputSettings] ] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] +Add-OBSInput [[-SceneName] ] [[-SceneUuid] ] [-InputName] [-InputKind] [[-InputSettings] ] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.CreateProfile.md b/docs/obs.powershell.websocket.CreateProfile.md index 07234bf23..7a7ff8b3a 100644 --- a/docs/obs.powershell.websocket.CreateProfile.md +++ b/docs/obs.powershell.websocket.CreateProfile.md @@ -1,91 +1,49 @@ Add-OBSProfile -------------- - - - ### Synopsis Add-OBSProfile : CreateProfile - - --- - ### Description Creates a new profile, switching to it in the process - Add-OBSProfile calls the OBS WebSocket with a request of type CreateProfile. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createprofile](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createprofile) - - - - --- - ### Parameters #### **ProfileName** - Name for the new profile - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Add-OBSProfile [-ProfileName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.CreateScene.md b/docs/obs.powershell.websocket.CreateScene.md index 9cc37d711..5d09a9f9b 100644 --- a/docs/obs.powershell.websocket.CreateScene.md +++ b/docs/obs.powershell.websocket.CreateScene.md @@ -1,91 +1,49 @@ Add-OBSScene ------------ - - - ### Synopsis Add-OBSScene : CreateScene - - --- - ### Description Creates a new scene in OBS. - Add-OBSScene calls the OBS WebSocket with a request of type CreateScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscene) - - - - --- - ### Parameters #### **SceneName** - Name for the new scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Add-OBSScene [-SceneName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.CreateSceneCollection.md b/docs/obs.powershell.websocket.CreateSceneCollection.md index 9eeca7b14..75942e358 100644 --- a/docs/obs.powershell.websocket.CreateSceneCollection.md +++ b/docs/obs.powershell.websocket.CreateSceneCollection.md @@ -1,93 +1,51 @@ Add-OBSSceneCollection ---------------------- - - - ### Synopsis Add-OBSSceneCollection : CreateSceneCollection - - --- - ### Description Creates a new scene collection, switching to it in the process. Note: This will block until the collection has finished changing. - Add-OBSSceneCollection calls the OBS WebSocket with a request of type CreateSceneCollection. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscenecollection](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscenecollection) - - - - --- - ### Parameters #### **SceneCollectionName** - Name for the new scene collection - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Add-OBSSceneCollection [-SceneCollectionName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.CreateSceneItem.md b/docs/obs.powershell.websocket.CreateSceneItem.md index ed0ef7d9c..0100dc14f 100644 --- a/docs/obs.powershell.websocket.CreateSceneItem.md +++ b/docs/obs.powershell.websocket.CreateSceneItem.md @@ -1,124 +1,80 @@ Add-OBSSceneItem ---------------- - - - ### Synopsis Add-OBSSceneItem : CreateSceneItem - - --- - ### Description Creates a new scene item using a source. Scenes only - Add-OBSSceneItem calls the OBS WebSocket with a request of type CreateSceneItem. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to create the new item in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to create the new item in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SourceName** - Name of the source to add to the scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| +|`[String]`|false |3 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to add to the scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |4 |true (ByPropertyName)| #### **SceneItemEnabled** - Enable state to apply to the scene item on creation - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Add-OBSSceneItem [-SceneName] [-SourceName] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] +Add-OBSSceneItem [[-SceneName] ] [[-SceneUuid] ] [[-SourceName] ] [[-SourceUuid] ] [-SceneItemEnabled] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.CreateSourceFilter.md b/docs/obs.powershell.websocket.CreateSourceFilter.md index 3da16df26..bee06b4aa 100644 --- a/docs/obs.powershell.websocket.CreateSourceFilter.md +++ b/docs/obs.powershell.websocket.CreateSourceFilter.md @@ -1,137 +1,78 @@ Add-OBSSourceFilter ------------------- - - - ### Synopsis Add-OBSSourceFilter : CreateSourceFilter - - --- - ### Description Creates a new filter, adding it to the specified source. - Add-OBSSourceFilter calls the OBS WebSocket with a request of type CreateSourceFilter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsourcefilter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsourcefilter) - - - - --- - ### Parameters #### **SourceName** - Name of the source to add the filter to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to add the filter to +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the new filter to be created - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **FilterKind** - The kind of filter to be created - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **FilterSettings** - Settings object to initialize the filter with - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|false |4 |true (ByPropertyName)| - - +|`[PSObject]`|false |5 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Add-OBSSourceFilter [-SourceName] [-FilterName] [-FilterKind] [[-FilterSettings] ] [-PassThru] [-NoResponse] [] +Add-OBSSourceFilter [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-FilterKind] [[-FilterSettings] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.DuplicateSceneItem.md b/docs/obs.powershell.websocket.DuplicateSceneItem.md index 34b0ac690..ac28e53f7 100644 --- a/docs/obs.powershell.websocket.DuplicateSceneItem.md +++ b/docs/obs.powershell.websocket.DuplicateSceneItem.md @@ -1,124 +1,80 @@ Copy-OBSSceneItem ----------------- - - - ### Synopsis Copy-OBSSceneItem : DuplicateSceneItem - - --- - ### Description Duplicates a scene item, copying all transform and crop info. Scenes only - Copy-OBSSceneItem calls the OBS WebSocket with a request of type DuplicateSceneItem. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#duplicatesceneitem](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#duplicatesceneitem) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **DestinationSceneName** - Name of the scene to create the duplicated item in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|false |3 |true (ByPropertyName)| +|`[String]`|false |4 |true (ByPropertyName)| +#### **DestinationSceneUuid** +UUID of the scene to create the duplicated item in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |5 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Copy-OBSSceneItem [-SceneName] [-SceneItemId] [[-DestinationSceneName] ] [-PassThru] [-NoResponse] [] +Copy-OBSSceneItem [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [[-DestinationSceneName] ] [[-DestinationSceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetCurrentPreviewScene.md b/docs/obs.powershell.websocket.GetCurrentPreviewScene.md index 06325948a..f1e76282e 100644 --- a/docs/obs.powershell.websocket.GetCurrentPreviewScene.md +++ b/docs/obs.powershell.websocket.GetCurrentPreviewScene.md @@ -1,89 +1,55 @@ Get-OBSCurrentPreviewScene -------------------------- - - - ### Synopsis Get-OBSCurrentPreviewScene : GetCurrentPreviewScene - - --- - ### Description Gets the current preview scene. Only available when studio mode is enabled. +Note: This request is slated to have the `currentPreview`-prefixed fields removed from in an upcoming RPC version. Get-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type GetCurrentPreviewScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentpreviewscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentpreviewscene) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSCurrentPreviewScene ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSCurrentPreviewScene [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetCurrentProgramScene.md b/docs/obs.powershell.websocket.GetCurrentProgramScene.md index 274bce2fa..0edc6026b 100644 --- a/docs/obs.powershell.websocket.GetCurrentProgramScene.md +++ b/docs/obs.powershell.websocket.GetCurrentProgramScene.md @@ -1,87 +1,53 @@ Get-OBSCurrentProgramScene -------------------------- - - - ### Synopsis Get-OBSCurrentProgramScene : GetCurrentProgramScene - - --- - ### Description Gets the current program scene. +Note: This request is slated to have the `currentProgram`-prefixed fields removed from in an upcoming RPC version. Get-OBSCurrentProgramScene calls the OBS WebSocket with a request of type GetCurrentProgramScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentprogramscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentprogramscene) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSCurrentProgramScene ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSCurrentProgramScene [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetCurrentSceneTransition.md b/docs/obs.powershell.websocket.GetCurrentSceneTransition.md index 0161e5545..8a01520e4 100644 --- a/docs/obs.powershell.websocket.GetCurrentSceneTransition.md +++ b/docs/obs.powershell.websocket.GetCurrentSceneTransition.md @@ -1,87 +1,51 @@ Get-OBSCurrentSceneTransition ----------------------------- - - - ### Synopsis Get-OBSCurrentSceneTransition : GetCurrentSceneTransition - - --- - ### Description Gets information about the current scene transition. - Get-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type GetCurrentSceneTransition. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransition](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransition) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSCurrentSceneTransition ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSCurrentSceneTransition [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetCurrentSceneTransitionCursor.md b/docs/obs.powershell.websocket.GetCurrentSceneTransitionCursor.md index 3eb2a5476..f8b625fe6 100644 --- a/docs/obs.powershell.websocket.GetCurrentSceneTransitionCursor.md +++ b/docs/obs.powershell.websocket.GetCurrentSceneTransitionCursor.md @@ -1,89 +1,53 @@ Get-OBSCurrentSceneTransitionCursor ----------------------------------- - - - ### Synopsis Get-OBSCurrentSceneTransitionCursor : GetCurrentSceneTransitionCursor - - --- - ### Description Gets the cursor position of the current scene transition. Note: `transitionCursor` will return 1.0 when the transition is inactive. - Get-OBSCurrentSceneTransitionCursor calls the OBS WebSocket with a request of type GetCurrentSceneTransitionCursor. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransitioncursor](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransitioncursor) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSCurrentSceneTransitionCursor ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSCurrentSceneTransitionCursor [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetGroupList.md b/docs/obs.powershell.websocket.GetGroupList.md index 7de2f754e..aaa83eb06 100644 --- a/docs/obs.powershell.websocket.GetGroupList.md +++ b/docs/obs.powershell.websocket.GetGroupList.md @@ -1,89 +1,53 @@ Get-OBSGroup ------------ - - - ### Synopsis Get-OBSGroup : GetGroupList - - --- - ### Description Gets an array of all groups in OBS. Groups in OBS are actually scenes, but renamed and modified. In obs-websocket, we treat them as scenes where we can. - Get-OBSGroup calls the OBS WebSocket with a request of type GetGroupList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgrouplist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgrouplist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSGroup ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSGroup [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetGroupSceneItemList.md b/docs/obs.powershell.websocket.GetGroupSceneItemList.md index 73300684f..894492ad2 100644 --- a/docs/obs.powershell.websocket.GetGroupSceneItemList.md +++ b/docs/obs.powershell.websocket.GetGroupSceneItemList.md @@ -1,17 +1,11 @@ Get-OBSGroupSceneItem --------------------- - - - ### Synopsis Get-OBSGroupSceneItem : GetGroupSceneItemList - - --- - ### Description Basically GetSceneItemList, but for groups. @@ -20,77 +14,48 @@ Using groups at all in OBS is discouraged, as they are very broken under the hoo Groups only - Get-OBSGroupSceneItem calls the OBS WebSocket with a request of type GetGroupSceneItemList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgroupsceneitemlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgroupsceneitemlist) - - - - --- - ### Parameters #### **SceneName** - Name of the group to get the items of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the group to get the items of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSGroupSceneItem [-SceneName] [-PassThru] [-NoResponse] [] +Get-OBSGroupSceneItem [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetHotkeyList.md b/docs/obs.powershell.websocket.GetHotkeyList.md index 7035f119c..f7f7686dc 100644 --- a/docs/obs.powershell.websocket.GetHotkeyList.md +++ b/docs/obs.powershell.websocket.GetHotkeyList.md @@ -1,87 +1,53 @@ Get-OBSHotkey ------------- - - - ### Synopsis Get-OBSHotkey : GetHotkeyList - - --- - ### Description -Gets an array of all hotkey names in OBS +Gets an array of all hotkey names in OBS. +Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. Get-OBSHotkey calls the OBS WebSocket with a request of type GetHotkeyList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gethotkeylist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gethotkeylist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSHotkey ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSHotkey [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetInputAudioBalance.md b/docs/obs.powershell.websocket.GetInputAudioBalance.md index 9cc26b9de..6e3427e09 100644 --- a/docs/obs.powershell.websocket.GetInputAudioBalance.md +++ b/docs/obs.powershell.websocket.GetInputAudioBalance.md @@ -1,92 +1,57 @@ Get-OBSInputAudioBalance ------------------------ - - - ### Synopsis Get-OBSInputAudioBalance : GetInputAudioBalance - - --- - ### Description Gets the audio balance of an input. - Get-OBSInputAudioBalance calls the OBS WebSocket with a request of type GetInputAudioBalance. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiobalance](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiobalance) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the audio balance of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the audio balance of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputAudioBalance [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputAudioBalance [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetInputAudioMonitorType.md b/docs/obs.powershell.websocket.GetInputAudioMonitorType.md index cd83d46b4..0b494bda0 100644 --- a/docs/obs.powershell.websocket.GetInputAudioMonitorType.md +++ b/docs/obs.powershell.websocket.GetInputAudioMonitorType.md @@ -1,17 +1,11 @@ Get-OBSInputAudioMonitorType ---------------------------- - - - ### Synopsis Get-OBSInputAudioMonitorType : GetInputAudioMonitorType - - --- - ### Description Gets the audio monitor type of an input. @@ -22,77 +16,48 @@ The available audio monitor types are: - `OBS_MONITORING_TYPE_MONITOR_ONLY` - `OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT` - Get-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type GetInputAudioMonitorType. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiomonitortype](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiomonitortype) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the audio monitor type of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the audio monitor type of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputAudioMonitorType [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputAudioMonitorType [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetInputAudioSyncOffset.md b/docs/obs.powershell.websocket.GetInputAudioSyncOffset.md index b0c4e0a26..b0041482d 100644 --- a/docs/obs.powershell.websocket.GetInputAudioSyncOffset.md +++ b/docs/obs.powershell.websocket.GetInputAudioSyncOffset.md @@ -1,94 +1,59 @@ Get-OBSInputAudioSyncOffset --------------------------- - - - ### Synopsis Get-OBSInputAudioSyncOffset : GetInputAudioSyncOffset - - --- - ### Description Gets the audio sync offset of an input. Note: The audio sync offset can be negative too! - Get-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type GetInputAudioSyncOffset. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiosyncoffset](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiosyncoffset) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the audio sync offset of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the audio sync offset of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputAudioSyncOffset [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputAudioSyncOffset [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetInputAudioTracks.md b/docs/obs.powershell.websocket.GetInputAudioTracks.md index 9ba78d8c8..2b03a2b7c 100644 --- a/docs/obs.powershell.websocket.GetInputAudioTracks.md +++ b/docs/obs.powershell.websocket.GetInputAudioTracks.md @@ -1,92 +1,57 @@ Get-OBSInputAudioTracks ----------------------- - - - ### Synopsis Get-OBSInputAudioTracks : GetInputAudioTracks - - --- - ### Description Gets the enable state of all audio tracks of an input. - Get-OBSInputAudioTracks calls the OBS WebSocket with a request of type GetInputAudioTracks. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiotracks](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiotracks) - - - - --- - ### Parameters #### **InputName** - Name of the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputAudioTracks [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputAudioTracks [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetInputDefaultSettings.md b/docs/obs.powershell.websocket.GetInputDefaultSettings.md index 75f5b8413..6f473925d 100644 --- a/docs/obs.powershell.websocket.GetInputDefaultSettings.md +++ b/docs/obs.powershell.websocket.GetInputDefaultSettings.md @@ -1,91 +1,49 @@ Get-OBSInputDefaultSettings --------------------------- - - - ### Synopsis Get-OBSInputDefaultSettings : GetInputDefaultSettings - - --- - ### Description Gets the default settings for an input kind. - Get-OBSInputDefaultSettings calls the OBS WebSocket with a request of type GetInputDefaultSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputdefaultsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputdefaultsettings) - - - - --- - ### Parameters #### **InputKind** - Input kind to get the default settings for - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSInputDefaultSettings [-InputKind] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetInputKindList.md b/docs/obs.powershell.websocket.GetInputKindList.md index e0d931181..73220af5f 100644 --- a/docs/obs.powershell.websocket.GetInputKindList.md +++ b/docs/obs.powershell.websocket.GetInputKindList.md @@ -1,91 +1,49 @@ Get-OBSInputKind ---------------- - - - ### Synopsis Get-OBSInputKind : GetInputKindList - - --- - ### Description Gets an array of all available input kinds in OBS. - Get-OBSInputKind calls the OBS WebSocket with a request of type GetInputKindList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputkindlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputkindlist) - - - - --- - ### Parameters #### **Unversioned** - True == Return all kinds as unversioned, False == Return with version suffixes (if available) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSInputKind [-Unversioned] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetInputList.md b/docs/obs.powershell.websocket.GetInputList.md index de519ef0e..7b3ff767d 100644 --- a/docs/obs.powershell.websocket.GetInputList.md +++ b/docs/obs.powershell.websocket.GetInputList.md @@ -1,91 +1,49 @@ Get-OBSInput ------------ - - - ### Synopsis Get-OBSInput : GetInputList - - --- - ### Description Gets an array of all inputs in OBS. - Get-OBSInput calls the OBS WebSocket with a request of type GetInputList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputlist) - - - - --- - ### Parameters #### **InputKind** - Restrict the array to only inputs of the specified kind - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSInput [[-InputKind] ] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetInputMute.md b/docs/obs.powershell.websocket.GetInputMute.md index fcb7ce789..24a1e6279 100644 --- a/docs/obs.powershell.websocket.GetInputMute.md +++ b/docs/obs.powershell.websocket.GetInputMute.md @@ -1,92 +1,57 @@ Get-OBSInputMute ---------------- - - - ### Synopsis Get-OBSInputMute : GetInputMute - - --- - ### Description Gets the audio mute state of an input. - Get-OBSInputMute calls the OBS WebSocket with a request of type GetInputMute. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputmute](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputmute) - - - - --- - ### Parameters #### **InputName** - Name of input to get the mute state of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of input to get the mute state of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputMute [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputMute [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetInputPropertiesListPropertyItems.md b/docs/obs.powershell.websocket.GetInputPropertiesListPropertyItems.md index 95fe133df..f7accf73c 100644 --- a/docs/obs.powershell.websocket.GetInputPropertiesListPropertyItems.md +++ b/docs/obs.powershell.websocket.GetInputPropertiesListPropertyItems.md @@ -1,109 +1,66 @@ Get-OBSInputPropertiesListPropertyItems --------------------------------------- - - - ### Synopsis Get-OBSInputPropertiesListPropertyItems : GetInputPropertiesListPropertyItems - - --- - ### Description Gets the items of a list property from an input's properties. Note: Use this in cases where an input provides a dynamic, selectable list of items. For example, display capture, where it provides a list of available displays. - Get-OBSInputPropertiesListPropertyItems calls the OBS WebSocket with a request of type GetInputPropertiesListPropertyItems. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputpropertieslistpropertyitems](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputpropertieslistpropertyitems) - - - - --- - ### Parameters #### **InputName** - Name of the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PropertyName** - Name of the list property to get the items of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputPropertiesListPropertyItems [-InputName] [-PropertyName] [-PassThru] [-NoResponse] [] +Get-OBSInputPropertiesListPropertyItems [[-InputName] ] [[-InputUuid] ] [-PropertyName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetInputSettings.md b/docs/obs.powershell.websocket.GetInputSettings.md index c8b91a039..4f02ffca7 100644 --- a/docs/obs.powershell.websocket.GetInputSettings.md +++ b/docs/obs.powershell.websocket.GetInputSettings.md @@ -1,94 +1,59 @@ Get-OBSInputSettings -------------------- - - - ### Synopsis Get-OBSInputSettings : GetInputSettings - - --- - ### Description Gets the settings of an input. Note: Does not include defaults. To create the entire settings object, overlay `inputSettings` over the `defaultInputSettings` provided by `GetInputDefaultSettings`. - Get-OBSInputSettings calls the OBS WebSocket with a request of type GetInputSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputsettings) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the settings of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the settings of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputSettings [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputSettings [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetInputVolume.md b/docs/obs.powershell.websocket.GetInputVolume.md index d58d7f6cd..d6eb31b3c 100644 --- a/docs/obs.powershell.websocket.GetInputVolume.md +++ b/docs/obs.powershell.websocket.GetInputVolume.md @@ -1,92 +1,57 @@ Get-OBSInputVolume ------------------ - - - ### Synopsis Get-OBSInputVolume : GetInputVolume - - --- - ### Description Gets the current volume setting of an input. - Get-OBSInputVolume calls the OBS WebSocket with a request of type GetInputVolume. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputvolume](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputvolume) - - - - --- - ### Parameters #### **InputName** - Name of the input to get the volume of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to get the volume of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSInputVolume [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSInputVolume [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetLastReplayBufferReplay.md b/docs/obs.powershell.websocket.GetLastReplayBufferReplay.md index 314377c50..cc66e5b12 100644 --- a/docs/obs.powershell.websocket.GetLastReplayBufferReplay.md +++ b/docs/obs.powershell.websocket.GetLastReplayBufferReplay.md @@ -1,87 +1,51 @@ Get-OBSLastReplayBufferReplay ----------------------------- - - - ### Synopsis Get-OBSLastReplayBufferReplay : GetLastReplayBufferReplay - - --- - ### Description Gets the filename of the last replay buffer save file. - Get-OBSLastReplayBufferReplay calls the OBS WebSocket with a request of type GetLastReplayBufferReplay. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getlastreplaybufferreplay](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getlastreplaybufferreplay) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSLastReplayBufferReplay ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSLastReplayBufferReplay [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetMediaInputStatus.md b/docs/obs.powershell.websocket.GetMediaInputStatus.md index e37c03d5d..53b533283 100644 --- a/docs/obs.powershell.websocket.GetMediaInputStatus.md +++ b/docs/obs.powershell.websocket.GetMediaInputStatus.md @@ -1,17 +1,11 @@ Get-OBSMediaInputStatus ----------------------- - - - ### Synopsis Get-OBSMediaInputStatus : GetMediaInputStatus - - --- - ### Description Gets the status of a media input. @@ -27,77 +21,48 @@ Media States: - `OBS_MEDIA_STATE_ENDED` - `OBS_MEDIA_STATE_ERROR` - Get-OBSMediaInputStatus calls the OBS WebSocket with a request of type GetMediaInputStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmediainputstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmediainputstatus) - - - - --- - ### Parameters #### **InputName** - Name of the media input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the media input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSMediaInputStatus [-InputName] [-PassThru] [-NoResponse] [] +Get-OBSMediaInputStatus [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetMonitorList.md b/docs/obs.powershell.websocket.GetMonitorList.md index 79d775f4f..1f01b788d 100644 --- a/docs/obs.powershell.websocket.GetMonitorList.md +++ b/docs/obs.powershell.websocket.GetMonitorList.md @@ -1,87 +1,51 @@ Get-OBSMonitor -------------- - - - ### Synopsis Get-OBSMonitor : GetMonitorList - - --- - ### Description Gets a list of connected monitors and information about them. - Get-OBSMonitor calls the OBS WebSocket with a request of type GetMonitorList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmonitorlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmonitorlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSMonitor ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSMonitor [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetOutputList.md b/docs/obs.powershell.websocket.GetOutputList.md index cd84c3b65..1a3000617 100644 --- a/docs/obs.powershell.websocket.GetOutputList.md +++ b/docs/obs.powershell.websocket.GetOutputList.md @@ -1,87 +1,51 @@ Get-OBSOutput ------------- - - - ### Synopsis Get-OBSOutput : GetOutputList - - --- - ### Description Gets the list of available outputs. - Get-OBSOutput calls the OBS WebSocket with a request of type GetOutputList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSOutput ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSOutput [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetOutputSettings.md b/docs/obs.powershell.websocket.GetOutputSettings.md index d2dee659f..2d47fd3f9 100644 --- a/docs/obs.powershell.websocket.GetOutputSettings.md +++ b/docs/obs.powershell.websocket.GetOutputSettings.md @@ -1,91 +1,49 @@ Get-OBSOutputSettings --------------------- - - - ### Synopsis Get-OBSOutputSettings : GetOutputSettings - - --- - ### Description Gets the settings of an output. - Get-OBSOutputSettings calls the OBS WebSocket with a request of type GetOutputSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputsettings) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSOutputSettings [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetOutputStatus.md b/docs/obs.powershell.websocket.GetOutputStatus.md index 6a82022ba..40173340a 100644 --- a/docs/obs.powershell.websocket.GetOutputStatus.md +++ b/docs/obs.powershell.websocket.GetOutputStatus.md @@ -1,91 +1,49 @@ Get-OBSOutputStatus ------------------- - - - ### Synopsis Get-OBSOutputStatus : GetOutputStatus - - --- - ### Description Gets the status of an output. - Get-OBSOutputStatus calls the OBS WebSocket with a request of type GetOutputStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputstatus) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSOutputStatus [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetPersistentData.md b/docs/obs.powershell.websocket.GetPersistentData.md index 924ebb340..714912084 100644 --- a/docs/obs.powershell.websocket.GetPersistentData.md +++ b/docs/obs.powershell.websocket.GetPersistentData.md @@ -1,106 +1,56 @@ Get-OBSPersistentData --------------------- - - - ### Synopsis Get-OBSPersistentData : GetPersistentData - - --- - ### Description Gets the value of a "slot" from the selected persistent data realm. - Get-OBSPersistentData calls the OBS WebSocket with a request of type GetPersistentData. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getpersistentdata](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getpersistentdata) - - - - --- - ### Parameters #### **Realm** - The data realm to select. `OBS_WEBSOCKET_DATA_REALM_GLOBAL` or `OBS_WEBSOCKET_DATA_REALM_PROFILE` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **SlotName** - The name of the slot to retrieve data from - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSPersistentData [-Realm] [-SlotName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetProfileList.md b/docs/obs.powershell.websocket.GetProfileList.md index 5cb9925e9..71be8e6bd 100644 --- a/docs/obs.powershell.websocket.GetProfileList.md +++ b/docs/obs.powershell.websocket.GetProfileList.md @@ -1,87 +1,51 @@ Get-OBSProfile -------------- - - - ### Synopsis Get-OBSProfile : GetProfileList - - --- - ### Description Gets an array of all profiles - Get-OBSProfile calls the OBS WebSocket with a request of type GetProfileList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofilelist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofilelist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSProfile ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSProfile [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetProfileParameter.md b/docs/obs.powershell.websocket.GetProfileParameter.md index 578a320cd..985f0424e 100644 --- a/docs/obs.powershell.websocket.GetProfileParameter.md +++ b/docs/obs.powershell.websocket.GetProfileParameter.md @@ -1,106 +1,56 @@ Get-OBSProfileParameter ----------------------- - - - ### Synopsis Get-OBSProfileParameter : GetProfileParameter - - --- - ### Description Gets a parameter from the current profile's configuration. - Get-OBSProfileParameter calls the OBS WebSocket with a request of type GetProfileParameter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofileparameter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofileparameter) - - - - --- - ### Parameters #### **ParameterCategory** - Category of the parameter to get - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **ParameterName** - Name of the parameter to get - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSProfileParameter [-ParameterCategory] [-ParameterName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetRecordDirectory.md b/docs/obs.powershell.websocket.GetRecordDirectory.md index c1d1df1d8..4f6f35c3c 100644 --- a/docs/obs.powershell.websocket.GetRecordDirectory.md +++ b/docs/obs.powershell.websocket.GetRecordDirectory.md @@ -1,87 +1,51 @@ Get-OBSRecordDirectory ---------------------- - - - ### Synopsis Get-OBSRecordDirectory : GetRecordDirectory - - --- - ### Description Gets the current directory that the record output is set to. - Get-OBSRecordDirectory calls the OBS WebSocket with a request of type GetRecordDirectory. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecorddirectory](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecorddirectory) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSRecordDirectory ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSRecordDirectory [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetRecordStatus.md b/docs/obs.powershell.websocket.GetRecordStatus.md index 0815aa501..02e6ad400 100644 --- a/docs/obs.powershell.websocket.GetRecordStatus.md +++ b/docs/obs.powershell.websocket.GetRecordStatus.md @@ -1,87 +1,51 @@ Get-OBSRecordStatus ------------------- - - - ### Synopsis Get-OBSRecordStatus : GetRecordStatus - - --- - ### Description Gets the status of the record output. - Get-OBSRecordStatus calls the OBS WebSocket with a request of type GetRecordStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecordstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecordstatus) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSRecordStatus ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSRecordStatus [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetReplayBufferStatus.md b/docs/obs.powershell.websocket.GetReplayBufferStatus.md index 323b9aa66..952ce859d 100644 --- a/docs/obs.powershell.websocket.GetReplayBufferStatus.md +++ b/docs/obs.powershell.websocket.GetReplayBufferStatus.md @@ -1,87 +1,51 @@ Get-OBSReplayBufferStatus ------------------------- - - - ### Synopsis Get-OBSReplayBufferStatus : GetReplayBufferStatus - - --- - ### Description Gets the status of the replay buffer output. - Get-OBSReplayBufferStatus calls the OBS WebSocket with a request of type GetReplayBufferStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getreplaybufferstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getreplaybufferstatus) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSReplayBufferStatus ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSReplayBufferStatus [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetSceneCollectionList.md b/docs/obs.powershell.websocket.GetSceneCollectionList.md index d3787f3f7..b1ad32493 100644 --- a/docs/obs.powershell.websocket.GetSceneCollectionList.md +++ b/docs/obs.powershell.websocket.GetSceneCollectionList.md @@ -1,87 +1,51 @@ Get-OBSSceneCollection ---------------------- - - - ### Synopsis Get-OBSSceneCollection : GetSceneCollectionList - - --- - ### Description Gets an array of all scene collections - Get-OBSSceneCollection calls the OBS WebSocket with a request of type GetSceneCollectionList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenecollectionlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenecollectionlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSSceneCollection ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSSceneCollection [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetSceneItemBlendMode.md b/docs/obs.powershell.websocket.GetSceneItemBlendMode.md index 91d1bac1a..15464071f 100644 --- a/docs/obs.powershell.websocket.GetSceneItemBlendMode.md +++ b/docs/obs.powershell.websocket.GetSceneItemBlendMode.md @@ -1,17 +1,11 @@ Get-OBSSceneItemBlendMode ------------------------- - - - ### Synopsis Get-OBSSceneItemBlendMode : GetSceneItemBlendMode - - --- - ### Description Gets the blend mode of a scene item. @@ -28,92 +22,55 @@ Blend modes: Scenes and Groups - Get-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type GetSceneItemBlendMode. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemblendmode](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemblendmode) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemBlendMode [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemBlendMode [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSceneItemEnabled.md b/docs/obs.powershell.websocket.GetSceneItemEnabled.md index ff916a40c..8fbc1c859 100644 --- a/docs/obs.powershell.websocket.GetSceneItemEnabled.md +++ b/docs/obs.powershell.websocket.GetSceneItemEnabled.md @@ -1,109 +1,66 @@ Get-OBSSceneItemEnabled ----------------------- - - - ### Synopsis Get-OBSSceneItemEnabled : GetSceneItemEnabled - - --- - ### Description Gets the enable state of a scene item. Scenes and Groups - Get-OBSSceneItemEnabled calls the OBS WebSocket with a request of type GetSceneItemEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemenabled) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemEnabled [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemEnabled [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSceneItemId.md b/docs/obs.powershell.websocket.GetSceneItemId.md index 7dda969b0..5cae064ba 100644 --- a/docs/obs.powershell.websocket.GetSceneItemId.md +++ b/docs/obs.powershell.websocket.GetSceneItemId.md @@ -1,124 +1,73 @@ Get-OBSSceneItemId ------------------ - - - ### Synopsis Get-OBSSceneItemId : GetSceneItemId - - --- - ### Description Searches a scene for a source, and returns its id. Scenes and Groups - Get-OBSSceneItemId calls the OBS WebSocket with a request of type GetSceneItemId. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemid](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemid) - - - - --- - ### Parameters #### **SceneName** - Name of the scene or group to search in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene or group to search in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SourceName** - Name of the source to find - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **SearchOffset** - Number of matches to skip during search. >= 0 means first forward. -1 means last (top) item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |3 |true (ByPropertyName)| - - +|`[Double]`|false |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemId [-SceneName] [-SourceName] [[-SearchOffset] ] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemId [[-SceneName] ] [[-SceneUuid] ] [-SourceName] [[-SearchOffset] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSceneItemIndex.md b/docs/obs.powershell.websocket.GetSceneItemIndex.md index 3394792e2..1c6e8e78b 100644 --- a/docs/obs.powershell.websocket.GetSceneItemIndex.md +++ b/docs/obs.powershell.websocket.GetSceneItemIndex.md @@ -1,17 +1,11 @@ Get-OBSSceneItemIndex --------------------- - - - ### Synopsis Get-OBSSceneItemIndex : GetSceneItemIndex - - --- - ### Description Gets the index position of a scene item in a scene. @@ -20,92 +14,55 @@ An index of 0 is at the bottom of the source list in the UI. Scenes and Groups - Get-OBSSceneItemIndex calls the OBS WebSocket with a request of type GetSceneItemIndex. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemindex](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemindex) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemIndex [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemIndex [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSceneItemList.md b/docs/obs.powershell.websocket.GetSceneItemList.md index 3b87e0c06..98e65e008 100644 --- a/docs/obs.powershell.websocket.GetSceneItemList.md +++ b/docs/obs.powershell.websocket.GetSceneItemList.md @@ -1,94 +1,59 @@ Get-OBSSceneItem ---------------- - - - ### Synopsis Get-OBSSceneItem : GetSceneItemList - - --- - ### Description Gets a list of all scene items in a scene. Scenes only - Get-OBSSceneItem calls the OBS WebSocket with a request of type GetSceneItemList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlist) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to get the items of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to get the items of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItem [-SceneName] [-PassThru] [-NoResponse] [] +Get-OBSSceneItem [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSceneItemLocked.md b/docs/obs.powershell.websocket.GetSceneItemLocked.md index 611057446..8f27151e5 100644 --- a/docs/obs.powershell.websocket.GetSceneItemLocked.md +++ b/docs/obs.powershell.websocket.GetSceneItemLocked.md @@ -1,109 +1,66 @@ Get-OBSSceneItemLocked ---------------------- - - - ### Synopsis Get-OBSSceneItemLocked : GetSceneItemLocked - - --- - ### Description Gets the lock state of a scene item. Scenes and Groups - Get-OBSSceneItemLocked calls the OBS WebSocket with a request of type GetSceneItemLocked. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlocked](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlocked) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemLocked [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemLocked [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSceneItemSource.md b/docs/obs.powershell.websocket.GetSceneItemSource.md new file mode 100644 index 000000000..468336750 --- /dev/null +++ b/docs/obs.powershell.websocket.GetSceneItemSource.md @@ -0,0 +1,64 @@ +Get-OBSSceneItemSource +---------------------- + +### Synopsis +Get-OBSSceneItemSource : GetSceneItemSource + +--- + +### Description + +Gets the source associated with a scene item. + +Get-OBSSceneItemSource calls the OBS WebSocket with a request of type GetSceneItemSource. + +--- + +### Related Links +* [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource) + +--- + +### Parameters +#### **SceneName** +Name of the scene the item is in + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |1 |true (ByPropertyName)| + +#### **SceneUuid** +UUID of the scene the item is in + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| + +#### **SceneItemId** +Numeric ID of the scene item + +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[Double]`|true |3 |true (ByPropertyName)| + +#### **PassThru** +If set, will return the information that would otherwise be sent to OBS. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-----------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| + +#### **NoResponse** +If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-----------------------------------------------------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| + +--- + +### Syntax +```PowerShell +Get-OBSSceneItemSource [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] +``` diff --git a/docs/obs.powershell.websocket.GetSceneItemTransform.md b/docs/obs.powershell.websocket.GetSceneItemTransform.md index 6d3ba1ae0..f842d0a3b 100644 --- a/docs/obs.powershell.websocket.GetSceneItemTransform.md +++ b/docs/obs.powershell.websocket.GetSceneItemTransform.md @@ -1,109 +1,66 @@ Get-OBSSceneItemTransform ------------------------- - - - ### Synopsis Get-OBSSceneItemTransform : GetSceneItemTransform - - --- - ### Description Gets the transform and crop info of a scene item. Scenes and Groups - Get-OBSSceneItemTransform calls the OBS WebSocket with a request of type GetSceneItemTransform. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemtransform](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemtransform) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneItemTransform [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Get-OBSSceneItemTransform [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSceneList.md b/docs/obs.powershell.websocket.GetSceneList.md index 84e824406..283aff186 100644 --- a/docs/obs.powershell.websocket.GetSceneList.md +++ b/docs/obs.powershell.websocket.GetSceneList.md @@ -1,87 +1,51 @@ Get-OBSScene ------------ - - - ### Synopsis Get-OBSScene : GetSceneList - - --- - ### Description Gets an array of all scenes in OBS. - Get-OBSScene calls the OBS WebSocket with a request of type GetSceneList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenelist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenelist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSScene ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSScene [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetSceneSceneTransitionOverride.md b/docs/obs.powershell.websocket.GetSceneSceneTransitionOverride.md index a85cc7ff1..0b075f415 100644 --- a/docs/obs.powershell.websocket.GetSceneSceneTransitionOverride.md +++ b/docs/obs.powershell.websocket.GetSceneSceneTransitionOverride.md @@ -1,92 +1,59 @@ Get-OBSSceneSceneTransitionOverride ----------------------------------- - - - ### Synopsis Get-OBSSceneSceneTransitionOverride : GetSceneSceneTransitionOverride - - --- - ### Description Gets the scene transition overridden for a scene. +Note: A transition UUID response field is not currently able to be implemented as of 2024-1-18. Get-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type GetSceneSceneTransitionOverride. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenescenetransitionoverride](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenescenetransitionoverride) - - - - --- - ### Parameters #### **SceneName** - Name of the scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSceneSceneTransitionOverride [-SceneName] [-PassThru] [-NoResponse] [] +Get-OBSSceneSceneTransitionOverride [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSceneTransitionList.md b/docs/obs.powershell.websocket.GetSceneTransitionList.md index 69d38e30a..52e203ce4 100644 --- a/docs/obs.powershell.websocket.GetSceneTransitionList.md +++ b/docs/obs.powershell.websocket.GetSceneTransitionList.md @@ -1,87 +1,51 @@ Get-OBSSceneTransition ---------------------- - - - ### Synopsis Get-OBSSceneTransition : GetSceneTransitionList - - --- - ### Description Gets an array of all scene transitions in OBS. - Get-OBSSceneTransition calls the OBS WebSocket with a request of type GetSceneTransitionList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenetransitionlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenetransitionlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSSceneTransition ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSSceneTransition [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetSourceActive.md b/docs/obs.powershell.websocket.GetSourceActive.md index 028f1e93f..003e472a1 100644 --- a/docs/obs.powershell.websocket.GetSourceActive.md +++ b/docs/obs.powershell.websocket.GetSourceActive.md @@ -1,94 +1,59 @@ Get-OBSSourceActive ------------------- - - - ### Synopsis Get-OBSSourceActive : GetSourceActive - - --- - ### Description Gets the active and show state of a source. **Compatible with inputs and scenes.** - Get-OBSSourceActive calls the OBS WebSocket with a request of type GetSourceActive. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourceactive](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourceactive) - - - - --- - ### Parameters #### **SourceName** - Name of the source to get the active state of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to get the active state of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSourceActive [-SourceName] [-PassThru] [-NoResponse] [] +Get-OBSSourceActive [[-SourceName] ] [[-SourceUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSourceFilter.md b/docs/obs.powershell.websocket.GetSourceFilter.md index 985ef4727..286e39ba5 100644 --- a/docs/obs.powershell.websocket.GetSourceFilter.md +++ b/docs/obs.powershell.websocket.GetSourceFilter.md @@ -1,107 +1,64 @@ Get-OBSSourceFilter ------------------- - - - ### Synopsis Get-OBSSourceFilter : GetSourceFilter - - --- - ### Description Gets the info for a specific source filter. - Get-OBSSourceFilter calls the OBS WebSocket with a request of type GetSourceFilter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilter) - - - - --- - ### Parameters #### **SourceName** - Name of the source - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSourceFilter [-SourceName] [-FilterName] [-PassThru] [-NoResponse] [] +Get-OBSSourceFilter [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSourceFilterDefaultSettings.md b/docs/obs.powershell.websocket.GetSourceFilterDefaultSettings.md index e6793985a..0ae559238 100644 --- a/docs/obs.powershell.websocket.GetSourceFilterDefaultSettings.md +++ b/docs/obs.powershell.websocket.GetSourceFilterDefaultSettings.md @@ -1,91 +1,49 @@ Get-OBSSourceFilterDefaultSettings ---------------------------------- - - - ### Synopsis Get-OBSSourceFilterDefaultSettings : GetSourceFilterDefaultSettings - - --- - ### Description Gets the default settings for a filter kind. - Get-OBSSourceFilterDefaultSettings calls the OBS WebSocket with a request of type GetSourceFilterDefaultSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterdefaultsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterdefaultsettings) - - - - --- - ### Parameters #### **FilterKind** - Filter kind to get the default settings for - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSSourceFilterDefaultSettings [-FilterKind] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetSourceFilterKindList.md b/docs/obs.powershell.websocket.GetSourceFilterKindList.md new file mode 100644 index 000000000..6428dbd0d --- /dev/null +++ b/docs/obs.powershell.websocket.GetSourceFilterKindList.md @@ -0,0 +1,54 @@ +Get-OBSSourceFilterKind +----------------------- + +### Synopsis +Get-OBSSourceFilterKind : GetSourceFilterKindList + +--- + +### Description + +Gets an array of all available source filter kinds. + +Similar to `GetInputKindList` + +Get-OBSSourceFilterKind calls the OBS WebSocket with a request of type GetSourceFilterKindList. + +--- + +### Related Links +* [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist) + +--- + +### Examples +> EXAMPLE 1 + +```PowerShell +Get-OBSSourceFilterKind +``` + +--- + +### Parameters +#### **PassThru** +If set, will return the information that would otherwise be sent to OBS. + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-----------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| + +#### **NoResponse** +If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + +|Type |Required|Position|PipelineInput |Aliases | +|----------|--------|--------|---------------------|-----------------------------------------------------------------------| +|`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| + +--- + +### Syntax +```PowerShell +Get-OBSSourceFilterKind [-PassThru] [-NoResponse] [] +``` diff --git a/docs/obs.powershell.websocket.GetSourceFilterList.md b/docs/obs.powershell.websocket.GetSourceFilterList.md index dec0d4a8d..71dd19c65 100644 --- a/docs/obs.powershell.websocket.GetSourceFilterList.md +++ b/docs/obs.powershell.websocket.GetSourceFilterList.md @@ -1,92 +1,57 @@ Get-OBSSourceFilterList ----------------------- - - - ### Synopsis Get-OBSSourceFilterList : GetSourceFilterList - - --- - ### Description Gets an array of all of a source's filters. - Get-OBSSourceFilterList calls the OBS WebSocket with a request of type GetSourceFilterList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterlist) - - - - --- - ### Parameters #### **SourceName** - Name of the source - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSourceFilterList [-SourceName] [-PassThru] [-NoResponse] [] +Get-OBSSourceFilterList [[-SourceName] ] [[-SourceUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSourceScreenshot.md b/docs/obs.powershell.websocket.GetSourceScreenshot.md index fc86e1c02..347ab5653 100644 --- a/docs/obs.powershell.websocket.GetSourceScreenshot.md +++ b/docs/obs.powershell.websocket.GetSourceScreenshot.md @@ -1,17 +1,11 @@ Get-OBSSourceScreenshot ----------------------- - - - ### Synopsis Get-OBSSourceScreenshot : GetSourceScreenshot - - --- - ### Description Gets a Base64-encoded screenshot of a source. @@ -21,137 +15,76 @@ If `imageWidth` and `imageHeight` are not specified, the compressed image will u **Compatible with inputs and scenes.** - Get-OBSSourceScreenshot calls the OBS WebSocket with a request of type GetSourceScreenshot. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcescreenshot](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcescreenshot) - - - - --- - ### Parameters #### **SourceName** - Name of the source to take a screenshot of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to take a screenshot of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **ImageFormat** - Image compression format to use. Use `GetVersion` to get compatible image formats - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **ImageWidth** - Width to scale the screenshot to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |3 |true (ByPropertyName)| - - +|`[Double]`|false |4 |true (ByPropertyName)| #### **ImageHeight** - Height to scale the screenshot to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |4 |true (ByPropertyName)| - - +|`[Double]`|false |5 |true (ByPropertyName)| #### **ImageCompressionQuality** - Compression quality to use. 0 for high compression, 100 for uncompressed. -1 to use "default" (whatever that means, idk) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |5 |true (ByPropertyName)| - - +|`[Double]`|false |6 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Get-OBSSourceScreenshot [-SourceName] [-ImageFormat] [[-ImageWidth] ] [[-ImageHeight] ] [[-ImageCompressionQuality] ] [-PassThru] [-NoResponse] [] +Get-OBSSourceScreenshot [[-SourceName] ] [[-SourceUuid] ] [-ImageFormat] [[-ImageWidth] ] [[-ImageHeight] ] [[-ImageCompressionQuality] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.GetSpecialInputs.md b/docs/obs.powershell.websocket.GetSpecialInputs.md index 8a3860359..726182f83 100644 --- a/docs/obs.powershell.websocket.GetSpecialInputs.md +++ b/docs/obs.powershell.websocket.GetSpecialInputs.md @@ -1,87 +1,51 @@ Get-OBSSpecialInputs -------------------- - - - ### Synopsis Get-OBSSpecialInputs : GetSpecialInputs - - --- - ### Description Gets the names of all special inputs. - Get-OBSSpecialInputs calls the OBS WebSocket with a request of type GetSpecialInputs. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getspecialinputs](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getspecialinputs) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSSpecialInputs ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSSpecialInputs [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetStats.md b/docs/obs.powershell.websocket.GetStats.md index fe1ed207b..b3d8c967c 100644 --- a/docs/obs.powershell.websocket.GetStats.md +++ b/docs/obs.powershell.websocket.GetStats.md @@ -1,87 +1,51 @@ Get-OBSStats ------------ - - - ### Synopsis Get-OBSStats : GetStats - - --- - ### Description Gets statistics about OBS, obs-websocket, and the current session. - Get-OBSStats calls the OBS WebSocket with a request of type GetStats. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstats](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstats) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSStats ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSStats [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetStreamServiceSettings.md b/docs/obs.powershell.websocket.GetStreamServiceSettings.md index 0ca0c429f..68c6049c9 100644 --- a/docs/obs.powershell.websocket.GetStreamServiceSettings.md +++ b/docs/obs.powershell.websocket.GetStreamServiceSettings.md @@ -1,87 +1,51 @@ Get-OBSStreamServiceSettings ---------------------------- - - - ### Synopsis Get-OBSStreamServiceSettings : GetStreamServiceSettings - - --- - ### Description Gets the current stream service settings (stream destination). - Get-OBSStreamServiceSettings calls the OBS WebSocket with a request of type GetStreamServiceSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamservicesettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamservicesettings) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSStreamServiceSettings ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSStreamServiceSettings [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetStreamStatus.md b/docs/obs.powershell.websocket.GetStreamStatus.md index d2f654f53..a93d8ba82 100644 --- a/docs/obs.powershell.websocket.GetStreamStatus.md +++ b/docs/obs.powershell.websocket.GetStreamStatus.md @@ -1,87 +1,51 @@ Get-OBSStreamStatus ------------------- - - - ### Synopsis Get-OBSStreamStatus : GetStreamStatus - - --- - ### Description Gets the status of the stream output. - Get-OBSStreamStatus calls the OBS WebSocket with a request of type GetStreamStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamstatus) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSStreamStatus ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSStreamStatus [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetStudioModeEnabled.md b/docs/obs.powershell.websocket.GetStudioModeEnabled.md index d35494fdb..983c40226 100644 --- a/docs/obs.powershell.websocket.GetStudioModeEnabled.md +++ b/docs/obs.powershell.websocket.GetStudioModeEnabled.md @@ -1,87 +1,51 @@ Get-OBSStudioModeEnabled ------------------------ - - - ### Synopsis Get-OBSStudioModeEnabled : GetStudioModeEnabled - - --- - ### Description Gets whether studio is enabled. - Get-OBSStudioModeEnabled calls the OBS WebSocket with a request of type GetStudioModeEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstudiomodeenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstudiomodeenabled) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSStudioModeEnabled ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSStudioModeEnabled [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetTransitionKindList.md b/docs/obs.powershell.websocket.GetTransitionKindList.md index 02187a4cc..5cd7a45c3 100644 --- a/docs/obs.powershell.websocket.GetTransitionKindList.md +++ b/docs/obs.powershell.websocket.GetTransitionKindList.md @@ -1,89 +1,53 @@ Get-OBSTransitionKind --------------------- - - - ### Synopsis Get-OBSTransitionKind : GetTransitionKindList - - --- - ### Description Gets an array of all available transition kinds. Similar to `GetInputKindList` - Get-OBSTransitionKind calls the OBS WebSocket with a request of type GetTransitionKindList. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gettransitionkindlist](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gettransitionkindlist) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSTransitionKind ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSTransitionKind [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetVersion.md b/docs/obs.powershell.websocket.GetVersion.md index 3526d9b5b..5f4b42da7 100644 --- a/docs/obs.powershell.websocket.GetVersion.md +++ b/docs/obs.powershell.websocket.GetVersion.md @@ -1,87 +1,51 @@ Get-OBSVersion -------------- - - - ### Synopsis Get-OBSVersion : GetVersion - - --- - ### Description Gets data about the current plugin and RPC version. - Get-OBSVersion calls the OBS WebSocket with a request of type GetVersion. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getversion](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getversion) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSVersion ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSVersion [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetVideoSettings.md b/docs/obs.powershell.websocket.GetVideoSettings.md index 398a54212..770d65dd1 100644 --- a/docs/obs.powershell.websocket.GetVideoSettings.md +++ b/docs/obs.powershell.websocket.GetVideoSettings.md @@ -1,89 +1,53 @@ Get-OBSVideoSettings -------------------- - - - ### Synopsis Get-OBSVideoSettings : GetVideoSettings - - --- - ### Description Gets the current video settings. Note: To get the true FPS value, divide the FPS numerator by the FPS denominator. Example: `60000/1001` - Get-OBSVideoSettings calls the OBS WebSocket with a request of type GetVideoSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvideosettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvideosettings) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSVideoSettings ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSVideoSettings [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.GetVirtualCamStatus.md b/docs/obs.powershell.websocket.GetVirtualCamStatus.md index 7bb3c7090..f253ed2e3 100644 --- a/docs/obs.powershell.websocket.GetVirtualCamStatus.md +++ b/docs/obs.powershell.websocket.GetVirtualCamStatus.md @@ -1,87 +1,51 @@ Get-OBSVirtualCamStatus ----------------------- - - - ### Synopsis Get-OBSVirtualCamStatus : GetVirtualCamStatus - - --- - ### Description Gets the status of the virtualcam output. - Get-OBSVirtualCamStatus calls the OBS WebSocket with a request of type GetVirtualCamStatus. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvirtualcamstatus](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvirtualcamstatus) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Get-OBSVirtualCamStatus ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Get-OBSVirtualCamStatus [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.OffsetMediaInputCursor.md b/docs/obs.powershell.websocket.OffsetMediaInputCursor.md index d01fa169f..339782adb 100644 --- a/docs/obs.powershell.websocket.OffsetMediaInputCursor.md +++ b/docs/obs.powershell.websocket.OffsetMediaInputCursor.md @@ -1,109 +1,66 @@ Send-OBSOffsetMediaInputCursor ------------------------------ - - - ### Synopsis Send-OBSOffsetMediaInputCursor : OffsetMediaInputCursor - - --- - ### Description Offsets the current cursor position of a media input by the specified value. This request does not perform bounds checking of the cursor position. - Send-OBSOffsetMediaInputCursor calls the OBS WebSocket with a request of type OffsetMediaInputCursor. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#offsetmediainputcursor](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#offsetmediainputcursor) - - - - --- - ### Parameters #### **InputName** - Name of the media input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the media input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MediaCursorOffset** - Value to offset the current cursor position by - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Send-OBSOffsetMediaInputCursor [-InputName] [-MediaCursorOffset] [-PassThru] [-NoResponse] [] +Send-OBSOffsetMediaInputCursor [[-InputName] ] [[-InputUuid] ] [-MediaCursorOffset] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.OpenInputFiltersDialog.md b/docs/obs.powershell.websocket.OpenInputFiltersDialog.md index 57ef8fefd..d9b944d42 100644 --- a/docs/obs.powershell.websocket.OpenInputFiltersDialog.md +++ b/docs/obs.powershell.websocket.OpenInputFiltersDialog.md @@ -1,92 +1,57 @@ Open-OBSInputFiltersDialog -------------------------- - - - ### Synopsis Open-OBSInputFiltersDialog : OpenInputFiltersDialog - - --- - ### Description Opens the filters dialog of an input. - Open-OBSInputFiltersDialog calls the OBS WebSocket with a request of type OpenInputFiltersDialog. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputfiltersdialog](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputfiltersdialog) - - - - --- - ### Parameters #### **InputName** - Name of the input to open the dialog of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to open the dialog of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Open-OBSInputFiltersDialog [-InputName] [-PassThru] [-NoResponse] [] +Open-OBSInputFiltersDialog [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.OpenInputInteractDialog.md b/docs/obs.powershell.websocket.OpenInputInteractDialog.md index f96e239b4..d808f29c6 100644 --- a/docs/obs.powershell.websocket.OpenInputInteractDialog.md +++ b/docs/obs.powershell.websocket.OpenInputInteractDialog.md @@ -1,92 +1,57 @@ Open-OBSInputInteractDialog --------------------------- - - - ### Synopsis Open-OBSInputInteractDialog : OpenInputInteractDialog - - --- - ### Description Opens the interact dialog of an input. - Open-OBSInputInteractDialog calls the OBS WebSocket with a request of type OpenInputInteractDialog. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputinteractdialog](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputinteractdialog) - - - - --- - ### Parameters #### **InputName** - Name of the input to open the dialog of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to open the dialog of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Open-OBSInputInteractDialog [-InputName] [-PassThru] [-NoResponse] [] +Open-OBSInputInteractDialog [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.OpenInputPropertiesDialog.md b/docs/obs.powershell.websocket.OpenInputPropertiesDialog.md index 1f9f176e4..58602f616 100644 --- a/docs/obs.powershell.websocket.OpenInputPropertiesDialog.md +++ b/docs/obs.powershell.websocket.OpenInputPropertiesDialog.md @@ -1,92 +1,57 @@ Open-OBSInputPropertiesDialog ----------------------------- - - - ### Synopsis Open-OBSInputPropertiesDialog : OpenInputPropertiesDialog - - --- - ### Description Opens the properties dialog of an input. - Open-OBSInputPropertiesDialog calls the OBS WebSocket with a request of type OpenInputPropertiesDialog. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputpropertiesdialog](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputpropertiesdialog) - - - - --- - ### Parameters #### **InputName** - Name of the input to open the dialog of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to open the dialog of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Open-OBSInputPropertiesDialog [-InputName] [-PassThru] [-NoResponse] [] +Open-OBSInputPropertiesDialog [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.OpenSourceProjector.md b/docs/obs.powershell.websocket.OpenSourceProjector.md index 92480ac2a..5da12b44f 100644 --- a/docs/obs.powershell.websocket.OpenSourceProjector.md +++ b/docs/obs.powershell.websocket.OpenSourceProjector.md @@ -1,124 +1,73 @@ Open-OBSSourceProjector ----------------------- - - - ### Synopsis Open-OBSSourceProjector : OpenSourceProjector - - --- - ### Description Opens a projector for a source. Note: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release. - Open-OBSSourceProjector calls the OBS WebSocket with a request of type OpenSourceProjector. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#opensourceprojector](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#opensourceprojector) - - - - --- - ### Parameters #### **SourceName** - Name of the source to open a projector for - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to open a projector for +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MonitorIndex** - Monitor index, use `GetMonitorList` to obtain index - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |2 |true (ByPropertyName)| - - +|`[Double]`|false |3 |true (ByPropertyName)| #### **ProjectorGeometry** - Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|false |3 |true (ByPropertyName)| - - +|`[String]`|false |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Open-OBSSourceProjector [-SourceName] [[-MonitorIndex] ] [[-ProjectorGeometry] ] [-PassThru] [-NoResponse] [] +Open-OBSSourceProjector [[-SourceName] ] [[-SourceUuid] ] [[-MonitorIndex] ] [[-ProjectorGeometry] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.OpenVideoMixProjector.md b/docs/obs.powershell.websocket.OpenVideoMixProjector.md index 4e5a0d4c5..3917c9229 100644 --- a/docs/obs.powershell.websocket.OpenVideoMixProjector.md +++ b/docs/obs.powershell.websocket.OpenVideoMixProjector.md @@ -1,17 +1,11 @@ Open-OBSVideoMixProjector ------------------------- - - - ### Synopsis Open-OBSVideoMixProjector : OpenVideoMixProjector - - --- - ### Description Opens a projector for a specific output video mix. @@ -24,106 +18,54 @@ Mix types: Note: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release. - Open-OBSVideoMixProjector calls the OBS WebSocket with a request of type OpenVideoMixProjector. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openvideomixprojector](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openvideomixprojector) - - - - --- - ### Parameters #### **VideoMixType** - Type of mix to open - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **MonitorIndex** - Monitor index, use `GetMonitorList` to obtain index - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **ProjectorGeometry** - Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |3 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Open-OBSVideoMixProjector [-VideoMixType] [[-MonitorIndex] ] [[-ProjectorGeometry] ] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.PauseRecord.md b/docs/obs.powershell.websocket.PauseRecord.md index 6e42b42e4..611a2fec4 100644 --- a/docs/obs.powershell.websocket.PauseRecord.md +++ b/docs/obs.powershell.websocket.PauseRecord.md @@ -1,87 +1,51 @@ Send-OBSPauseRecord ------------------- - - - ### Synopsis Send-OBSPauseRecord : PauseRecord - - --- - ### Description Pauses the record output. - Send-OBSPauseRecord calls the OBS WebSocket with a request of type PauseRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pauserecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pauserecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Send-OBSPauseRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSPauseRecord [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.PressInputPropertiesButton.md b/docs/obs.powershell.websocket.PressInputPropertiesButton.md index 98034b9a6..11a2227c5 100644 --- a/docs/obs.powershell.websocket.PressInputPropertiesButton.md +++ b/docs/obs.powershell.websocket.PressInputPropertiesButton.md @@ -1,17 +1,11 @@ Send-OBSPressInputPropertiesButton ---------------------------------- - - - ### Synopsis Send-OBSPressInputPropertiesButton : PressInputPropertiesButton - - --- - ### Description Presses a button in the properties of an input. @@ -22,92 +16,55 @@ Some known `propertyName` values are: Note: Use this in cases where there is a button in the properties of an input that cannot be accessed in any other way. For example, browser sources, where there is a refresh button. - Send-OBSPressInputPropertiesButton calls the OBS WebSocket with a request of type PressInputPropertiesButton. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pressinputpropertiesbutton](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pressinputpropertiesbutton) - - - - --- - ### Parameters #### **InputName** - Name of the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PropertyName** - Name of the button property to press - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Send-OBSPressInputPropertiesButton [-InputName] [-PropertyName] [-PassThru] [-NoResponse] [] +Send-OBSPressInputPropertiesButton [[-InputName] ] [[-InputUuid] ] [-PropertyName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.RemoveInput.md b/docs/obs.powershell.websocket.RemoveInput.md index 36f82cd55..cded200d3 100644 --- a/docs/obs.powershell.websocket.RemoveInput.md +++ b/docs/obs.powershell.websocket.RemoveInput.md @@ -1,94 +1,59 @@ Remove-OBSInput --------------- - - - ### Synopsis Remove-OBSInput : RemoveInput - - --- - ### Description Removes an existing input. Note: Will immediately remove all associated scene items. - Remove-OBSInput calls the OBS WebSocket with a request of type RemoveInput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeinput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeinput) - - - - --- - ### Parameters #### **InputName** - Name of the input to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to remove +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Remove-OBSInput [-InputName] [-PassThru] [-NoResponse] [] +Remove-OBSInput [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.RemoveProfile.md b/docs/obs.powershell.websocket.RemoveProfile.md index 38a1f935a..162e1299f 100644 --- a/docs/obs.powershell.websocket.RemoveProfile.md +++ b/docs/obs.powershell.websocket.RemoveProfile.md @@ -1,91 +1,49 @@ Remove-OBSProfile ----------------- - - - ### Synopsis Remove-OBSProfile : RemoveProfile - - --- - ### Description Removes a profile. If the current profile is chosen, it will change to a different profile first. - Remove-OBSProfile calls the OBS WebSocket with a request of type RemoveProfile. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeprofile](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeprofile) - - - - --- - ### Parameters #### **ProfileName** - Name of the profile to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Remove-OBSProfile [-ProfileName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.RemoveScene.md b/docs/obs.powershell.websocket.RemoveScene.md index a0e7db5f7..3878cd7d3 100644 --- a/docs/obs.powershell.websocket.RemoveScene.md +++ b/docs/obs.powershell.websocket.RemoveScene.md @@ -1,92 +1,57 @@ Remove-OBSScene --------------- - - - ### Synopsis Remove-OBSScene : RemoveScene - - --- - ### Description Removes a scene from OBS. - Remove-OBSScene calls the OBS WebSocket with a request of type RemoveScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removescene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removescene) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to remove +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Remove-OBSScene [-SceneName] [-PassThru] [-NoResponse] [] +Remove-OBSScene [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.RemoveSceneItem.md b/docs/obs.powershell.websocket.RemoveSceneItem.md index 2744195dd..2b87abd7a 100644 --- a/docs/obs.powershell.websocket.RemoveSceneItem.md +++ b/docs/obs.powershell.websocket.RemoveSceneItem.md @@ -1,109 +1,66 @@ Remove-OBSSceneItem ------------------- - - - ### Synopsis Remove-OBSSceneItem : RemoveSceneItem - - --- - ### Description Removes a scene item from a scene. Scenes only - Remove-OBSSceneItem calls the OBS WebSocket with a request of type RemoveSceneItem. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesceneitem](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesceneitem) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Remove-OBSSceneItem [-SceneName] [-SceneItemId] [-PassThru] [-NoResponse] [] +Remove-OBSSceneItem [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.RemoveSourceFilter.md b/docs/obs.powershell.websocket.RemoveSourceFilter.md index a3f2e266a..30566c234 100644 --- a/docs/obs.powershell.websocket.RemoveSourceFilter.md +++ b/docs/obs.powershell.websocket.RemoveSourceFilter.md @@ -1,107 +1,64 @@ Remove-OBSSourceFilter ---------------------- - - - ### Synopsis Remove-OBSSourceFilter : RemoveSourceFilter - - --- - ### Description Removes a filter from a source. - Remove-OBSSourceFilter calls the OBS WebSocket with a request of type RemoveSourceFilter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesourcefilter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesourcefilter) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Remove-OBSSourceFilter [-SourceName] [-FilterName] [-PassThru] [-NoResponse] [] +Remove-OBSSourceFilter [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.ResumeRecord.md b/docs/obs.powershell.websocket.ResumeRecord.md index 948447e75..da3266a59 100644 --- a/docs/obs.powershell.websocket.ResumeRecord.md +++ b/docs/obs.powershell.websocket.ResumeRecord.md @@ -1,87 +1,51 @@ Resume-OBSRecord ---------------- - - - ### Synopsis Resume-OBSRecord : ResumeRecord - - --- - ### Description Resumes the record output. - Resume-OBSRecord calls the OBS WebSocket with a request of type ResumeRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#resumerecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#resumerecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Resume-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Resume-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SaveReplayBuffer.md b/docs/obs.powershell.websocket.SaveReplayBuffer.md index 5df6b5445..5dc9ded51 100644 --- a/docs/obs.powershell.websocket.SaveReplayBuffer.md +++ b/docs/obs.powershell.websocket.SaveReplayBuffer.md @@ -1,87 +1,51 @@ Save-OBSReplayBuffer -------------------- - - - ### Synopsis Save-OBSReplayBuffer : SaveReplayBuffer - - --- - ### Description Saves the contents of the replay buffer output. - Save-OBSReplayBuffer calls the OBS WebSocket with a request of type SaveReplayBuffer. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savereplaybuffer](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savereplaybuffer) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Save-OBSReplayBuffer ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Save-OBSReplayBuffer [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SaveSourceScreenshot.md b/docs/obs.powershell.websocket.SaveSourceScreenshot.md index 91f22c107..7dd274351 100644 --- a/docs/obs.powershell.websocket.SaveSourceScreenshot.md +++ b/docs/obs.powershell.websocket.SaveSourceScreenshot.md @@ -1,17 +1,11 @@ Save-OBSSourceScreenshot ------------------------ - - - ### Synopsis Save-OBSSourceScreenshot : SaveSourceScreenshot - - --- - ### Description Saves a screenshot of a source to the filesystem. @@ -21,152 +15,83 @@ If `imageWidth` and `imageHeight` are not specified, the compressed image will u **Compatible with inputs and scenes.** - Save-OBSSourceScreenshot calls the OBS WebSocket with a request of type SaveSourceScreenshot. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savesourcescreenshot](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savesourcescreenshot) - - - - --- - ### Parameters #### **SourceName** - Name of the source to take a screenshot of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source to take a screenshot of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **ImageFormat** - Image compression format to use. Use `GetVersion` to get compatible image formats - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **ImageFilePath** - Path to save the screenshot file to. Eg. `C:\Users\user\Desktop\screenshot.png` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **ImageWidth** - Width to scale the screenshot to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |4 |true (ByPropertyName)| - - +|`[Double]`|false |5 |true (ByPropertyName)| #### **ImageHeight** - Height to scale the screenshot to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |5 |true (ByPropertyName)| - - +|`[Double]`|false |6 |true (ByPropertyName)| #### **ImageCompressionQuality** - Compression quality to use. 0 for high compression, 100 for uncompressed. -1 to use "default" (whatever that means, idk) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |6 |true (ByPropertyName)| - - +|`[Double]`|false |7 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Save-OBSSourceScreenshot [-SourceName] [-ImageFormat] [-ImageFilePath] [[-ImageWidth] ] [[-ImageHeight] ] [[-ImageCompressionQuality] ] [-PassThru] [-NoResponse] [] +Save-OBSSourceScreenshot [[-SourceName] ] [[-SourceUuid] ] [-ImageFormat] [-ImageFilePath] [[-ImageWidth] ] [[-ImageHeight] ] [[-ImageCompressionQuality] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SendStreamCaption.md b/docs/obs.powershell.websocket.SendStreamCaption.md index 57631ff1b..ffa68b7ed 100644 --- a/docs/obs.powershell.websocket.SendStreamCaption.md +++ b/docs/obs.powershell.websocket.SendStreamCaption.md @@ -1,91 +1,49 @@ Send-OBSStreamCaption --------------------- - - - ### Synopsis Send-OBSStreamCaption : SendStreamCaption - - --- - ### Description Sends CEA-608 caption text over the stream output. - Send-OBSStreamCaption calls the OBS WebSocket with a request of type SendStreamCaption. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sendstreamcaption](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sendstreamcaption) - - - - --- - ### Parameters #### **CaptionText** - Caption text - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSStreamCaption [-CaptionText] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetCurrentPreviewScene.md b/docs/obs.powershell.websocket.SetCurrentPreviewScene.md index 2aaf43f41..52bf3a81e 100644 --- a/docs/obs.powershell.websocket.SetCurrentPreviewScene.md +++ b/docs/obs.powershell.websocket.SetCurrentPreviewScene.md @@ -1,94 +1,59 @@ Set-OBSCurrentPreviewScene -------------------------- - - - ### Synopsis Set-OBSCurrentPreviewScene : SetCurrentPreviewScene - - --- - ### Description Sets the current preview scene. Only available when studio mode is enabled. - Set-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type SetCurrentPreviewScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentpreviewscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentpreviewscene) - - - - --- - ### Parameters #### **SceneName** - -Scene to set as the current preview scene - - - - - +Scene name to set as the current preview scene |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +Scene UUID to set as the current preview scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSCurrentPreviewScene [-SceneName] [-PassThru] [-NoResponse] [] +Set-OBSCurrentPreviewScene [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetCurrentProfile.md b/docs/obs.powershell.websocket.SetCurrentProfile.md index 454876e68..1fefa5ddd 100644 --- a/docs/obs.powershell.websocket.SetCurrentProfile.md +++ b/docs/obs.powershell.websocket.SetCurrentProfile.md @@ -1,91 +1,49 @@ Set-OBSCurrentProfile --------------------- - - - ### Synopsis Set-OBSCurrentProfile : SetCurrentProfile - - --- - ### Description Switches to a profile. - Set-OBSCurrentProfile calls the OBS WebSocket with a request of type SetCurrentProfile. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprofile](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprofile) - - - - --- - ### Parameters #### **ProfileName** - Name of the profile to switch to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentProfile [-ProfileName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetCurrentProgramScene.md b/docs/obs.powershell.websocket.SetCurrentProgramScene.md index 709400d67..75fc21e06 100644 --- a/docs/obs.powershell.websocket.SetCurrentProgramScene.md +++ b/docs/obs.powershell.websocket.SetCurrentProgramScene.md @@ -1,92 +1,57 @@ Set-OBSCurrentProgramScene -------------------------- - - - ### Synopsis Set-OBSCurrentProgramScene : SetCurrentProgramScene - - --- - ### Description Sets the current program scene. - Set-OBSCurrentProgramScene calls the OBS WebSocket with a request of type SetCurrentProgramScene. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprogramscene](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprogramscene) - - - - --- - ### Parameters #### **SceneName** - -Scene to set as the current program scene - - - - - +Scene name to set as the current program scene |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +Scene UUID to set as the current program scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSCurrentProgramScene [-SceneName] [-PassThru] [-NoResponse] [] +Set-OBSCurrentProgramScene [[-SceneName] ] [[-SceneUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetCurrentSceneCollection.md b/docs/obs.powershell.websocket.SetCurrentSceneCollection.md index 80801e062..305645d77 100644 --- a/docs/obs.powershell.websocket.SetCurrentSceneCollection.md +++ b/docs/obs.powershell.websocket.SetCurrentSceneCollection.md @@ -1,93 +1,51 @@ Set-OBSCurrentSceneCollection ----------------------------- - - - ### Synopsis Set-OBSCurrentSceneCollection : SetCurrentSceneCollection - - --- - ### Description Switches to a scene collection. Note: This will block until the collection has finished changing. - Set-OBSCurrentSceneCollection calls the OBS WebSocket with a request of type SetCurrentSceneCollection. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenecollection](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenecollection) - - - - --- - ### Parameters #### **SceneCollectionName** - Name of the scene collection to switch to - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentSceneCollection [-SceneCollectionName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetCurrentSceneTransition.md b/docs/obs.powershell.websocket.SetCurrentSceneTransition.md index ba9b67115..a430a405f 100644 --- a/docs/obs.powershell.websocket.SetCurrentSceneTransition.md +++ b/docs/obs.powershell.websocket.SetCurrentSceneTransition.md @@ -1,93 +1,51 @@ Set-OBSCurrentSceneTransition ----------------------------- - - - ### Synopsis Set-OBSCurrentSceneTransition : SetCurrentSceneTransition - - --- - ### Description Sets the current scene transition. Small note: While the namespace of scene transitions is generally unique, that uniqueness is not a guarantee as it is with other resources like inputs. - Set-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type SetCurrentSceneTransition. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransition](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransition) - - - - --- - ### Parameters #### **TransitionName** - Name of the transition to make active - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentSceneTransition [-TransitionName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetCurrentSceneTransitionDuration.md b/docs/obs.powershell.websocket.SetCurrentSceneTransitionDuration.md index 65932b4ad..770e8ac63 100644 --- a/docs/obs.powershell.websocket.SetCurrentSceneTransitionDuration.md +++ b/docs/obs.powershell.websocket.SetCurrentSceneTransitionDuration.md @@ -1,91 +1,49 @@ Set-OBSCurrentSceneTransitionDuration ------------------------------------- - - - ### Synopsis Set-OBSCurrentSceneTransitionDuration : SetCurrentSceneTransitionDuration - - --- - ### Description Sets the duration of the current scene transition, if it is not fixed. - Set-OBSCurrentSceneTransitionDuration calls the OBS WebSocket with a request of type SetCurrentSceneTransitionDuration. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionduration](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionduration) - - - - --- - ### Parameters #### **TransitionDuration** - Duration in milliseconds - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentSceneTransitionDuration [-TransitionDuration] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetCurrentSceneTransitionSettings.md b/docs/obs.powershell.websocket.SetCurrentSceneTransitionSettings.md index 8a8732108..270a0f226 100644 --- a/docs/obs.powershell.websocket.SetCurrentSceneTransitionSettings.md +++ b/docs/obs.powershell.websocket.SetCurrentSceneTransitionSettings.md @@ -1,106 +1,56 @@ Set-OBSCurrentSceneTransitionSettings ------------------------------------- - - - ### Synopsis Set-OBSCurrentSceneTransitionSettings : SetCurrentSceneTransitionSettings - - --- - ### Description Sets the settings of the current scene transition. - Set-OBSCurrentSceneTransitionSettings calls the OBS WebSocket with a request of type SetCurrentSceneTransitionSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionsettings) - - - - --- - ### Parameters #### **TransitionSettings** - Settings object to apply to the transition. Can be `{}` - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |1 |true (ByPropertyName)| - - #### **Overlay** - Whether to overlay over the current settings or replace them - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSCurrentSceneTransitionSettings [-TransitionSettings] [-Overlay] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetInputAudioBalance.md b/docs/obs.powershell.websocket.SetInputAudioBalance.md index 774fa2cd8..ccfa4fef1 100644 --- a/docs/obs.powershell.websocket.SetInputAudioBalance.md +++ b/docs/obs.powershell.websocket.SetInputAudioBalance.md @@ -1,107 +1,64 @@ Set-OBSInputAudioBalance ------------------------ - - - ### Synopsis Set-OBSInputAudioBalance : SetInputAudioBalance - - --- - ### Description Sets the audio balance of an input. - Set-OBSInputAudioBalance calls the OBS WebSocket with a request of type SetInputAudioBalance. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiobalance](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiobalance) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the audio balance of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the audio balance of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputAudioBalance** - New audio balance value - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputAudioBalance [-InputName] [-InputAudioBalance] [-PassThru] [-NoResponse] [] +Set-OBSInputAudioBalance [[-InputName] ] [[-InputUuid] ] [-InputAudioBalance] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetInputAudioMonitorType.md b/docs/obs.powershell.websocket.SetInputAudioMonitorType.md index 3278ac6bb..6bd80fd7a 100644 --- a/docs/obs.powershell.websocket.SetInputAudioMonitorType.md +++ b/docs/obs.powershell.websocket.SetInputAudioMonitorType.md @@ -1,107 +1,64 @@ Set-OBSInputAudioMonitorType ---------------------------- - - - ### Synopsis Set-OBSInputAudioMonitorType : SetInputAudioMonitorType - - --- - ### Description Sets the audio monitor type of an input. - Set-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type SetInputAudioMonitorType. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiomonitortype](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiomonitortype) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the audio monitor type of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the audio monitor type of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MonitorType** - Audio monitor type - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputAudioMonitorType [-InputName] [-MonitorType] [-PassThru] [-NoResponse] [] +Set-OBSInputAudioMonitorType [[-InputName] ] [[-InputUuid] ] [-MonitorType] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetInputAudioSyncOffset.md b/docs/obs.powershell.websocket.SetInputAudioSyncOffset.md index 373f69323..49907e6b3 100644 --- a/docs/obs.powershell.websocket.SetInputAudioSyncOffset.md +++ b/docs/obs.powershell.websocket.SetInputAudioSyncOffset.md @@ -1,107 +1,64 @@ Set-OBSInputAudioSyncOffset --------------------------- - - - ### Synopsis Set-OBSInputAudioSyncOffset : SetInputAudioSyncOffset - - --- - ### Description Sets the audio sync offset of an input. - Set-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type SetInputAudioSyncOffset. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiosyncoffset](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiosyncoffset) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the audio sync offset of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the audio sync offset of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputAudioSyncOffset** - New audio sync offset in milliseconds - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputAudioSyncOffset [-InputName] [-InputAudioSyncOffset] [-PassThru] [-NoResponse] [] +Set-OBSInputAudioSyncOffset [[-InputName] ] [[-InputUuid] ] [-InputAudioSyncOffset] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetInputAudioTracks.md b/docs/obs.powershell.websocket.SetInputAudioTracks.md index 54b2e1384..3c475257f 100644 --- a/docs/obs.powershell.websocket.SetInputAudioTracks.md +++ b/docs/obs.powershell.websocket.SetInputAudioTracks.md @@ -1,107 +1,64 @@ Set-OBSInputAudioTracks ----------------------- - - - ### Synopsis Set-OBSInputAudioTracks : SetInputAudioTracks - - --- - ### Description Sets the enable state of audio tracks of an input. - Set-OBSInputAudioTracks calls the OBS WebSocket with a request of type SetInputAudioTracks. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiotracks](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiotracks) - - - - --- - ### Parameters #### **InputName** - Name of the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputAudioTracks** - Track settings to apply - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|true |2 |true (ByPropertyName)| - - +|`[PSObject]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputAudioTracks [-InputName] [-InputAudioTracks] [-PassThru] [-NoResponse] [] +Set-OBSInputAudioTracks [[-InputName] ] [[-InputUuid] ] [-InputAudioTracks] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetInputMute.md b/docs/obs.powershell.websocket.SetInputMute.md index 9391b3dd9..ea33fb5f1 100644 --- a/docs/obs.powershell.websocket.SetInputMute.md +++ b/docs/obs.powershell.websocket.SetInputMute.md @@ -1,107 +1,64 @@ Set-OBSInputMute ---------------- - - - ### Synopsis Set-OBSInputMute : SetInputMute - - --- - ### Description Sets the audio mute state of an input. - Set-OBSInputMute calls the OBS WebSocket with a request of type SetInputMute. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputmute](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputmute) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the mute state of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the mute state of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputMuted** - Whether to mute the input or not - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputMute [-InputName] -InputMuted [-PassThru] [-NoResponse] [] +Set-OBSInputMute [[-InputName] ] [[-InputUuid] ] -InputMuted [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetInputName.md b/docs/obs.powershell.websocket.SetInputName.md index b2beaa7db..19a4297d7 100644 --- a/docs/obs.powershell.websocket.SetInputName.md +++ b/docs/obs.powershell.websocket.SetInputName.md @@ -1,107 +1,64 @@ Set-OBSInputName ---------------- - - - ### Synopsis Set-OBSInputName : SetInputName - - --- - ### Description Sets the name of an input (rename). - Set-OBSInputName calls the OBS WebSocket with a request of type SetInputName. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputname](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputname) - - - - --- - ### Parameters #### **InputName** - Current input name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +Current input UUID +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **NewInputName** - New name for the input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputName [-InputName] [-NewInputName] [-PassThru] [-NoResponse] [] +Set-OBSInputName [[-InputName] ] [[-InputUuid] ] [-NewInputName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetInputSettings.md b/docs/obs.powershell.websocket.SetInputSettings.md index b8987bd37..6e0856308 100644 --- a/docs/obs.powershell.websocket.SetInputSettings.md +++ b/docs/obs.powershell.websocket.SetInputSettings.md @@ -1,122 +1,71 @@ Set-OBSInputSettings -------------------- - - - ### Synopsis Set-OBSInputSettings : SetInputSettings - - --- - ### Description Sets the settings of an input. - Set-OBSInputSettings calls the OBS WebSocket with a request of type SetInputSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputsettings) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the settings of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the settings of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputSettings** - Object of settings to apply - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|true |2 |true (ByPropertyName)| - - +|`[PSObject]`|true |3 |true (ByPropertyName)| #### **Overlay** - True == apply the settings on top of existing ones, False == reset the input to its defaults, then apply settings. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputSettings [-InputName] [-InputSettings] [-Overlay] [-PassThru] [-NoResponse] [] +Set-OBSInputSettings [[-InputName] ] [[-InputUuid] ] [-InputSettings] [-Overlay] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetInputVolume.md b/docs/obs.powershell.websocket.SetInputVolume.md index 84c7233d2..44bf81a5d 100644 --- a/docs/obs.powershell.websocket.SetInputVolume.md +++ b/docs/obs.powershell.websocket.SetInputVolume.md @@ -1,122 +1,71 @@ Set-OBSInputVolume ------------------ - - - ### Synopsis Set-OBSInputVolume : SetInputVolume - - --- - ### Description Sets the volume setting of an input. - Set-OBSInputVolume calls the OBS WebSocket with a request of type SetInputVolume. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputvolume](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputvolume) - - - - --- - ### Parameters #### **InputName** - Name of the input to set the volume of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to set the volume of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **InputVolumeMul** - Volume setting in mul - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |2 |true (ByPropertyName)| - - +|`[Double]`|false |3 |true (ByPropertyName)| #### **InputVolumeDb** - Volume setting in dB - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |3 |true (ByPropertyName)| - - +|`[Double]`|false |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSInputVolume [-InputName] [[-InputVolumeMul] ] [[-InputVolumeDb] ] [-PassThru] [-NoResponse] [] +Set-OBSInputVolume [[-InputName] ] [[-InputUuid] ] [[-InputVolumeMul] ] [[-InputVolumeDb] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetMediaInputCursor.md b/docs/obs.powershell.websocket.SetMediaInputCursor.md index 0e2ee72e2..5a8d6f330 100644 --- a/docs/obs.powershell.websocket.SetMediaInputCursor.md +++ b/docs/obs.powershell.websocket.SetMediaInputCursor.md @@ -1,109 +1,66 @@ Set-OBSMediaInputCursor ----------------------- - - - ### Synopsis Set-OBSMediaInputCursor : SetMediaInputCursor - - --- - ### Description Sets the cursor position of a media input. This request does not perform bounds checking of the cursor position. - Set-OBSMediaInputCursor calls the OBS WebSocket with a request of type SetMediaInputCursor. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setmediainputcursor](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setmediainputcursor) - - - - --- - ### Parameters #### **InputName** - Name of the media input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the media input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MediaCursor** - New cursor position to set - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSMediaInputCursor [-InputName] [-MediaCursor] [-PassThru] [-NoResponse] [] +Set-OBSMediaInputCursor [[-InputName] ] [[-InputUuid] ] [-MediaCursor] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetOutputSettings.md b/docs/obs.powershell.websocket.SetOutputSettings.md index 45aa3e84c..b2e03aa2c 100644 --- a/docs/obs.powershell.websocket.SetOutputSettings.md +++ b/docs/obs.powershell.websocket.SetOutputSettings.md @@ -1,106 +1,56 @@ Set-OBSOutputSettings --------------------- - - - ### Synopsis Set-OBSOutputSettings : SetOutputSettings - - --- - ### Description Sets the settings of an output. - Set-OBSOutputSettings calls the OBS WebSocket with a request of type SetOutputSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setoutputsettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setoutputsettings) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **OutputSettings** - Output settings - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSOutputSettings [-OutputName] [-OutputSettings] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetPersistentData.md b/docs/obs.powershell.websocket.SetPersistentData.md index 63d86aa88..444ed238a 100644 --- a/docs/obs.powershell.websocket.SetPersistentData.md +++ b/docs/obs.powershell.websocket.SetPersistentData.md @@ -1,121 +1,63 @@ Set-OBSPersistentData --------------------- - - - ### Synopsis Set-OBSPersistentData : SetPersistentData - - --- - ### Description Sets the value of a "slot" from the selected persistent data realm. - Set-OBSPersistentData calls the OBS WebSocket with a request of type SetPersistentData. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setpersistentdata](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setpersistentdata) - - - - --- - ### Parameters #### **Realm** - The data realm to select. `OBS_WEBSOCKET_DATA_REALM_GLOBAL` or `OBS_WEBSOCKET_DATA_REALM_PROFILE` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **SlotName** - The name of the slot to retrieve data from - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **SlotValue** - The value to apply to the slot - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |3 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSPersistentData [-Realm] [-SlotName] [-SlotValue] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetProfileParameter.md b/docs/obs.powershell.websocket.SetProfileParameter.md index b01f12191..e31eba44e 100644 --- a/docs/obs.powershell.websocket.SetProfileParameter.md +++ b/docs/obs.powershell.websocket.SetProfileParameter.md @@ -1,121 +1,63 @@ Set-OBSProfileParameter ----------------------- - - - ### Synopsis Set-OBSProfileParameter : SetProfileParameter - - --- - ### Description Sets the value of a parameter in the current profile's configuration. - Set-OBSProfileParameter calls the OBS WebSocket with a request of type SetProfileParameter. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setprofileparameter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setprofileparameter) - - - - --- - ### Parameters #### **ParameterCategory** - Category of the parameter to set - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **ParameterName** - Name of the parameter to set - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |2 |true (ByPropertyName)| - - #### **ParameterValue** - Value of the parameter to set. Use `null` to delete - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |3 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSProfileParameter [-ParameterCategory] [-ParameterName] [-ParameterValue] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetRecordDirectory.md b/docs/obs.powershell.websocket.SetRecordDirectory.md index ac5a0365c..52a323518 100644 --- a/docs/obs.powershell.websocket.SetRecordDirectory.md +++ b/docs/obs.powershell.websocket.SetRecordDirectory.md @@ -1,91 +1,49 @@ Set-OBSRecordDirectory ---------------------- - - - ### Synopsis Set-OBSRecordDirectory : SetRecordDirectory - - --- - ### Description Sets the current directory that the record output writes files to. - Set-OBSRecordDirectory calls the OBS WebSocket with a request of type SetRecordDirectory. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setrecorddirectory](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setrecorddirectory) - - - - --- - ### Parameters #### **RecordDirectory** - Output directory - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSRecordDirectory [-RecordDirectory] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetSceneItemBlendMode.md b/docs/obs.powershell.websocket.SetSceneItemBlendMode.md index 1b70e4a30..dd7127fb5 100644 --- a/docs/obs.powershell.websocket.SetSceneItemBlendMode.md +++ b/docs/obs.powershell.websocket.SetSceneItemBlendMode.md @@ -1,124 +1,73 @@ Set-OBSSceneItemBlendMode ------------------------- - - - ### Synopsis Set-OBSSceneItemBlendMode : SetSceneItemBlendMode - - --- - ### Description Sets the blend mode of a scene item. Scenes and Groups - Set-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type SetSceneItemBlendMode. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemblendmode](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemblendmode) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemBlendMode** - New blend mode - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemBlendMode [-SceneName] [-SceneItemId] [-SceneItemBlendMode] [-PassThru] [-NoResponse] [] +Set-OBSSceneItemBlendMode [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-SceneItemBlendMode] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSceneItemEnabled.md b/docs/obs.powershell.websocket.SetSceneItemEnabled.md index 697e6d04b..b4b09e744 100644 --- a/docs/obs.powershell.websocket.SetSceneItemEnabled.md +++ b/docs/obs.powershell.websocket.SetSceneItemEnabled.md @@ -1,124 +1,73 @@ Set-OBSSceneItemEnabled ----------------------- - - - ### Synopsis Set-OBSSceneItemEnabled : SetSceneItemEnabled - - --- - ### Description Sets the enable state of a scene item. Scenes and Groups - Set-OBSSceneItemEnabled calls the OBS WebSocket with a request of type SetSceneItemEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemenabled) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemEnabled** - New enable state of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemEnabled [-SceneName] [-SceneItemId] -SceneItemEnabled [-PassThru] [-NoResponse] [] +Set-OBSSceneItemEnabled [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] -SceneItemEnabled [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSceneItemIndex.md b/docs/obs.powershell.websocket.SetSceneItemIndex.md index 87843f495..f338e5055 100644 --- a/docs/obs.powershell.websocket.SetSceneItemIndex.md +++ b/docs/obs.powershell.websocket.SetSceneItemIndex.md @@ -1,124 +1,73 @@ Set-OBSSceneItemIndex --------------------- - - - ### Synopsis Set-OBSSceneItemIndex : SetSceneItemIndex - - --- - ### Description Sets the index position of a scene item in a scene. Scenes and Groups - Set-OBSSceneItemIndex calls the OBS WebSocket with a request of type SetSceneItemIndex. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemindex](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemindex) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemIndex** - New index position of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |3 |true (ByPropertyName)| - - +|`[Double]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemIndex [-SceneName] [-SceneItemId] [-SceneItemIndex] [-PassThru] [-NoResponse] [] +Set-OBSSceneItemIndex [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-SceneItemIndex] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSceneItemLocked.md b/docs/obs.powershell.websocket.SetSceneItemLocked.md index 387d1c01d..1b6f8ae64 100644 --- a/docs/obs.powershell.websocket.SetSceneItemLocked.md +++ b/docs/obs.powershell.websocket.SetSceneItemLocked.md @@ -1,124 +1,73 @@ Set-OBSSceneItemLocked ---------------------- - - - ### Synopsis Set-OBSSceneItemLocked : SetSceneItemLocked - - --- - ### Description Sets the lock state of a scene item. Scenes and Group - Set-OBSSceneItemLocked calls the OBS WebSocket with a request of type SetSceneItemLocked. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemlocked](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemlocked) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemLocked** - New lock state of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemLocked [-SceneName] [-SceneItemId] -SceneItemLocked [-PassThru] [-NoResponse] [] +Set-OBSSceneItemLocked [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] -SceneItemLocked [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSceneItemTransform.md b/docs/obs.powershell.websocket.SetSceneItemTransform.md index fe924a00d..a9cbbb228 100644 --- a/docs/obs.powershell.websocket.SetSceneItemTransform.md +++ b/docs/obs.powershell.websocket.SetSceneItemTransform.md @@ -1,122 +1,71 @@ Set-OBSSceneItemTransform ------------------------- - - - ### Synopsis Set-OBSSceneItemTransform : SetSceneItemTransform - - --- - ### Description Sets the transform and crop info of a scene item. - Set-OBSSceneItemTransform calls the OBS WebSocket with a request of type SetSceneItemTransform. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemtransform](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemtransform) - - - - --- - ### Parameters #### **SceneName** - Name of the scene the item is in - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene the item is in +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **SceneItemId** - Numeric ID of the scene item - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |2 |true (ByPropertyName)| - - +|`[Double]`|true |3 |true (ByPropertyName)| #### **SceneItemTransform** - Object containing scene item transform info to update - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|true |3 |true (ByPropertyName)| - - +|`[PSObject]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneItemTransform [-SceneName] [-SceneItemId] [-SceneItemTransform] [-PassThru] [-NoResponse] [] +Set-OBSSceneItemTransform [[-SceneName] ] [[-SceneUuid] ] [-SceneItemId] [-SceneItemTransform] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSceneName.md b/docs/obs.powershell.websocket.SetSceneName.md index efe616894..77c9c71e7 100644 --- a/docs/obs.powershell.websocket.SetSceneName.md +++ b/docs/obs.powershell.websocket.SetSceneName.md @@ -1,107 +1,64 @@ Set-OBSSceneName ---------------- - - - ### Synopsis Set-OBSSceneName : SetSceneName - - --- - ### Description Sets the name of a scene (rename). - Set-OBSSceneName calls the OBS WebSocket with a request of type SetSceneName. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenename](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenename) - - - - --- - ### Parameters #### **SceneName** - Name of the scene to be renamed - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene to be renamed +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **NewSceneName** - New name for the scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneName [-SceneName] [-NewSceneName] [-PassThru] [-NoResponse] [] +Set-OBSSceneName [[-SceneName] ] [[-SceneUuid] ] [-NewSceneName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSceneSceneTransitionOverride.md b/docs/obs.powershell.websocket.SetSceneSceneTransitionOverride.md index 1f4458615..3a0941716 100644 --- a/docs/obs.powershell.websocket.SetSceneSceneTransitionOverride.md +++ b/docs/obs.powershell.websocket.SetSceneSceneTransitionOverride.md @@ -1,122 +1,71 @@ Set-OBSSceneSceneTransitionOverride ----------------------------------- - - - ### Synopsis Set-OBSSceneSceneTransitionOverride : SetSceneSceneTransitionOverride - - --- - ### Description -Gets the scene transition overridden for a scene. - +Sets the scene transition overridden for a scene. Set-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type SetSceneSceneTransitionOverride. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenescenetransitionoverride](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenescenetransitionoverride) - - - - --- - ### Parameters #### **SceneName** - Name of the scene - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SceneUuid** +UUID of the scene +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **TransitionName** - Name of the scene transition to use as override. Specify `null` to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|false |2 |true (ByPropertyName)| - - +|`[String]`|false |3 |true (ByPropertyName)| #### **TransitionDuration** - Duration to use for any overridden transition. Specify `null` to remove - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|false |3 |true (ByPropertyName)| - - +|`[Double]`|false |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSceneSceneTransitionOverride [-SceneName] [[-TransitionName] ] [[-TransitionDuration] ] [-PassThru] [-NoResponse] [] +Set-OBSSceneSceneTransitionOverride [[-SceneName] ] [[-SceneUuid] ] [[-TransitionName] ] [[-TransitionDuration] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSourceFilterEnabled.md b/docs/obs.powershell.websocket.SetSourceFilterEnabled.md index 88cce3794..da0a536f2 100644 --- a/docs/obs.powershell.websocket.SetSourceFilterEnabled.md +++ b/docs/obs.powershell.websocket.SetSourceFilterEnabled.md @@ -1,122 +1,71 @@ Set-OBSSourceFilterEnabled -------------------------- - - - ### Synopsis Set-OBSSourceFilterEnabled : SetSourceFilterEnabled - - --- - ### Description Sets the enable state of a source filter. - Set-OBSSourceFilterEnabled calls the OBS WebSocket with a request of type SetSourceFilterEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterenabled) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **FilterEnabled** - New enable state of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSourceFilterEnabled [-SourceName] [-FilterName] -FilterEnabled [-PassThru] [-NoResponse] [] +Set-OBSSourceFilterEnabled [[-SourceName] ] [[-SourceUuid] ] [-FilterName] -FilterEnabled [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSourceFilterIndex.md b/docs/obs.powershell.websocket.SetSourceFilterIndex.md index b1a89a7a6..9e02f7600 100644 --- a/docs/obs.powershell.websocket.SetSourceFilterIndex.md +++ b/docs/obs.powershell.websocket.SetSourceFilterIndex.md @@ -1,122 +1,71 @@ Set-OBSSourceFilterIndex ------------------------ - - - ### Synopsis Set-OBSSourceFilterIndex : SetSourceFilterIndex - - --- - ### Description Sets the index position of a filter on a source. - Set-OBSSourceFilterIndex calls the OBS WebSocket with a request of type SetSourceFilterIndex. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterindex](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterindex) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **FilterIndex** - New index position of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[Double]`|true |3 |true (ByPropertyName)| - - +|`[Double]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSourceFilterIndex [-SourceName] [-FilterName] [-FilterIndex] [-PassThru] [-NoResponse] [] +Set-OBSSourceFilterIndex [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-FilterIndex] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSourceFilterName.md b/docs/obs.powershell.websocket.SetSourceFilterName.md index ad99f9cb4..175403d96 100644 --- a/docs/obs.powershell.websocket.SetSourceFilterName.md +++ b/docs/obs.powershell.websocket.SetSourceFilterName.md @@ -1,122 +1,71 @@ Set-OBSSourceFilterName ----------------------- - - - ### Synopsis Set-OBSSourceFilterName : SetSourceFilterName - - --- - ### Description Sets the name of a source filter (rename). - Set-OBSSourceFilterName calls the OBS WebSocket with a request of type SetSourceFilterName. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltername](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltername) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Current name of the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **NewFilterName** - New name for the filter - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |3 |true (ByPropertyName)| - - +|`[String]`|true |4 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSourceFilterName [-SourceName] [-FilterName] [-NewFilterName] [-PassThru] [-NoResponse] [] +Set-OBSSourceFilterName [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-NewFilterName] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetSourceFilterSettings.md b/docs/obs.powershell.websocket.SetSourceFilterSettings.md index df2aca9c6..ba553644c 100644 --- a/docs/obs.powershell.websocket.SetSourceFilterSettings.md +++ b/docs/obs.powershell.websocket.SetSourceFilterSettings.md @@ -1,137 +1,78 @@ Set-OBSSourceFilterSettings --------------------------- - - - ### Synopsis Set-OBSSourceFilterSettings : SetSourceFilterSettings - - --- - ### Description Sets the settings of a source filter. - Set-OBSSourceFilterSettings calls the OBS WebSocket with a request of type SetSourceFilterSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltersettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltersettings) - - - - --- - ### Parameters #### **SourceName** - Name of the source the filter is on - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **SourceUuid** +UUID of the source the filter is on +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **FilterName** - Name of the filter to set the settings of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **FilterSettings** - Object of settings to apply - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| -|`[PSObject]`|true |3 |true (ByPropertyName)| - - +|`[PSObject]`|true |4 |true (ByPropertyName)| #### **Overlay** - True == apply the settings on top of existing ones, False == reset the input to its defaults, then apply settings. - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Set-OBSSourceFilterSettings [-SourceName] [-FilterName] [-FilterSettings] [-Overlay] [-PassThru] [-NoResponse] [] +Set-OBSSourceFilterSettings [[-SourceName] ] [[-SourceUuid] ] [-FilterName] [-FilterSettings] [-Overlay] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.SetStreamServiceSettings.md b/docs/obs.powershell.websocket.SetStreamServiceSettings.md index 30231c684..0d51c1f82 100644 --- a/docs/obs.powershell.websocket.SetStreamServiceSettings.md +++ b/docs/obs.powershell.websocket.SetStreamServiceSettings.md @@ -1,108 +1,58 @@ Set-OBSStreamServiceSettings ---------------------------- - - - ### Synopsis Set-OBSStreamServiceSettings : SetStreamServiceSettings - - --- - ### Description Sets the current stream service settings (stream destination). Note: Simple RTMP settings can be set with type `rtmp_custom` and the settings fields `server` and `key`. - Set-OBSStreamServiceSettings calls the OBS WebSocket with a request of type SetStreamServiceSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstreamservicesettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstreamservicesettings) - - - - --- - ### Parameters #### **StreamServiceType** - Type of stream service to apply. Example: `rtmp_common` or `rtmp_custom` - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **StreamServiceSettings** - Settings to apply to the service - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|true |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSStreamServiceSettings [-StreamServiceType] [-StreamServiceSettings] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetStudioModeEnabled.md b/docs/obs.powershell.websocket.SetStudioModeEnabled.md index 313672e51..339519d63 100644 --- a/docs/obs.powershell.websocket.SetStudioModeEnabled.md +++ b/docs/obs.powershell.websocket.SetStudioModeEnabled.md @@ -1,91 +1,49 @@ Set-OBSStudioModeEnabled ------------------------ - - - ### Synopsis Set-OBSStudioModeEnabled : SetStudioModeEnabled - - --- - ### Description Enables or disables studio mode - Set-OBSStudioModeEnabled calls the OBS WebSocket with a request of type SetStudioModeEnabled. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstudiomodeenabled](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstudiomodeenabled) - - - - --- - ### Parameters #### **StudioModeEnabled** - True == Enabled, False == Disabled - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|true |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSStudioModeEnabled -StudioModeEnabled [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetTBarPosition.md b/docs/obs.powershell.websocket.SetTBarPosition.md index 0f03db0ba..f4ef2a9e7 100644 --- a/docs/obs.powershell.websocket.SetTBarPosition.md +++ b/docs/obs.powershell.websocket.SetTBarPosition.md @@ -1,108 +1,58 @@ Set-OBSTBarPosition ------------------- - - - ### Synopsis Set-OBSTBarPosition : SetTBarPosition - - --- - ### Description Sets the position of the TBar. **Very important note**: This will be deprecated and replaced in a future version of obs-websocket. - Set-OBSTBarPosition calls the OBS WebSocket with a request of type SetTBarPosition. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#settbarposition](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#settbarposition) - - - - --- - ### Parameters #### **Position** - New position - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|true |1 |true (ByPropertyName)| - - #### **Release** - Whether to release the TBar. Only set `false` if you know that you will be sending another position update - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSTBarPosition [-Position] [-Release] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.SetVideoSettings.md b/docs/obs.powershell.websocket.SetVideoSettings.md index f478f403d..0fcf54b6d 100644 --- a/docs/obs.powershell.websocket.SetVideoSettings.md +++ b/docs/obs.powershell.websocket.SetVideoSettings.md @@ -1,168 +1,86 @@ Set-OBSVideoSettings -------------------- - - - ### Synopsis Set-OBSVideoSettings : SetVideoSettings - - --- - ### Description Sets the current video settings. Note: Fields must be specified in pairs. For example, you cannot set only `baseWidth` without needing to specify `baseHeight`. - Set-OBSVideoSettings calls the OBS WebSocket with a request of type SetVideoSettings. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setvideosettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setvideosettings) - - - - --- - ### Parameters #### **FpsNumerator** - Numerator of the fractional FPS value - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **FpsDenominator** - Denominator of the fractional FPS value - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **BaseWidth** - Width of the base (canvas) resolution in pixels - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |3 |true (ByPropertyName)| - - #### **BaseHeight** - Height of the base (canvas) resolution in pixels - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |4 |true (ByPropertyName)| - - #### **OutputWidth** - Width of the output resolution in pixels - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |5 |true (ByPropertyName)| - - #### **OutputHeight** - Height of the output resolution in pixels - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |6 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Set-OBSVideoSettings [[-FpsNumerator] ] [[-FpsDenominator] ] [[-BaseWidth] ] [[-BaseHeight] ] [[-OutputWidth] ] [[-OutputHeight] ] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.Sleep.md b/docs/obs.powershell.websocket.Sleep.md index 1a6166d3d..d6580af96 100644 --- a/docs/obs.powershell.websocket.Sleep.md +++ b/docs/obs.powershell.websocket.Sleep.md @@ -1,106 +1,56 @@ Send-OBSSleep ------------- - - - ### Synopsis Send-OBSSleep : Sleep - - --- - ### Description Sleeps for a time duration or number of frames. Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`. - Send-OBSSleep calls the OBS WebSocket with a request of type Sleep. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sleep](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sleep) - - - - --- - ### Parameters #### **SleepMillis** - Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |1 |true (ByPropertyName)| - - #### **SleepFrames** - Number of frames to sleep for (if `SERIAL_FRAME` mode) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Double]`|false |2 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSSleep [[-SleepMillis] ] [[-SleepFrames] ] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StartOutput.md b/docs/obs.powershell.websocket.StartOutput.md index cd52dfb0d..75e139c20 100644 --- a/docs/obs.powershell.websocket.StartOutput.md +++ b/docs/obs.powershell.websocket.StartOutput.md @@ -1,91 +1,49 @@ Start-OBSOutput --------------- - - - ### Synopsis Start-OBSOutput : StartOutput - - --- - ### Description Starts an output. - Start-OBSOutput calls the OBS WebSocket with a request of type StartOutput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startoutput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startoutput) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSOutput [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StartRecord.md b/docs/obs.powershell.websocket.StartRecord.md index d3dcefe26..e07ac1ca5 100644 --- a/docs/obs.powershell.websocket.StartRecord.md +++ b/docs/obs.powershell.websocket.StartRecord.md @@ -1,87 +1,51 @@ Start-OBSRecord --------------- - - - ### Synopsis Start-OBSRecord : StartRecord - - --- - ### Description Starts the record output. - Start-OBSRecord calls the OBS WebSocket with a request of type StartRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StartReplayBuffer.md b/docs/obs.powershell.websocket.StartReplayBuffer.md index d4010d202..c1543c47d 100644 --- a/docs/obs.powershell.websocket.StartReplayBuffer.md +++ b/docs/obs.powershell.websocket.StartReplayBuffer.md @@ -1,87 +1,51 @@ Start-OBSReplayBuffer --------------------- - - - ### Synopsis Start-OBSReplayBuffer : StartReplayBuffer - - --- - ### Description Starts the replay buffer output. - Start-OBSReplayBuffer calls the OBS WebSocket with a request of type StartReplayBuffer. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startreplaybuffer](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startreplaybuffer) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSReplayBuffer ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSReplayBuffer [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StartStream.md b/docs/obs.powershell.websocket.StartStream.md index 5dc6e683c..77fc48eb5 100644 --- a/docs/obs.powershell.websocket.StartStream.md +++ b/docs/obs.powershell.websocket.StartStream.md @@ -1,87 +1,51 @@ Start-OBSStream --------------- - - - ### Synopsis Start-OBSStream : StartStream - - --- - ### Description Starts the stream output. - Start-OBSStream calls the OBS WebSocket with a request of type StartStream. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSStream ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSStream [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StartVirtualCam.md b/docs/obs.powershell.websocket.StartVirtualCam.md index 20036275e..06d1fb449 100644 --- a/docs/obs.powershell.websocket.StartVirtualCam.md +++ b/docs/obs.powershell.websocket.StartVirtualCam.md @@ -1,87 +1,51 @@ Start-OBSVirtualCam ------------------- - - - ### Synopsis Start-OBSVirtualCam : StartVirtualCam - - --- - ### Description Starts the virtualcam output. - Start-OBSVirtualCam calls the OBS WebSocket with a request of type StartVirtualCam. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startvirtualcam](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startvirtualcam) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Start-OBSVirtualCam ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Start-OBSVirtualCam [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StopOutput.md b/docs/obs.powershell.websocket.StopOutput.md index f19cf0381..078e63343 100644 --- a/docs/obs.powershell.websocket.StopOutput.md +++ b/docs/obs.powershell.websocket.StopOutput.md @@ -1,91 +1,49 @@ Stop-OBSOutput -------------- - - - ### Synopsis Stop-OBSOutput : StopOutput - - --- - ### Description Stops an output. - Stop-OBSOutput calls the OBS WebSocket with a request of type StopOutput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopoutput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopoutput) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSOutput [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StopRecord.md b/docs/obs.powershell.websocket.StopRecord.md index a9379ed9d..8eda8bebf 100644 --- a/docs/obs.powershell.websocket.StopRecord.md +++ b/docs/obs.powershell.websocket.StopRecord.md @@ -1,87 +1,51 @@ Stop-OBSRecord -------------- - - - ### Synopsis Stop-OBSRecord : StopRecord - - --- - ### Description Stops the record output. - Stop-OBSRecord calls the OBS WebSocket with a request of type StopRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StopReplayBuffer.md b/docs/obs.powershell.websocket.StopReplayBuffer.md index 23577ff8c..0c5b3d8e3 100644 --- a/docs/obs.powershell.websocket.StopReplayBuffer.md +++ b/docs/obs.powershell.websocket.StopReplayBuffer.md @@ -1,87 +1,51 @@ Stop-OBSReplayBuffer -------------------- - - - ### Synopsis Stop-OBSReplayBuffer : StopReplayBuffer - - --- - ### Description Stops the replay buffer output. - Stop-OBSReplayBuffer calls the OBS WebSocket with a request of type StopReplayBuffer. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopreplaybuffer](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopreplaybuffer) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSReplayBuffer ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSReplayBuffer [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StopStream.md b/docs/obs.powershell.websocket.StopStream.md index 03af55d3a..364aa144a 100644 --- a/docs/obs.powershell.websocket.StopStream.md +++ b/docs/obs.powershell.websocket.StopStream.md @@ -1,87 +1,51 @@ Stop-OBSStream -------------- - - - ### Synopsis Stop-OBSStream : StopStream - - --- - ### Description Stops the stream output. - Stop-OBSStream calls the OBS WebSocket with a request of type StopStream. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSStream ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSStream [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.StopVirtualCam.md b/docs/obs.powershell.websocket.StopVirtualCam.md index 182a457b7..1e9a3aff6 100644 --- a/docs/obs.powershell.websocket.StopVirtualCam.md +++ b/docs/obs.powershell.websocket.StopVirtualCam.md @@ -1,87 +1,51 @@ Stop-OBSVirtualCam ------------------ - - - ### Synopsis Stop-OBSVirtualCam : StopVirtualCam - - --- - ### Description Stops the virtualcam output. - Stop-OBSVirtualCam calls the OBS WebSocket with a request of type StopVirtualCam. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopvirtualcam](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopvirtualcam) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Stop-OBSVirtualCam ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Stop-OBSVirtualCam [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.ToggleInputMute.md b/docs/obs.powershell.websocket.ToggleInputMute.md index 6ebc3a2a8..e58efd06b 100644 --- a/docs/obs.powershell.websocket.ToggleInputMute.md +++ b/docs/obs.powershell.websocket.ToggleInputMute.md @@ -1,92 +1,57 @@ Switch-OBSInputMute ------------------- - - - ### Synopsis Switch-OBSInputMute : ToggleInputMute - - --- - ### Description Toggles the audio mute state of an input. - Switch-OBSInputMute calls the OBS WebSocket with a request of type ToggleInputMute. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleinputmute](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleinputmute) - - - - --- - ### Parameters #### **InputName** - Name of the input to toggle the mute state of - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the input to toggle the mute state of +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Switch-OBSInputMute [-InputName] [-PassThru] [-NoResponse] [] +Switch-OBSInputMute [[-InputName] ] [[-InputUuid] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.ToggleOutput.md b/docs/obs.powershell.websocket.ToggleOutput.md index 36e097aeb..be1790853 100644 --- a/docs/obs.powershell.websocket.ToggleOutput.md +++ b/docs/obs.powershell.websocket.ToggleOutput.md @@ -1,91 +1,49 @@ Switch-OBSOutput ---------------- - - - ### Synopsis Switch-OBSOutput : ToggleOutput - - --- - ### Description Toggles the status of an output. - Switch-OBSOutput calls the OBS WebSocket with a request of type ToggleOutput. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleoutput](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleoutput) - - - - --- - ### Parameters #### **OutputName** - Output name - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSOutput [-OutputName] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.ToggleRecord.md b/docs/obs.powershell.websocket.ToggleRecord.md index 48470acac..01bc733e0 100644 --- a/docs/obs.powershell.websocket.ToggleRecord.md +++ b/docs/obs.powershell.websocket.ToggleRecord.md @@ -1,87 +1,51 @@ Switch-OBSRecord ---------------- - - - ### Synopsis Switch-OBSRecord : ToggleRecord - - --- - ### Description Toggles the status of the record output. - Switch-OBSRecord calls the OBS WebSocket with a request of type ToggleRecord. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecord](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecord) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSRecord ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSRecord [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.ToggleRecordPause.md b/docs/obs.powershell.websocket.ToggleRecordPause.md index 6baff9673..b398f2dbf 100644 --- a/docs/obs.powershell.websocket.ToggleRecordPause.md +++ b/docs/obs.powershell.websocket.ToggleRecordPause.md @@ -1,87 +1,51 @@ Switch-OBSRecordPause --------------------- - - - ### Synopsis Switch-OBSRecordPause : ToggleRecordPause - - --- - ### Description Toggles pause on the record output. - Switch-OBSRecordPause calls the OBS WebSocket with a request of type ToggleRecordPause. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecordpause](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecordpause) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSRecordPause ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSRecordPause [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.ToggleReplayBuffer.md b/docs/obs.powershell.websocket.ToggleReplayBuffer.md index b331182b5..c857ffcec 100644 --- a/docs/obs.powershell.websocket.ToggleReplayBuffer.md +++ b/docs/obs.powershell.websocket.ToggleReplayBuffer.md @@ -1,87 +1,51 @@ Switch-OBSReplayBuffer ---------------------- - - - ### Synopsis Switch-OBSReplayBuffer : ToggleReplayBuffer - - --- - ### Description Toggles the state of the replay buffer output. - Switch-OBSReplayBuffer calls the OBS WebSocket with a request of type ToggleReplayBuffer. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglereplaybuffer](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglereplaybuffer) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSReplayBuffer ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSReplayBuffer [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.ToggleStream.md b/docs/obs.powershell.websocket.ToggleStream.md index 9072b3c8d..0be5ef1b9 100644 --- a/docs/obs.powershell.websocket.ToggleStream.md +++ b/docs/obs.powershell.websocket.ToggleStream.md @@ -1,87 +1,51 @@ Switch-OBSStream ---------------- - - - ### Synopsis Switch-OBSStream : ToggleStream - - --- - ### Description Toggles the status of the stream output. - Switch-OBSStream calls the OBS WebSocket with a request of type ToggleStream. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglestream](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglestream) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSStream ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSStream [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.ToggleVirtualCam.md b/docs/obs.powershell.websocket.ToggleVirtualCam.md index 93fa66c5c..28bf67f44 100644 --- a/docs/obs.powershell.websocket.ToggleVirtualCam.md +++ b/docs/obs.powershell.websocket.ToggleVirtualCam.md @@ -1,87 +1,51 @@ Switch-OBSVirtualCam -------------------- - - - ### Synopsis Switch-OBSVirtualCam : ToggleVirtualCam - - --- - ### Description Toggles the state of the virtualcam output. - Switch-OBSVirtualCam calls the OBS WebSocket with a request of type ToggleVirtualCam. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglevirtualcam](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglevirtualcam) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Switch-OBSVirtualCam ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Switch-OBSVirtualCam [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.TriggerHotkeyByKeySequence.md b/docs/obs.powershell.websocket.TriggerHotkeyByKeySequence.md index 130507925..3162292ea 100644 --- a/docs/obs.powershell.websocket.TriggerHotkeyByKeySequence.md +++ b/docs/obs.powershell.websocket.TriggerHotkeyByKeySequence.md @@ -1,166 +1,86 @@ Send-OBSTriggerHotkeyByKeySequence ---------------------------------- - - - ### Synopsis Send-OBSTriggerHotkeyByKeySequence : TriggerHotkeyByKeySequence - - --- - ### Description Triggers a hotkey using a sequence of keys. +Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. Send-OBSTriggerHotkeyByKeySequence calls the OBS WebSocket with a request of type TriggerHotkeyByKeySequence. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybykeysequence](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybykeysequence) - - - - --- - ### Parameters #### **KeyId** - The OBS key ID to use. See https://github.com/obsproject/obs-studio/blob/master/libobs/obs-hotkeys.h - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|false |1 |true (ByPropertyName)| - - #### **KeyModifiers** - Object containing key modifiers to apply - - - - - |Type |Required|Position|PipelineInput | |------------|--------|--------|---------------------| |`[PSObject]`|false |2 |true (ByPropertyName)| - - #### **KeyModifiersshift** - Press Shift - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **KeyModifierscontrol** - Press CTRL - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **KeyModifiersalt** - Press ALT - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **KeyModifierscommand** - Press CMD (Mac) - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[Switch]`|false |named |true (ByPropertyName)| - - #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSTriggerHotkeyByKeySequence [[-KeyId] ] [[-KeyModifiers] ] [-KeyModifiersshift] [-KeyModifierscontrol] [-KeyModifiersalt] [-KeyModifierscommand] [-PassThru] [-NoResponse] [] diff --git a/docs/obs.powershell.websocket.TriggerHotkeyByName.md b/docs/obs.powershell.websocket.TriggerHotkeyByName.md index f34099e28..314094055 100644 --- a/docs/obs.powershell.websocket.TriggerHotkeyByName.md +++ b/docs/obs.powershell.websocket.TriggerHotkeyByName.md @@ -1,92 +1,59 @@ Send-OBSTriggerHotkeyByName --------------------------- - - - ### Synopsis Send-OBSTriggerHotkeyByName : TriggerHotkeyByName - - --- - ### Description -Triggers a hotkey using its name. See `GetHotkeyList` +Triggers a hotkey using its name. See `GetHotkeyList`. +Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. Send-OBSTriggerHotkeyByName calls the OBS WebSocket with a request of type TriggerHotkeyByName. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybyname](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybyname) - - - - --- - ### Parameters #### **HotkeyName** - Name of the hotkey to trigger - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| |`[String]`|true |1 |true (ByPropertyName)| +#### **ContextName** +Name of context of the hotkey to trigger +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Send-OBSTriggerHotkeyByName [-HotkeyName] [-PassThru] [-NoResponse] [] +Send-OBSTriggerHotkeyByName [-HotkeyName] [[-ContextName] ] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.TriggerMediaInputAction.md b/docs/obs.powershell.websocket.TriggerMediaInputAction.md index ed2d74dfd..ae9b0b240 100644 --- a/docs/obs.powershell.websocket.TriggerMediaInputAction.md +++ b/docs/obs.powershell.websocket.TriggerMediaInputAction.md @@ -1,107 +1,64 @@ Send-OBSTriggerMediaInputAction ------------------------------- - - - ### Synopsis Send-OBSTriggerMediaInputAction : TriggerMediaInputAction - - --- - ### Description Triggers an action on a media input. - Send-OBSTriggerMediaInputAction calls the OBS WebSocket with a request of type TriggerMediaInputAction. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggermediainputaction](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggermediainputaction) - - - - --- - ### Parameters #### **InputName** - Name of the media input - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |1 |true (ByPropertyName)| +|`[String]`|false |1 |true (ByPropertyName)| +#### **InputUuid** +UUID of the media input +|Type |Required|Position|PipelineInput | +|----------|--------|--------|---------------------| +|`[String]`|false |2 |true (ByPropertyName)| #### **MediaAction** - Identifier of the `ObsMediaInputAction` enum - - - - - |Type |Required|Position|PipelineInput | |----------|--------|--------|---------------------| -|`[String]`|true |2 |true (ByPropertyName)| - - +|`[String]`|true |3 |true (ByPropertyName)| #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell -Send-OBSTriggerMediaInputAction [-InputName] [-MediaAction] [-PassThru] [-NoResponse] [] +Send-OBSTriggerMediaInputAction [[-InputName] ] [[-InputUuid] ] [-MediaAction] [-PassThru] [-NoResponse] [] ``` diff --git a/docs/obs.powershell.websocket.TriggerStudioModeTransition.md b/docs/obs.powershell.websocket.TriggerStudioModeTransition.md index e16570db1..d0d0f73da 100644 --- a/docs/obs.powershell.websocket.TriggerStudioModeTransition.md +++ b/docs/obs.powershell.websocket.TriggerStudioModeTransition.md @@ -1,87 +1,51 @@ Send-OBSTriggerStudioModeTransition ----------------------------------- - - - ### Synopsis Send-OBSTriggerStudioModeTransition : TriggerStudioModeTransition - - --- - ### Description Triggers the current scene transition. Same functionality as the `Transition` button in studio mode. - Send-OBSTriggerStudioModeTransition calls the OBS WebSocket with a request of type TriggerStudioModeTransition. - - --- - ### Related Links * [https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerstudiomodetransition](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerstudiomodetransition) - - - - --- - ### Examples -#### EXAMPLE 1 +> EXAMPLE 1 + ```PowerShell Send-OBSTriggerStudioModeTransition ``` - - --- - ### Parameters #### **PassThru** - If set, will return the information that would otherwise be sent to OBS. - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------| |`[Switch]`|false |named |true (ByPropertyName)|OutputRequest
OutputInput| - - #### **NoResponse** - If set, will not attempt to receive a response from OBS. This can increase performance, and also silently ignore critical errors - - - - - |Type |Required|Position|PipelineInput |Aliases | |----------|--------|--------|---------------------|-----------------------------------------------------------------------| |`[Switch]`|false |named |true (ByPropertyName)|NoReceive
IgnoreResponse
IgnoreReceive
DoNotReceiveResponse| - - - - --- - ### Syntax ```PowerShell Send-OBSTriggerStudioModeTransition [-PassThru] [-NoResponse] [] diff --git a/en-us/obs-powershell-commands.help.txt b/en-us/obs-powershell-commands.help.txt index 5163922fc..45ae5b978 100644 --- a/en-us/obs-powershell-commands.help.txt +++ b/en-us/obs-powershell-commands.help.txt @@ -1,8 +1,8 @@ obs-powershell-commands ----------------------- -obs-powershell exports 339 commands -(169 functions and 170 aliases) +obs-powershell exports 787 commands +(316 functions and 471 aliases) A good number of these commands directly correspond to an obs-websocket message. For a complete list, see [obs-powershell-websocket-commands](docs/obs-powershell-websocket-commands.md). @@ -12,177 +12,324 @@ Functions ========= -|Name |Synopsis | -|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------| -|[Add-OBSInput](docs/Add-OBSInput.md) |Add-OBSInput : CreateInput | -|[Add-OBSProfile](docs/Add-OBSProfile.md) |Add-OBSProfile : CreateProfile | -|[Add-OBSScene](docs/Add-OBSScene.md) |Add-OBSScene : CreateScene | -|[Add-OBSSceneCollection](docs/Add-OBSSceneCollection.md) |Add-OBSSceneCollection : CreateSceneCollection | -|[Add-OBSSceneItem](docs/Add-OBSSceneItem.md) |Add-OBSSceneItem : CreateSceneItem | -|[Add-OBSSourceFilter](docs/Add-OBSSourceFilter.md) |Add-OBSSourceFilter : CreateSourceFilter | -|[Clear-OBSScene](docs/Clear-OBSScene.md) |Clears a Scene in OBS | -|[Connect-OBS](docs/Connect-OBS.md) |Connects to Open Broadcast Studio | -|[Copy-OBSSceneItem](docs/Copy-OBSSceneItem.md) |Copy-OBSSceneItem : DuplicateSceneItem | -|[Disconnect-OBS](docs/Disconnect-OBS.md) |Disconnects OBS | -|[Get-OBS](docs/Get-OBS.md) |Gets OBS | -|[Get-OBSCurrentPreviewScene](docs/Get-OBSCurrentPreviewScene.md) |Get-OBSCurrentPreviewScene : GetCurrentPreviewScene | -|[Get-OBSCurrentProgramScene](docs/Get-OBSCurrentProgramScene.md) |Get-OBSCurrentProgramScene : GetCurrentProgramScene | -|[Get-OBSCurrentSceneTransition](docs/Get-OBSCurrentSceneTransition.md) |Get-OBSCurrentSceneTransition : GetCurrentSceneTransition | -|[Get-OBSCurrentSceneTransitionCursor](docs/Get-OBSCurrentSceneTransitionCursor.md) |Get-OBSCurrentSceneTransitionCursor : GetCurrentSceneTransitionCursor | -|[Get-OBSEffect](docs/Get-OBSEffect.md) |Gets OBS Effects | -|[Get-OBSGroup](docs/Get-OBSGroup.md) |Get-OBSGroup : GetGroupList | -|[Get-OBSGroupSceneItem](docs/Get-OBSGroupSceneItem.md) |Get-OBSGroupSceneItem : GetGroupSceneItemList | -|[Get-OBSHotkey](docs/Get-OBSHotkey.md) |Get-OBSHotkey : GetHotkeyList | -|[Get-OBSInput](docs/Get-OBSInput.md) |Get-OBSInput : GetInputList | -|[Get-OBSInputAudioBalance](docs/Get-OBSInputAudioBalance.md) |Get-OBSInputAudioBalance : GetInputAudioBalance | -|[Get-OBSInputAudioMonitorType](docs/Get-OBSInputAudioMonitorType.md) |Get-OBSInputAudioMonitorType : GetInputAudioMonitorType | -|[Get-OBSInputAudioSyncOffset](docs/Get-OBSInputAudioSyncOffset.md) |Get-OBSInputAudioSyncOffset : GetInputAudioSyncOffset | -|[Get-OBSInputAudioTracks](docs/Get-OBSInputAudioTracks.md) |Get-OBSInputAudioTracks : GetInputAudioTracks | -|[Get-OBSInputDefaultSettings](docs/Get-OBSInputDefaultSettings.md) |Get-OBSInputDefaultSettings : GetInputDefaultSettings | -|[Get-OBSInputKind](docs/Get-OBSInputKind.md) |Get-OBSInputKind : GetInputKindList | -|[Get-OBSInputMute](docs/Get-OBSInputMute.md) |Get-OBSInputMute : GetInputMute | -|[Get-OBSInputPropertiesListPropertyItems](docs/Get-OBSInputPropertiesListPropertyItems.md)|Get-OBSInputPropertiesListPropertyItems : GetInputPropertiesListPropertyItems| -|[Get-OBSInputSettings](docs/Get-OBSInputSettings.md) |Get-OBSInputSettings : GetInputSettings | -|[Get-OBSInputVolume](docs/Get-OBSInputVolume.md) |Get-OBSInputVolume : GetInputVolume | -|[Get-OBSLastReplayBufferReplay](docs/Get-OBSLastReplayBufferReplay.md) |Get-OBSLastReplayBufferReplay : GetLastReplayBufferReplay | -|[Get-OBSMediaInputStatus](docs/Get-OBSMediaInputStatus.md) |Get-OBSMediaInputStatus : GetMediaInputStatus | -|[Get-OBSMonitor](docs/Get-OBSMonitor.md) |Get-OBSMonitor : GetMonitorList | -|[Get-OBSOutput](docs/Get-OBSOutput.md) |Get-OBSOutput : GetOutputList | -|[Get-OBSOutputSettings](docs/Get-OBSOutputSettings.md) |Get-OBSOutputSettings : GetOutputSettings | -|[Get-OBSOutputStatus](docs/Get-OBSOutputStatus.md) |Get-OBSOutputStatus : GetOutputStatus | -|[Get-OBSPersistentData](docs/Get-OBSPersistentData.md) |Get-OBSPersistentData : GetPersistentData | -|[Get-OBSProfile](docs/Get-OBSProfile.md) |Get-OBSProfile : GetProfileList | -|[Get-OBSProfileParameter](docs/Get-OBSProfileParameter.md) |Get-OBSProfileParameter : GetProfileParameter | -|[Get-OBSRecordDirectory](docs/Get-OBSRecordDirectory.md) |Get-OBSRecordDirectory : GetRecordDirectory | -|[Get-OBSRecordStatus](docs/Get-OBSRecordStatus.md) |Get-OBSRecordStatus : GetRecordStatus | -|[Get-OBSReplayBufferStatus](docs/Get-OBSReplayBufferStatus.md) |Get-OBSReplayBufferStatus : GetReplayBufferStatus | -|[Get-OBSScene](docs/Get-OBSScene.md) |Get-OBSScene : GetSceneList | -|[Get-OBSSceneCollection](docs/Get-OBSSceneCollection.md) |Get-OBSSceneCollection : GetSceneCollectionList | -|[Get-OBSSceneItem](docs/Get-OBSSceneItem.md) |Get-OBSSceneItem : GetSceneItemList | -|[Get-OBSSceneItemBlendMode](docs/Get-OBSSceneItemBlendMode.md) |Get-OBSSceneItemBlendMode : GetSceneItemBlendMode | -|[Get-OBSSceneItemEnabled](docs/Get-OBSSceneItemEnabled.md) |Get-OBSSceneItemEnabled : GetSceneItemEnabled | -|[Get-OBSSceneItemId](docs/Get-OBSSceneItemId.md) |Get-OBSSceneItemId : GetSceneItemId | -|[Get-OBSSceneItemIndex](docs/Get-OBSSceneItemIndex.md) |Get-OBSSceneItemIndex : GetSceneItemIndex | -|[Get-OBSSceneItemLocked](docs/Get-OBSSceneItemLocked.md) |Get-OBSSceneItemLocked : GetSceneItemLocked | -|[Get-OBSSceneItemTransform](docs/Get-OBSSceneItemTransform.md) |Get-OBSSceneItemTransform : GetSceneItemTransform | -|[Get-OBSSceneSceneTransitionOverride](docs/Get-OBSSceneSceneTransitionOverride.md) |Get-OBSSceneSceneTransitionOverride : GetSceneSceneTransitionOverride | -|[Get-OBSSceneTransition](docs/Get-OBSSceneTransition.md) |Get-OBSSceneTransition : GetSceneTransitionList | -|[Get-OBSSourceActive](docs/Get-OBSSourceActive.md) |Get-OBSSourceActive : GetSourceActive | -|[Get-OBSSourceFilter](docs/Get-OBSSourceFilter.md) |Get-OBSSourceFilter : GetSourceFilter | -|[Get-OBSSourceFilterDefaultSettings](docs/Get-OBSSourceFilterDefaultSettings.md) |Get-OBSSourceFilterDefaultSettings : GetSourceFilterDefaultSettings | -|[Get-OBSSourceFilterList](docs/Get-OBSSourceFilterList.md) |Get-OBSSourceFilterList : GetSourceFilterList | -|[Get-OBSSourceScreenshot](docs/Get-OBSSourceScreenshot.md) |Get-OBSSourceScreenshot : GetSourceScreenshot | -|[Get-OBSSpecialInputs](docs/Get-OBSSpecialInputs.md) |Get-OBSSpecialInputs : GetSpecialInputs | -|[Get-OBSStats](docs/Get-OBSStats.md) |Get-OBSStats : GetStats | -|[Get-OBSStreamServiceSettings](docs/Get-OBSStreamServiceSettings.md) |Get-OBSStreamServiceSettings : GetStreamServiceSettings | -|[Get-OBSStreamStatus](docs/Get-OBSStreamStatus.md) |Get-OBSStreamStatus : GetStreamStatus | -|[Get-OBSStudioModeEnabled](docs/Get-OBSStudioModeEnabled.md) |Get-OBSStudioModeEnabled : GetStudioModeEnabled | -|[Get-OBSTransitionKind](docs/Get-OBSTransitionKind.md) |Get-OBSTransitionKind : GetTransitionKindList | -|[Get-OBSVersion](docs/Get-OBSVersion.md) |Get-OBSVersion : GetVersion | -|[Get-OBSVideoSettings](docs/Get-OBSVideoSettings.md) |Get-OBSVideoSettings : GetVideoSettings | -|[Get-OBSVirtualCamStatus](docs/Get-OBSVirtualCamStatus.md) |Get-OBSVirtualCamStatus : GetVirtualCamStatus | -|[Hide-OBS](docs/Hide-OBS.md) |Hide OBS | -|[Import-OBSEffect](docs/Import-OBSEffect.md) |Imports Effects | -|[Open-OBSInputFiltersDialog](docs/Open-OBSInputFiltersDialog.md) |Open-OBSInputFiltersDialog : OpenInputFiltersDialog | -|[Open-OBSInputInteractDialog](docs/Open-OBSInputInteractDialog.md) |Open-OBSInputInteractDialog : OpenInputInteractDialog | -|[Open-OBSInputPropertiesDialog](docs/Open-OBSInputPropertiesDialog.md) |Open-OBSInputPropertiesDialog : OpenInputPropertiesDialog | -|[Open-OBSSourceProjector](docs/Open-OBSSourceProjector.md) |Open-OBSSourceProjector : OpenSourceProjector | -|[Open-OBSVideoMixProjector](docs/Open-OBSVideoMixProjector.md) |Open-OBSVideoMixProjector : OpenVideoMixProjector | -|[Receive-OBS](docs/Receive-OBS.md) |Receives data from OBS | -|[Remove-OBS](docs/Remove-OBS.md) |Remove OBS | -|[Remove-OBSEffect](docs/Remove-OBSEffect.md) |Removes OBS Effects | -|[Remove-OBSInput](docs/Remove-OBSInput.md) |Remove-OBSInput : RemoveInput | -|[Remove-OBSProfile](docs/Remove-OBSProfile.md) |Remove-OBSProfile : RemoveProfile | -|[Remove-OBSScene](docs/Remove-OBSScene.md) |Remove-OBSScene : RemoveScene | -|[Remove-OBSSceneItem](docs/Remove-OBSSceneItem.md) |Remove-OBSSceneItem : RemoveSceneItem | -|[Remove-OBSSourceFilter](docs/Remove-OBSSourceFilter.md) |Remove-OBSSourceFilter : RemoveSourceFilter | -|[Resume-OBSRecord](docs/Resume-OBSRecord.md) |Resume-OBSRecord : ResumeRecord | -|[Save-OBSReplayBuffer](docs/Save-OBSReplayBuffer.md) |Save-OBSReplayBuffer : SaveReplayBuffer | -|[Save-OBSSourceScreenshot](docs/Save-OBSSourceScreenshot.md) |Save-OBSSourceScreenshot : SaveSourceScreenshot | -|[Send-OBS](docs/Send-OBS.md) |Sends messages to the OBS websocket. | -|[Send-OBSCallVendorRequest](docs/Send-OBSCallVendorRequest.md) |Send-OBSCallVendorRequest : CallVendorRequest | -|[Send-OBSCustomEvent](docs/Send-OBSCustomEvent.md) |Send-OBSCustomEvent : BroadcastCustomEvent | -|[Send-OBSOffsetMediaInputCursor](docs/Send-OBSOffsetMediaInputCursor.md) |Send-OBSOffsetMediaInputCursor : OffsetMediaInputCursor | -|[Send-OBSPauseRecord](docs/Send-OBSPauseRecord.md) |Send-OBSPauseRecord : PauseRecord | -|[Send-OBSPressInputPropertiesButton](docs/Send-OBSPressInputPropertiesButton.md) |Send-OBSPressInputPropertiesButton : PressInputPropertiesButton | -|[Send-OBSSleep](docs/Send-OBSSleep.md) |Send-OBSSleep : Sleep | -|[Send-OBSStreamCaption](docs/Send-OBSStreamCaption.md) |Send-OBSStreamCaption : SendStreamCaption | -|[Send-OBSTriggerHotkeyByKeySequence](docs/Send-OBSTriggerHotkeyByKeySequence.md) |Send-OBSTriggerHotkeyByKeySequence : TriggerHotkeyByKeySequence | -|[Send-OBSTriggerHotkeyByName](docs/Send-OBSTriggerHotkeyByName.md) |Send-OBSTriggerHotkeyByName : TriggerHotkeyByName | -|[Send-OBSTriggerMediaInputAction](docs/Send-OBSTriggerMediaInputAction.md) |Send-OBSTriggerMediaInputAction : TriggerMediaInputAction | -|[Send-OBSTriggerStudioModeTransition](docs/Send-OBSTriggerStudioModeTransition.md) |Send-OBSTriggerStudioModeTransition : TriggerStudioModeTransition | -|[Set-OBS3DFilter](docs/Set-OBS3DFilter.md) |Sets an OBS 3D Filter. | -|[Set-OBSAudioOutputSource](docs/Set-OBSAudioOutputSource.md) |Adds or sets an audio output source | -|[Set-OBSBrowserSource](docs/Set-OBSBrowserSource.md) |Sets a browser source | -|[Set-OBSColorFilter](docs/Set-OBSColorFilter.md) |Sets a color filter | -|[Set-OBSColorSource](docs/Set-OBSColorSource.md) |Adds a color source | -|[Set-OBSCurrentPreviewScene](docs/Set-OBSCurrentPreviewScene.md) |Set-OBSCurrentPreviewScene : SetCurrentPreviewScene | -|[Set-OBSCurrentProfile](docs/Set-OBSCurrentProfile.md) |Set-OBSCurrentProfile : SetCurrentProfile | -|[Set-OBSCurrentProgramScene](docs/Set-OBSCurrentProgramScene.md) |Set-OBSCurrentProgramScene : SetCurrentProgramScene | -|[Set-OBSCurrentSceneCollection](docs/Set-OBSCurrentSceneCollection.md) |Set-OBSCurrentSceneCollection : SetCurrentSceneCollection | -|[Set-OBSCurrentSceneTransition](docs/Set-OBSCurrentSceneTransition.md) |Set-OBSCurrentSceneTransition : SetCurrentSceneTransition | -|[Set-OBSCurrentSceneTransitionDuration](docs/Set-OBSCurrentSceneTransitionDuration.md) |Set-OBSCurrentSceneTransitionDuration : SetCurrentSceneTransitionDuration | -|[Set-OBSCurrentSceneTransitionSettings](docs/Set-OBSCurrentSceneTransitionSettings.md) |Set-OBSCurrentSceneTransitionSettings : SetCurrentSceneTransitionSettings | -|[Set-OBSDisplaySource](docs/Set-OBSDisplaySource.md) |Adds a display source | -|[Set-OBSEqualizerFilter](docs/Set-OBSEqualizerFilter.md) |Sets a Equalizer filter. | -|[Set-OBSGainFilter](docs/Set-OBSGainFilter.md) |Sets a Gain filter. | -|[Set-OBSInputAudioBalance](docs/Set-OBSInputAudioBalance.md) |Set-OBSInputAudioBalance : SetInputAudioBalance | -|[Set-OBSInputAudioMonitorType](docs/Set-OBSInputAudioMonitorType.md) |Set-OBSInputAudioMonitorType : SetInputAudioMonitorType | -|[Set-OBSInputAudioSyncOffset](docs/Set-OBSInputAudioSyncOffset.md) |Set-OBSInputAudioSyncOffset : SetInputAudioSyncOffset | -|[Set-OBSInputAudioTracks](docs/Set-OBSInputAudioTracks.md) |Set-OBSInputAudioTracks : SetInputAudioTracks | -|[Set-OBSInputMute](docs/Set-OBSInputMute.md) |Set-OBSInputMute : SetInputMute | -|[Set-OBSInputName](docs/Set-OBSInputName.md) |Set-OBSInputName : SetInputName | -|[Set-OBSInputSettings](docs/Set-OBSInputSettings.md) |Set-OBSInputSettings : SetInputSettings | -|[Set-OBSInputVolume](docs/Set-OBSInputVolume.md) |Set-OBSInputVolume : SetInputVolume | -|[Set-OBSMediaInputCursor](docs/Set-OBSMediaInputCursor.md) |Set-OBSMediaInputCursor : SetMediaInputCursor | -|[Set-OBSMediaSource](docs/Set-OBSMediaSource.md) |Adds a media source | -|[Set-OBSOutputSettings](docs/Set-OBSOutputSettings.md) |Set-OBSOutputSettings : SetOutputSettings | -|[Set-OBSPersistentData](docs/Set-OBSPersistentData.md) |Set-OBSPersistentData : SetPersistentData | -|[Set-OBSProfileParameter](docs/Set-OBSProfileParameter.md) |Set-OBSProfileParameter : SetProfileParameter | -|[Set-OBSRecordDirectory](docs/Set-OBSRecordDirectory.md) |Set-OBSRecordDirectory : SetRecordDirectory | -|[Set-OBSRenderDelayFilter](docs/Set-OBSRenderDelayFilter.md) |Sets a RenderDelay filter. | -|[Set-OBSScaleFilter](docs/Set-OBSScaleFilter.md) |Sets a Scale filter. | -|[Set-OBSSceneItemBlendMode](docs/Set-OBSSceneItemBlendMode.md) |Set-OBSSceneItemBlendMode : SetSceneItemBlendMode | -|[Set-OBSSceneItemEnabled](docs/Set-OBSSceneItemEnabled.md) |Set-OBSSceneItemEnabled : SetSceneItemEnabled | -|[Set-OBSSceneItemIndex](docs/Set-OBSSceneItemIndex.md) |Set-OBSSceneItemIndex : SetSceneItemIndex | -|[Set-OBSSceneItemLocked](docs/Set-OBSSceneItemLocked.md) |Set-OBSSceneItemLocked : SetSceneItemLocked | -|[Set-OBSSceneItemTransform](docs/Set-OBSSceneItemTransform.md) |Set-OBSSceneItemTransform : SetSceneItemTransform | -|[Set-OBSSceneName](docs/Set-OBSSceneName.md) |Set-OBSSceneName : SetSceneName | -|[Set-OBSSceneSceneTransitionOverride](docs/Set-OBSSceneSceneTransitionOverride.md) |Set-OBSSceneSceneTransitionOverride : SetSceneSceneTransitionOverride | -|[Set-OBSScrollFilter](docs/Set-OBSScrollFilter.md) |Sets a scroll filter. | -|[Set-OBSShaderFilter](docs/Set-OBSShaderFilter.md) |Sets a Shader filter. | -|[Set-OBSSharpnessFilter](docs/Set-OBSSharpnessFilter.md) |Sets a Sharpness filter. | -|[Set-OBSSourceFilterEnabled](docs/Set-OBSSourceFilterEnabled.md) |Set-OBSSourceFilterEnabled : SetSourceFilterEnabled | -|[Set-OBSSourceFilterIndex](docs/Set-OBSSourceFilterIndex.md) |Set-OBSSourceFilterIndex : SetSourceFilterIndex | -|[Set-OBSSourceFilterName](docs/Set-OBSSourceFilterName.md) |Set-OBSSourceFilterName : SetSourceFilterName | -|[Set-OBSSourceFilterSettings](docs/Set-OBSSourceFilterSettings.md) |Set-OBSSourceFilterSettings : SetSourceFilterSettings | -|[Set-OBSStreamServiceSettings](docs/Set-OBSStreamServiceSettings.md) |Set-OBSStreamServiceSettings : SetStreamServiceSettings | -|[Set-OBSStudioModeEnabled](docs/Set-OBSStudioModeEnabled.md) |Set-OBSStudioModeEnabled : SetStudioModeEnabled | -|[Set-OBSTBarPosition](docs/Set-OBSTBarPosition.md) |Set-OBSTBarPosition : SetTBarPosition | -|[Set-OBSVideoSettings](docs/Set-OBSVideoSettings.md) |Set-OBSVideoSettings : SetVideoSettings | -|[Set-OBSVLCSource](docs/Set-OBSVLCSource.md) |Adds a VLC playlist source | -|[Set-OBSWindowSource](docs/Set-OBSWindowSource.md) |Adds or sets a window capture source | -|[Show-OBS](docs/Show-OBS.md) |Shows content in OBS | -|[Start-OBSEffect](docs/Start-OBSEffect.md) |Starts obs-powershell effects. | -|[Start-OBSOutput](docs/Start-OBSOutput.md) |Start-OBSOutput : StartOutput | -|[Start-OBSRecord](docs/Start-OBSRecord.md) |Start-OBSRecord : StartRecord | -|[Start-OBSReplayBuffer](docs/Start-OBSReplayBuffer.md) |Start-OBSReplayBuffer : StartReplayBuffer | -|[Start-OBSStream](docs/Start-OBSStream.md) |Start-OBSStream : StartStream | -|[Start-OBSVirtualCam](docs/Start-OBSVirtualCam.md) |Start-OBSVirtualCam : StartVirtualCam | -|[Stop-OBSEffect](docs/Stop-OBSEffect.md) |Stops obs-powershell effects. | -|[Stop-OBSOutput](docs/Stop-OBSOutput.md) |Stop-OBSOutput : StopOutput | -|[Stop-OBSRecord](docs/Stop-OBSRecord.md) |Stop-OBSRecord : StopRecord | -|[Stop-OBSReplayBuffer](docs/Stop-OBSReplayBuffer.md) |Stop-OBSReplayBuffer : StopReplayBuffer | -|[Stop-OBSStream](docs/Stop-OBSStream.md) |Stop-OBSStream : StopStream | -|[Stop-OBSVirtualCam](docs/Stop-OBSVirtualCam.md) |Stop-OBSVirtualCam : StopVirtualCam | -|[Switch-OBSInputMute](docs/Switch-OBSInputMute.md) |Switch-OBSInputMute : ToggleInputMute | -|[Switch-OBSOutput](docs/Switch-OBSOutput.md) |Switch-OBSOutput : ToggleOutput | -|[Switch-OBSRecord](docs/Switch-OBSRecord.md) |Switch-OBSRecord : ToggleRecord | -|[Switch-OBSRecordPause](docs/Switch-OBSRecordPause.md) |Switch-OBSRecordPause : ToggleRecordPause | -|[Switch-OBSReplayBuffer](docs/Switch-OBSReplayBuffer.md) |Switch-OBSReplayBuffer : ToggleReplayBuffer | -|[Switch-OBSStream](docs/Switch-OBSStream.md) |Switch-OBSStream : ToggleStream | -|[Switch-OBSVirtualCam](docs/Switch-OBSVirtualCam.md) |Switch-OBSVirtualCam : ToggleVirtualCam | -|[Watch-OBS](docs/Watch-OBS.md) |Watches OBS | +|Name |Synopsis| +|------------------------------------------------------------------------------------------|--------| +|[Add-OBSInput](docs/Add-OBSInput.md) | +|[Add-OBSProfile](docs/Add-OBSProfile.md) | +|[Add-OBSScene](docs/Add-OBSScene.md) | +|[Add-OBSSceneCollection](docs/Add-OBSSceneCollection.md) | +|[Add-OBSSceneItem](docs/Add-OBSSceneItem.md) | +|[Add-OBSSourceFilter](docs/Add-OBSSourceFilter.md) | +|[Clear-OBSScene](docs/Clear-OBSScene.md) | +|[Connect-OBS](docs/Connect-OBS.md) | +|[Copy-OBSSceneItem](docs/Copy-OBSSceneItem.md) | +|[Disconnect-OBS](docs/Disconnect-OBS.md) | +|[Get-OBS](docs/Get-OBS.md) | +|[Get-OBS3dSwapTransitionShader](docs/Get-OBS3dSwapTransitionShader.md) | +|[Get-OBSAddShader](docs/Get-OBSAddShader.md) | +|[Get-OBSAlphaBorderShader](docs/Get-OBSAlphaBorderShader.md) | +|[Get-OBSAlphaGamingBentCameraShader](docs/Get-OBSAlphaGamingBentCameraShader.md) | +|[Get-OBSAnimatedPathShader](docs/Get-OBSAnimatedPathShader.md) | +|[Get-OBSAnimatedTextureShader](docs/Get-OBSAnimatedTextureShader.md) | +|[Get-OBSAsciiShader](docs/Get-OBSAsciiShader.md) | +|[Get-OBSAspectRatioShader](docs/Get-OBSAspectRatioShader.md) | +|[Get-OBSBackgroundRemovalShader](docs/Get-OBSBackgroundRemovalShader.md) | +|[Get-OBSBlendOpacityShader](docs/Get-OBSBlendOpacityShader.md) | +|[Get-OBSBlinkShader](docs/Get-OBSBlinkShader.md) | +|[Get-OBSBloomShader](docs/Get-OBSBloomShader.md) | +|[Get-OBSBorderShader](docs/Get-OBSBorderShader.md) | +|[Get-OBSBoxBlurShader](docs/Get-OBSBoxBlurShader.md) | +|[Get-OBSBulgePinchShader](docs/Get-OBSBulgePinchShader.md) | +|[Get-OBSBurnShader](docs/Get-OBSBurnShader.md) | +|[Get-OBSCartoonShader](docs/Get-OBSCartoonShader.md) | +|[Get-OBSCellShadedShader](docs/Get-OBSCellShadedShader.md) | +|[Get-OBSChromaticAberrationShader](docs/Get-OBSChromaticAberrationShader.md) | +|[Get-OBSChromaUVDistortionShader](docs/Get-OBSChromaUVDistortionShader.md) | +|[Get-OBSCircleMaskFilterShader](docs/Get-OBSCircleMaskFilterShader.md) | +|[Get-OBSClockAnalogShader](docs/Get-OBSClockAnalogShader.md) | +|[Get-OBSClockDigitalLedShader](docs/Get-OBSClockDigitalLedShader.md) | +|[Get-OBSClockDigitalNixieShader](docs/Get-OBSClockDigitalNixieShader.md) | +|[Get-OBSColorDepthShader](docs/Get-OBSColorDepthShader.md) | +|[Get-OBSColorGradeFilterShader](docs/Get-OBSColorGradeFilterShader.md) | +|[Get-OBSCornerPinShader](docs/Get-OBSCornerPinShader.md) | +|[Get-OBSCrtCurvatureShader](docs/Get-OBSCrtCurvatureShader.md) | +|[Get-OBSCurrentPreviewScene](docs/Get-OBSCurrentPreviewScene.md) | +|[Get-OBSCurrentProgramScene](docs/Get-OBSCurrentProgramScene.md) | +|[Get-OBSCurrentSceneTransition](docs/Get-OBSCurrentSceneTransition.md) | +|[Get-OBSCurrentSceneTransitionCursor](docs/Get-OBSCurrentSceneTransitionCursor.md) | +|[Get-OBSCurveShader](docs/Get-OBSCurveShader.md) | +|[Get-OBSCutRectPerCornerShader](docs/Get-OBSCutRectPerCornerShader.md) | +|[Get-OBSCylinderShader](docs/Get-OBSCylinderShader.md) | +|[Get-OBSDarkenShader](docs/Get-OBSDarkenShader.md) | +|[Get-OBSDeadPixelFixerShader](docs/Get-OBSDeadPixelFixerShader.md) | +|[Get-OBSDensitySatHueShader](docs/Get-OBSDensitySatHueShader.md) | +|[Get-OBSDiffuseTransitionShader](docs/Get-OBSDiffuseTransitionShader.md) | +|[Get-OBSDigitalRainShader](docs/Get-OBSDigitalRainShader.md) | +|[Get-OBSDivideRotateShader](docs/Get-OBSDivideRotateShader.md) | +|[Get-OBSDoodleShader](docs/Get-OBSDoodleShader.md) | +|[Get-OBSDrawingsShader](docs/Get-OBSDrawingsShader.md) | +|[Get-OBSDropShadowShader](docs/Get-OBSDropShadowShader.md) | +|[Get-OBSDrunkShader](docs/Get-OBSDrunkShader.md) | +|[Get-OBSDynamicMaskShader](docs/Get-OBSDynamicMaskShader.md) | +|[Get-OBSEdgeDetectionShader](docs/Get-OBSEdgeDetectionShader.md) | +|[Get-OBSEffect](docs/Get-OBSEffect.md) | +|[Get-OBSEmbersShader](docs/Get-OBSEmbersShader.md) | +|[Get-OBSEmbossColorShader](docs/Get-OBSEmbossColorShader.md) | +|[Get-OBSEmbossShader](docs/Get-OBSEmbossShader.md) | +|[Get-OBSExeldroBentCameraShader](docs/Get-OBSExeldroBentCameraShader.md) | +|[Get-OBSFadeTransitionShader](docs/Get-OBSFadeTransitionShader.md) | +|[Get-OBSFillColorGradientShader](docs/Get-OBSFillColorGradientShader.md) | +|[Get-OBSFillColorLinearShader](docs/Get-OBSFillColorLinearShader.md) | +|[Get-OBSFillColorRadialDegreesShader](docs/Get-OBSFillColorRadialDegreesShader.md) | +|[Get-OBSFillColorRadialPercentageShader](docs/Get-OBSFillColorRadialPercentageShader.md) | +|[Get-OBSFilterTemplateShader](docs/Get-OBSFilterTemplateShader.md) | +|[Get-OBSFire3Shader](docs/Get-OBSFire3Shader.md) | +|[Get-OBSFireShader](docs/Get-OBSFireShader.md) | +|[Get-OBSFireworks2Shader](docs/Get-OBSFireworks2Shader.md) | +|[Get-OBSFireworksShader](docs/Get-OBSFireworksShader.md) | +|[Get-OBSFisheyeShader](docs/Get-OBSFisheyeShader.md) | +|[Get-OBSFisheyeXyShader](docs/Get-OBSFisheyeXyShader.md) | +|[Get-OBSFlipShader](docs/Get-OBSFlipShader.md) | +|[Get-OBSFrostedGlassShader](docs/Get-OBSFrostedGlassShader.md) | +|[Get-OBSGammaCorrectionShader](docs/Get-OBSGammaCorrectionShader.md) | +|[Get-OBSGaussianBlurAdvancedShader](docs/Get-OBSGaussianBlurAdvancedShader.md) | +|[Get-OBSGaussianBlurShader](docs/Get-OBSGaussianBlurShader.md) | +|[Get-OBSGaussianBlurSimpleShader](docs/Get-OBSGaussianBlurSimpleShader.md) | +|[Get-OBSGaussianExampleShader](docs/Get-OBSGaussianExampleShader.md) | +|[Get-OBSGaussianSimpleShader](docs/Get-OBSGaussianSimpleShader.md) | +|[Get-OBSGbCameraShader](docs/Get-OBSGbCameraShader.md) | +|[Get-OBSGlassShader](docs/Get-OBSGlassShader.md) | +|[Get-OBSGlitchAnalogShader](docs/Get-OBSGlitchAnalogShader.md) | +|[Get-OBSGlitchShader](docs/Get-OBSGlitchShader.md) | +|[Get-OBSGlowShader](docs/Get-OBSGlowShader.md) | +|[Get-OBSGradientShader](docs/Get-OBSGradientShader.md) | +|[Get-OBSGroup](docs/Get-OBSGroup.md) | +|[Get-OBSGroupSceneItem](docs/Get-OBSGroupSceneItem.md) | +|[Get-OBSHalftoneShader](docs/Get-OBSHalftoneShader.md) | +|[Get-OBSHeatWaveSimpleShader](docs/Get-OBSHeatWaveSimpleShader.md) | +|[Get-OBSHexagonShader](docs/Get-OBSHexagonShader.md) | +|[Get-OBSHotkey](docs/Get-OBSHotkey.md) | +|[Get-OBSHslHsvSaturationShader](docs/Get-OBSHslHsvSaturationShader.md) | +|[Get-OBSHueRotatonShader](docs/Get-OBSHueRotatonShader.md) | +|[Get-OBSInput](docs/Get-OBSInput.md) | +|[Get-OBSInputAudioBalance](docs/Get-OBSInputAudioBalance.md) | +|[Get-OBSInputAudioMonitorType](docs/Get-OBSInputAudioMonitorType.md) | +|[Get-OBSInputAudioSyncOffset](docs/Get-OBSInputAudioSyncOffset.md) | +|[Get-OBSInputAudioTracks](docs/Get-OBSInputAudioTracks.md) | +|[Get-OBSInputDefaultSettings](docs/Get-OBSInputDefaultSettings.md) | +|[Get-OBSInputKind](docs/Get-OBSInputKind.md) | +|[Get-OBSInputMute](docs/Get-OBSInputMute.md) | +|[Get-OBSInputPropertiesListPropertyItems](docs/Get-OBSInputPropertiesListPropertyItems.md)| +|[Get-OBSInputSettings](docs/Get-OBSInputSettings.md) | +|[Get-OBSInputVolume](docs/Get-OBSInputVolume.md) | +|[Get-OBSIntensityScopeShader](docs/Get-OBSIntensityScopeShader.md) | +|[Get-OBSInvertLumaShader](docs/Get-OBSInvertLumaShader.md) | +|[Get-OBSLastReplayBufferReplay](docs/Get-OBSLastReplayBufferReplay.md) | +|[Get-OBSLuminance2Shader](docs/Get-OBSLuminance2Shader.md) | +|[Get-OBSLuminanceAlphaShader](docs/Get-OBSLuminanceAlphaShader.md) | +|[Get-OBSLuminanceShader](docs/Get-OBSLuminanceShader.md) | +|[Get-OBSMatrixShader](docs/Get-OBSMatrixShader.md) | +|[Get-OBSMediaInputStatus](docs/Get-OBSMediaInputStatus.md) | +|[Get-OBSMonitor](docs/Get-OBSMonitor.md) | +|[Get-OBSMultiplyShader](docs/Get-OBSMultiplyShader.md) | +|[Get-OBSNightSkyShader](docs/Get-OBSNightSkyShader.md) | +|[Get-OBSOpacityShader](docs/Get-OBSOpacityShader.md) | +|[Get-OBSOutput](docs/Get-OBSOutput.md) | +|[Get-OBSOutputSettings](docs/Get-OBSOutputSettings.md) | +|[Get-OBSOutputStatus](docs/Get-OBSOutputStatus.md) | +|[Get-OBSPagePeelShader](docs/Get-OBSPagePeelShader.md) | +|[Get-OBSPagePeelTransitionShader](docs/Get-OBSPagePeelTransitionShader.md) | +|[Get-OBSPerlinNoiseShader](docs/Get-OBSPerlinNoiseShader.md) | +|[Get-OBSPersistentData](docs/Get-OBSPersistentData.md) | +|[Get-OBSPieChartShader](docs/Get-OBSPieChartShader.md) | +|[Get-OBSPixelationShader](docs/Get-OBSPixelationShader.md) | +|[Get-OBSPixelationTransitionShader](docs/Get-OBSPixelationTransitionShader.md) | +|[Get-OBSPolarShader](docs/Get-OBSPolarShader.md) | +|[Get-OBSProfile](docs/Get-OBSProfile.md) | +|[Get-OBSProfileParameter](docs/Get-OBSProfileParameter.md) | +|[Get-OBSPulseShader](docs/Get-OBSPulseShader.md) | +|[Get-OBSRainbowShader](docs/Get-OBSRainbowShader.md) | +|[Get-OBSRainWindowShader](docs/Get-OBSRainWindowShader.md) | +|[Get-OBSRecordDirectory](docs/Get-OBSRecordDirectory.md) | +|[Get-OBSRecordStatus](docs/Get-OBSRecordStatus.md) | +|[Get-OBSRectangularDropShadowShader](docs/Get-OBSRectangularDropShadowShader.md) | +|[Get-OBSReflectShader](docs/Get-OBSReflectShader.md) | +|[Get-OBSRemovePartialPixelsShader](docs/Get-OBSRemovePartialPixelsShader.md) | +|[Get-OBSRepeatShader](docs/Get-OBSRepeatShader.md) | +|[Get-OBSRepeatTextureShader](docs/Get-OBSRepeatTextureShader.md) | +|[Get-OBSReplayBufferStatus](docs/Get-OBSReplayBufferStatus.md) | +|[Get-OBSRGBAPercentShader](docs/Get-OBSRGBAPercentShader.md) | +|[Get-OBSRgbColorWheelShader](docs/Get-OBSRgbColorWheelShader.md) | +|[Get-OBSRgbSplitShader](docs/Get-OBSRgbSplitShader.md) | +|[Get-OBSRgbvisibilityShader](docs/Get-OBSRgbvisibilityShader.md) | +|[Get-OBSRGSSAAShader](docs/Get-OBSRGSSAAShader.md) | +|[Get-OBSRippleShader](docs/Get-OBSRippleShader.md) | +|[Get-OBSRotatingSourceShader](docs/Get-OBSRotatingSourceShader.md) | +|[Get-OBSRotatoeShader](docs/Get-OBSRotatoeShader.md) | +|[Get-OBSRoundedRect2Shader](docs/Get-OBSRoundedRect2Shader.md) | +|[Get-OBSRoundedRectPerCornerShader](docs/Get-OBSRoundedRectPerCornerShader.md) | +|[Get-OBSRoundedRectPerSideShader](docs/Get-OBSRoundedRectPerSideShader.md) | +|[Get-OBSRoundedRectShader](docs/Get-OBSRoundedRectShader.md) | +|[Get-OBSRoundedStrokeGradientShader](docs/Get-OBSRoundedStrokeGradientShader.md) | +|[Get-OBSRoundedStrokeShader](docs/Get-OBSRoundedStrokeShader.md) | +|[Get-OBSScanLineShader](docs/Get-OBSScanLineShader.md) | +|[Get-OBSScene](docs/Get-OBSScene.md) | +|[Get-OBSSceneCollection](docs/Get-OBSSceneCollection.md) | +|[Get-OBSSceneItem](docs/Get-OBSSceneItem.md) | +|[Get-OBSSceneItemBlendMode](docs/Get-OBSSceneItemBlendMode.md) | +|[Get-OBSSceneItemEnabled](docs/Get-OBSSceneItemEnabled.md) | +|[Get-OBSSceneItemId](docs/Get-OBSSceneItemId.md) | +|[Get-OBSSceneItemIndex](docs/Get-OBSSceneItemIndex.md) | +|[Get-OBSSceneItemLocked](docs/Get-OBSSceneItemLocked.md) | +|[Get-OBSSceneItemSource](docs/Get-OBSSceneItemSource.md) | +|[Get-OBSSceneItemTransform](docs/Get-OBSSceneItemTransform.md) | +|[Get-OBSSceneSceneTransitionOverride](docs/Get-OBSSceneSceneTransitionOverride.md) | +|[Get-OBSSceneTransition](docs/Get-OBSSceneTransition.md) | +|[Get-OBSSeascapeShader](docs/Get-OBSSeascapeShader.md) | +|[Get-OBSSeasickShader](docs/Get-OBSSeasickShader.md) | +|[Get-OBSSelectiveColorShader](docs/Get-OBSSelectiveColorShader.md) | +|[Get-OBSShakeShader](docs/Get-OBSShakeShader.md) | +|[Get-OBSShineShader](docs/Get-OBSShineShader.md) | +|[Get-OBSSimpleGradientShader](docs/Get-OBSSimpleGradientShader.md) | +|[Get-OBSSimplexNoiseShader](docs/Get-OBSSimplexNoiseShader.md) | +|[Get-OBSSmartDenoiseShader](docs/Get-OBSSmartDenoiseShader.md) | +|[Get-OBSSourceActive](docs/Get-OBSSourceActive.md) | +|[Get-OBSSourceFilter](docs/Get-OBSSourceFilter.md) | +|[Get-OBSSourceFilterDefaultSettings](docs/Get-OBSSourceFilterDefaultSettings.md) | +|[Get-OBSSourceFilterKind](docs/Get-OBSSourceFilterKind.md) | +|[Get-OBSSourceFilterList](docs/Get-OBSSourceFilterList.md) | +|[Get-OBSSourceScreenshot](docs/Get-OBSSourceScreenshot.md) | +|[Get-OBSSpecialInputs](docs/Get-OBSSpecialInputs.md) | +|[Get-OBSSpecularShineShader](docs/Get-OBSSpecularShineShader.md) | +|[Get-OBSSpotlightShader](docs/Get-OBSSpotlightShader.md) | +|[Get-OBSStats](docs/Get-OBSStats.md) | +|[Get-OBSStreamServiceSettings](docs/Get-OBSStreamServiceSettings.md) | +|[Get-OBSStreamStatus](docs/Get-OBSStreamStatus.md) | +|[Get-OBSStudioModeEnabled](docs/Get-OBSStudioModeEnabled.md) | +|[Get-OBSSwirlShader](docs/Get-OBSSwirlShader.md) | +|[Get-OBSTetraShader](docs/Get-OBSTetraShader.md) | +|[Get-OBSThermalShader](docs/Get-OBSThermalShader.md) | +|[Get-OBSTransitionKind](docs/Get-OBSTransitionKind.md) | +|[Get-OBSTvCrtSubpixelShader](docs/Get-OBSTvCrtSubpixelShader.md) | +|[Get-OBSTwistShader](docs/Get-OBSTwistShader.md) | +|[Get-OBSTwoPassDropShadowShader](docs/Get-OBSTwoPassDropShadowShader.md) | +|[Get-OBSVCRShader](docs/Get-OBSVCRShader.md) | +|[Get-OBSVersion](docs/Get-OBSVersion.md) | +|[Get-OBSVHSShader](docs/Get-OBSVHSShader.md) | +|[Get-OBSVideoSettings](docs/Get-OBSVideoSettings.md) | +|[Get-OBSVignettingShader](docs/Get-OBSVignettingShader.md) | +|[Get-OBSVirtualCamStatus](docs/Get-OBSVirtualCamStatus.md) | +|[Get-OBSVoronoiPixelationShader](docs/Get-OBSVoronoiPixelationShader.md) | +|[Get-OBSZigZagShader](docs/Get-OBSZigZagShader.md) | +|[Get-OBSZoomBlurShader](docs/Get-OBSZoomBlurShader.md) | +|[Get-OBSZoomShader](docs/Get-OBSZoomShader.md) | +|[Get-OBSZoomXYShader](docs/Get-OBSZoomXYShader.md) | +|[Hide-OBS](docs/Hide-OBS.md) | +|[Import-OBSEffect](docs/Import-OBSEffect.md) | +|[Open-OBSInputFiltersDialog](docs/Open-OBSInputFiltersDialog.md) | +|[Open-OBSInputInteractDialog](docs/Open-OBSInputInteractDialog.md) | +|[Open-OBSInputPropertiesDialog](docs/Open-OBSInputPropertiesDialog.md) | +|[Open-OBSSourceProjector](docs/Open-OBSSourceProjector.md) | +|[Open-OBSVideoMixProjector](docs/Open-OBSVideoMixProjector.md) | +|[Receive-OBS](docs/Receive-OBS.md) | +|[Remove-OBS](docs/Remove-OBS.md) | +|[Remove-OBSEffect](docs/Remove-OBSEffect.md) | +|[Remove-OBSInput](docs/Remove-OBSInput.md) | +|[Remove-OBSProfile](docs/Remove-OBSProfile.md) | +|[Remove-OBSScene](docs/Remove-OBSScene.md) | +|[Remove-OBSSceneItem](docs/Remove-OBSSceneItem.md) | +|[Remove-OBSSourceFilter](docs/Remove-OBSSourceFilter.md) | +|[Resume-OBSRecord](docs/Resume-OBSRecord.md) | +|[Save-OBSReplayBuffer](docs/Save-OBSReplayBuffer.md) | +|[Save-OBSSourceScreenshot](docs/Save-OBSSourceScreenshot.md) | +|[Send-OBS](docs/Send-OBS.md) | +|[Send-OBSCallVendorRequest](docs/Send-OBSCallVendorRequest.md) | +|[Send-OBSCustomEvent](docs/Send-OBSCustomEvent.md) | +|[Send-OBSOffsetMediaInputCursor](docs/Send-OBSOffsetMediaInputCursor.md) | +|[Send-OBSPauseRecord](docs/Send-OBSPauseRecord.md) | +|[Send-OBSPressInputPropertiesButton](docs/Send-OBSPressInputPropertiesButton.md) | +|[Send-OBSSleep](docs/Send-OBSSleep.md) | +|[Send-OBSStreamCaption](docs/Send-OBSStreamCaption.md) | +|[Send-OBSTriggerHotkeyByKeySequence](docs/Send-OBSTriggerHotkeyByKeySequence.md) | +|[Send-OBSTriggerHotkeyByName](docs/Send-OBSTriggerHotkeyByName.md) | +|[Send-OBSTriggerMediaInputAction](docs/Send-OBSTriggerMediaInputAction.md) | +|[Send-OBSTriggerStudioModeTransition](docs/Send-OBSTriggerStudioModeTransition.md) | +|[Set-OBS3DFilter](docs/Set-OBS3DFilter.md) | +|[Set-OBSAudioOutputSource](docs/Set-OBSAudioOutputSource.md) | +|[Set-OBSBrowserSource](docs/Set-OBSBrowserSource.md) | +|[Set-OBSColorFilter](docs/Set-OBSColorFilter.md) | +|[Set-OBSColorSource](docs/Set-OBSColorSource.md) | +|[Set-OBSCurrentPreviewScene](docs/Set-OBSCurrentPreviewScene.md) | +|[Set-OBSCurrentProfile](docs/Set-OBSCurrentProfile.md) | +|[Set-OBSCurrentProgramScene](docs/Set-OBSCurrentProgramScene.md) | +|[Set-OBSCurrentSceneCollection](docs/Set-OBSCurrentSceneCollection.md) | +|[Set-OBSCurrentSceneTransition](docs/Set-OBSCurrentSceneTransition.md) | +|[Set-OBSCurrentSceneTransitionDuration](docs/Set-OBSCurrentSceneTransitionDuration.md) | +|[Set-OBSCurrentSceneTransitionSettings](docs/Set-OBSCurrentSceneTransitionSettings.md) | +|[Set-OBSDisplaySource](docs/Set-OBSDisplaySource.md) | +|[Set-OBSEqualizerFilter](docs/Set-OBSEqualizerFilter.md) | +|[Set-OBSGainFilter](docs/Set-OBSGainFilter.md) | +|[Set-OBSInputAudioBalance](docs/Set-OBSInputAudioBalance.md) | +|[Set-OBSInputAudioMonitorType](docs/Set-OBSInputAudioMonitorType.md) | +|[Set-OBSInputAudioSyncOffset](docs/Set-OBSInputAudioSyncOffset.md) | +|[Set-OBSInputAudioTracks](docs/Set-OBSInputAudioTracks.md) | +|[Set-OBSInputMute](docs/Set-OBSInputMute.md) | +|[Set-OBSInputName](docs/Set-OBSInputName.md) | +|[Set-OBSInputSettings](docs/Set-OBSInputSettings.md) | +|[Set-OBSInputVolume](docs/Set-OBSInputVolume.md) | +|[Set-OBSMarkdownSource](docs/Set-OBSMarkdownSource.md) | +|[Set-OBSMediaInputCursor](docs/Set-OBSMediaInputCursor.md) | +|[Set-OBSMediaSource](docs/Set-OBSMediaSource.md) | +|[Set-OBSOutputSettings](docs/Set-OBSOutputSettings.md) | +|[Set-OBSPersistentData](docs/Set-OBSPersistentData.md) | +|[Set-OBSProfileParameter](docs/Set-OBSProfileParameter.md) | +|[Set-OBSRecordDirectory](docs/Set-OBSRecordDirectory.md) | +|[Set-OBSRenderDelayFilter](docs/Set-OBSRenderDelayFilter.md) | +|[Set-OBSScaleFilter](docs/Set-OBSScaleFilter.md) | +|[Set-OBSSceneItemBlendMode](docs/Set-OBSSceneItemBlendMode.md) | +|[Set-OBSSceneItemEnabled](docs/Set-OBSSceneItemEnabled.md) | +|[Set-OBSSceneItemIndex](docs/Set-OBSSceneItemIndex.md) | +|[Set-OBSSceneItemLocked](docs/Set-OBSSceneItemLocked.md) | +|[Set-OBSSceneItemTransform](docs/Set-OBSSceneItemTransform.md) | +|[Set-OBSSceneName](docs/Set-OBSSceneName.md) | +|[Set-OBSSceneSceneTransitionOverride](docs/Set-OBSSceneSceneTransitionOverride.md) | +|[Set-OBSScrollFilter](docs/Set-OBSScrollFilter.md) | +|[Set-OBSShaderFilter](docs/Set-OBSShaderFilter.md) | +|[Set-OBSSharpnessFilter](docs/Set-OBSSharpnessFilter.md) | +|[Set-OBSSoundCloudSource](docs/Set-OBSSoundCloudSource.md) | +|[Set-OBSSourceFilterEnabled](docs/Set-OBSSourceFilterEnabled.md) | +|[Set-OBSSourceFilterIndex](docs/Set-OBSSourceFilterIndex.md) | +|[Set-OBSSourceFilterName](docs/Set-OBSSourceFilterName.md) | +|[Set-OBSSourceFilterSettings](docs/Set-OBSSourceFilterSettings.md) | +|[Set-OBSStreamServiceSettings](docs/Set-OBSStreamServiceSettings.md) | +|[Set-OBSStudioModeEnabled](docs/Set-OBSStudioModeEnabled.md) | +|[Set-OBSSwitchSource](docs/Set-OBSSwitchSource.md) | +|[Set-OBSTBarPosition](docs/Set-OBSTBarPosition.md) | +|[Set-OBSVideoSettings](docs/Set-OBSVideoSettings.md) | +|[Set-OBSVLCSource](docs/Set-OBSVLCSource.md) | +|[Set-OBSWaveformSource](docs/Set-OBSWaveformSource.md) | +|[Set-OBSWindowSource](docs/Set-OBSWindowSource.md) | +|[Show-OBS](docs/Show-OBS.md) | +|[Start-OBSEffect](docs/Start-OBSEffect.md) | +|[Start-OBSOutput](docs/Start-OBSOutput.md) | +|[Start-OBSRecord](docs/Start-OBSRecord.md) | +|[Start-OBSReplayBuffer](docs/Start-OBSReplayBuffer.md) | +|[Start-OBSStream](docs/Start-OBSStream.md) | +|[Start-OBSVirtualCam](docs/Start-OBSVirtualCam.md) | +|[Stop-OBSEffect](docs/Stop-OBSEffect.md) | +|[Stop-OBSOutput](docs/Stop-OBSOutput.md) | +|[Stop-OBSRecord](docs/Stop-OBSRecord.md) | +|[Stop-OBSReplayBuffer](docs/Stop-OBSReplayBuffer.md) | +|[Stop-OBSStream](docs/Stop-OBSStream.md) | +|[Stop-OBSVirtualCam](docs/Stop-OBSVirtualCam.md) | +|[Switch-OBSInputMute](docs/Switch-OBSInputMute.md) | +|[Switch-OBSOutput](docs/Switch-OBSOutput.md) | +|[Switch-OBSRecord](docs/Switch-OBSRecord.md) | +|[Switch-OBSRecordPause](docs/Switch-OBSRecordPause.md) | +|[Switch-OBSReplayBuffer](docs/Switch-OBSReplayBuffer.md) | +|[Switch-OBSStream](docs/Switch-OBSStream.md) | +|[Switch-OBSVirtualCam](docs/Switch-OBSVirtualCam.md) | +|[Watch-OBS](docs/Watch-OBS.md) | @@ -203,14 +350,92 @@ Aliases |[Copy-OBSSceneItem](docs/Copy-OBSSceneItem.md) | |[Disconnect-OBS](docs/Disconnect-OBS.md) | |[Get-OBS](docs/Get-OBS.md) | +|[Get-OBS3dSwapTransitionShader](docs/Get-OBS3dSwapTransitionShader.md) | +|[Get-OBSAddShader](docs/Get-OBSAddShader.md) | +|[Get-OBSAlphaBorderShader](docs/Get-OBSAlphaBorderShader.md) | +|[Get-OBSAlphaGamingBentCameraShader](docs/Get-OBSAlphaGamingBentCameraShader.md) | +|[Get-OBSAnimatedPathShader](docs/Get-OBSAnimatedPathShader.md) | +|[Get-OBSAnimatedTextureShader](docs/Get-OBSAnimatedTextureShader.md) | +|[Get-OBSAsciiShader](docs/Get-OBSAsciiShader.md) | +|[Get-OBSAspectRatioShader](docs/Get-OBSAspectRatioShader.md) | +|[Get-OBSBackgroundRemovalShader](docs/Get-OBSBackgroundRemovalShader.md) | +|[Get-OBSBlendOpacityShader](docs/Get-OBSBlendOpacityShader.md) | +|[Get-OBSBlinkShader](docs/Get-OBSBlinkShader.md) | +|[Get-OBSBloomShader](docs/Get-OBSBloomShader.md) | +|[Get-OBSBorderShader](docs/Get-OBSBorderShader.md) | +|[Get-OBSBoxBlurShader](docs/Get-OBSBoxBlurShader.md) | +|[Get-OBSBulgePinchShader](docs/Get-OBSBulgePinchShader.md) | +|[Get-OBSBurnShader](docs/Get-OBSBurnShader.md) | +|[Get-OBSCartoonShader](docs/Get-OBSCartoonShader.md) | +|[Get-OBSCellShadedShader](docs/Get-OBSCellShadedShader.md) | +|[Get-OBSChromaticAberrationShader](docs/Get-OBSChromaticAberrationShader.md) | +|[Get-OBSChromaUVDistortionShader](docs/Get-OBSChromaUVDistortionShader.md) | +|[Get-OBSCircleMaskFilterShader](docs/Get-OBSCircleMaskFilterShader.md) | +|[Get-OBSClockAnalogShader](docs/Get-OBSClockAnalogShader.md) | +|[Get-OBSClockDigitalLedShader](docs/Get-OBSClockDigitalLedShader.md) | +|[Get-OBSClockDigitalNixieShader](docs/Get-OBSClockDigitalNixieShader.md) | +|[Get-OBSColorDepthShader](docs/Get-OBSColorDepthShader.md) | +|[Get-OBSColorGradeFilterShader](docs/Get-OBSColorGradeFilterShader.md) | +|[Get-OBSCornerPinShader](docs/Get-OBSCornerPinShader.md) | +|[Get-OBSCrtCurvatureShader](docs/Get-OBSCrtCurvatureShader.md) | |[Get-OBSCurrentPreviewScene](docs/Get-OBSCurrentPreviewScene.md) | |[Get-OBSCurrentProgramScene](docs/Get-OBSCurrentProgramScene.md) | |[Get-OBSCurrentSceneTransition](docs/Get-OBSCurrentSceneTransition.md) | |[Get-OBSCurrentSceneTransitionCursor](docs/Get-OBSCurrentSceneTransitionCursor.md) | +|[Get-OBSCurveShader](docs/Get-OBSCurveShader.md) | +|[Get-OBSCutRectPerCornerShader](docs/Get-OBSCutRectPerCornerShader.md) | +|[Get-OBSCylinderShader](docs/Get-OBSCylinderShader.md) | +|[Get-OBSDarkenShader](docs/Get-OBSDarkenShader.md) | +|[Get-OBSDeadPixelFixerShader](docs/Get-OBSDeadPixelFixerShader.md) | +|[Get-OBSDensitySatHueShader](docs/Get-OBSDensitySatHueShader.md) | +|[Get-OBSDiffuseTransitionShader](docs/Get-OBSDiffuseTransitionShader.md) | +|[Get-OBSDigitalRainShader](docs/Get-OBSDigitalRainShader.md) | +|[Get-OBSDivideRotateShader](docs/Get-OBSDivideRotateShader.md) | +|[Get-OBSDoodleShader](docs/Get-OBSDoodleShader.md) | +|[Get-OBSDrawingsShader](docs/Get-OBSDrawingsShader.md) | +|[Get-OBSDropShadowShader](docs/Get-OBSDropShadowShader.md) | +|[Get-OBSDrunkShader](docs/Get-OBSDrunkShader.md) | +|[Get-OBSDynamicMaskShader](docs/Get-OBSDynamicMaskShader.md) | +|[Get-OBSEdgeDetectionShader](docs/Get-OBSEdgeDetectionShader.md) | |[Get-OBSEffect](docs/Get-OBSEffect.md) | +|[Get-OBSEmbersShader](docs/Get-OBSEmbersShader.md) | +|[Get-OBSEmbossColorShader](docs/Get-OBSEmbossColorShader.md) | +|[Get-OBSEmbossShader](docs/Get-OBSEmbossShader.md) | +|[Get-OBSExeldroBentCameraShader](docs/Get-OBSExeldroBentCameraShader.md) | +|[Get-OBSFadeTransitionShader](docs/Get-OBSFadeTransitionShader.md) | +|[Get-OBSFillColorGradientShader](docs/Get-OBSFillColorGradientShader.md) | +|[Get-OBSFillColorLinearShader](docs/Get-OBSFillColorLinearShader.md) | +|[Get-OBSFillColorRadialDegreesShader](docs/Get-OBSFillColorRadialDegreesShader.md) | +|[Get-OBSFillColorRadialPercentageShader](docs/Get-OBSFillColorRadialPercentageShader.md) | +|[Get-OBSFilterTemplateShader](docs/Get-OBSFilterTemplateShader.md) | +|[Get-OBSFire3Shader](docs/Get-OBSFire3Shader.md) | +|[Get-OBSFireShader](docs/Get-OBSFireShader.md) | +|[Get-OBSFireworks2Shader](docs/Get-OBSFireworks2Shader.md) | +|[Get-OBSFireworksShader](docs/Get-OBSFireworksShader.md) | +|[Get-OBSFisheyeShader](docs/Get-OBSFisheyeShader.md) | +|[Get-OBSFisheyeXyShader](docs/Get-OBSFisheyeXyShader.md) | +|[Get-OBSFlipShader](docs/Get-OBSFlipShader.md) | +|[Get-OBSFrostedGlassShader](docs/Get-OBSFrostedGlassShader.md) | +|[Get-OBSGammaCorrectionShader](docs/Get-OBSGammaCorrectionShader.md) | +|[Get-OBSGaussianBlurAdvancedShader](docs/Get-OBSGaussianBlurAdvancedShader.md) | +|[Get-OBSGaussianBlurShader](docs/Get-OBSGaussianBlurShader.md) | +|[Get-OBSGaussianBlurSimpleShader](docs/Get-OBSGaussianBlurSimpleShader.md) | +|[Get-OBSGaussianExampleShader](docs/Get-OBSGaussianExampleShader.md) | +|[Get-OBSGaussianSimpleShader](docs/Get-OBSGaussianSimpleShader.md) | +|[Get-OBSGbCameraShader](docs/Get-OBSGbCameraShader.md) | +|[Get-OBSGlassShader](docs/Get-OBSGlassShader.md) | +|[Get-OBSGlitchAnalogShader](docs/Get-OBSGlitchAnalogShader.md) | +|[Get-OBSGlitchShader](docs/Get-OBSGlitchShader.md) | +|[Get-OBSGlowShader](docs/Get-OBSGlowShader.md) | +|[Get-OBSGradientShader](docs/Get-OBSGradientShader.md) | |[Get-OBSGroup](docs/Get-OBSGroup.md) | |[Get-OBSGroupSceneItem](docs/Get-OBSGroupSceneItem.md) | +|[Get-OBSHalftoneShader](docs/Get-OBSHalftoneShader.md) | +|[Get-OBSHeatWaveSimpleShader](docs/Get-OBSHeatWaveSimpleShader.md) | +|[Get-OBSHexagonShader](docs/Get-OBSHexagonShader.md) | |[Get-OBSHotkey](docs/Get-OBSHotkey.md) | +|[Get-OBSHslHsvSaturationShader](docs/Get-OBSHslHsvSaturationShader.md) | +|[Get-OBSHueRotatonShader](docs/Get-OBSHueRotatonShader.md) | |[Get-OBSInput](docs/Get-OBSInput.md) | |[Get-OBSInputAudioBalance](docs/Get-OBSInputAudioBalance.md) | |[Get-OBSInputAudioMonitorType](docs/Get-OBSInputAudioMonitorType.md) | @@ -222,18 +447,57 @@ Aliases |[Get-OBSInputPropertiesListPropertyItems](docs/Get-OBSInputPropertiesListPropertyItems.md)| |[Get-OBSInputSettings](docs/Get-OBSInputSettings.md) | |[Get-OBSInputVolume](docs/Get-OBSInputVolume.md) | +|[Get-OBSIntensityScopeShader](docs/Get-OBSIntensityScopeShader.md) | +|[Get-OBSInvertLumaShader](docs/Get-OBSInvertLumaShader.md) | |[Get-OBSLastReplayBufferReplay](docs/Get-OBSLastReplayBufferReplay.md) | +|[Get-OBSLuminance2Shader](docs/Get-OBSLuminance2Shader.md) | +|[Get-OBSLuminanceAlphaShader](docs/Get-OBSLuminanceAlphaShader.md) | +|[Get-OBSLuminanceShader](docs/Get-OBSLuminanceShader.md) | +|[Get-OBSMatrixShader](docs/Get-OBSMatrixShader.md) | |[Get-OBSMediaInputStatus](docs/Get-OBSMediaInputStatus.md) | |[Get-OBSMonitor](docs/Get-OBSMonitor.md) | +|[Get-OBSMultiplyShader](docs/Get-OBSMultiplyShader.md) | +|[Get-OBSNightSkyShader](docs/Get-OBSNightSkyShader.md) | +|[Get-OBSOpacityShader](docs/Get-OBSOpacityShader.md) | |[Get-OBSOutput](docs/Get-OBSOutput.md) | |[Get-OBSOutputSettings](docs/Get-OBSOutputSettings.md) | |[Get-OBSOutputStatus](docs/Get-OBSOutputStatus.md) | +|[Get-OBSPagePeelShader](docs/Get-OBSPagePeelShader.md) | +|[Get-OBSPagePeelTransitionShader](docs/Get-OBSPagePeelTransitionShader.md) | +|[Get-OBSPerlinNoiseShader](docs/Get-OBSPerlinNoiseShader.md) | |[Get-OBSPersistentData](docs/Get-OBSPersistentData.md) | +|[Get-OBSPieChartShader](docs/Get-OBSPieChartShader.md) | +|[Get-OBSPixelationShader](docs/Get-OBSPixelationShader.md) | +|[Get-OBSPixelationTransitionShader](docs/Get-OBSPixelationTransitionShader.md) | +|[Get-OBSPolarShader](docs/Get-OBSPolarShader.md) | |[Get-OBSProfile](docs/Get-OBSProfile.md) | |[Get-OBSProfileParameter](docs/Get-OBSProfileParameter.md) | +|[Get-OBSPulseShader](docs/Get-OBSPulseShader.md) | +|[Get-OBSRainbowShader](docs/Get-OBSRainbowShader.md) | +|[Get-OBSRainWindowShader](docs/Get-OBSRainWindowShader.md) | |[Get-OBSRecordDirectory](docs/Get-OBSRecordDirectory.md) | |[Get-OBSRecordStatus](docs/Get-OBSRecordStatus.md) | +|[Get-OBSRectangularDropShadowShader](docs/Get-OBSRectangularDropShadowShader.md) | +|[Get-OBSReflectShader](docs/Get-OBSReflectShader.md) | +|[Get-OBSRemovePartialPixelsShader](docs/Get-OBSRemovePartialPixelsShader.md) | +|[Get-OBSRepeatShader](docs/Get-OBSRepeatShader.md) | +|[Get-OBSRepeatTextureShader](docs/Get-OBSRepeatTextureShader.md) | |[Get-OBSReplayBufferStatus](docs/Get-OBSReplayBufferStatus.md) | +|[Get-OBSRGBAPercentShader](docs/Get-OBSRGBAPercentShader.md) | +|[Get-OBSRgbColorWheelShader](docs/Get-OBSRgbColorWheelShader.md) | +|[Get-OBSRgbSplitShader](docs/Get-OBSRgbSplitShader.md) | +|[Get-OBSRgbvisibilityShader](docs/Get-OBSRgbvisibilityShader.md) | +|[Get-OBSRGSSAAShader](docs/Get-OBSRGSSAAShader.md) | +|[Get-OBSRippleShader](docs/Get-OBSRippleShader.md) | +|[Get-OBSRotatingSourceShader](docs/Get-OBSRotatingSourceShader.md) | +|[Get-OBSRotatoeShader](docs/Get-OBSRotatoeShader.md) | +|[Get-OBSRoundedRect2Shader](docs/Get-OBSRoundedRect2Shader.md) | +|[Get-OBSRoundedRectPerCornerShader](docs/Get-OBSRoundedRectPerCornerShader.md) | +|[Get-OBSRoundedRectPerSideShader](docs/Get-OBSRoundedRectPerSideShader.md) | +|[Get-OBSRoundedRectShader](docs/Get-OBSRoundedRectShader.md) | +|[Get-OBSRoundedStrokeGradientShader](docs/Get-OBSRoundedStrokeGradientShader.md) | +|[Get-OBSRoundedStrokeShader](docs/Get-OBSRoundedStrokeShader.md) | +|[Get-OBSScanLineShader](docs/Get-OBSScanLineShader.md) | |[Get-OBSScene](docs/Get-OBSScene.md) | |[Get-OBSSceneCollection](docs/Get-OBSSceneCollection.md) | |[Get-OBSSceneItem](docs/Get-OBSSceneItem.md) | @@ -242,23 +506,49 @@ Aliases |[Get-OBSSceneItemId](docs/Get-OBSSceneItemId.md) | |[Get-OBSSceneItemIndex](docs/Get-OBSSceneItemIndex.md) | |[Get-OBSSceneItemLocked](docs/Get-OBSSceneItemLocked.md) | +|[Get-OBSSceneItemSource](docs/Get-OBSSceneItemSource.md) | |[Get-OBSSceneItemTransform](docs/Get-OBSSceneItemTransform.md) | |[Get-OBSSceneSceneTransitionOverride](docs/Get-OBSSceneSceneTransitionOverride.md) | |[Get-OBSSceneTransition](docs/Get-OBSSceneTransition.md) | +|[Get-OBSSeascapeShader](docs/Get-OBSSeascapeShader.md) | +|[Get-OBSSeasickShader](docs/Get-OBSSeasickShader.md) | +|[Get-OBSSelectiveColorShader](docs/Get-OBSSelectiveColorShader.md) | +|[Get-OBSShakeShader](docs/Get-OBSShakeShader.md) | +|[Get-OBSShineShader](docs/Get-OBSShineShader.md) | +|[Get-OBSSimpleGradientShader](docs/Get-OBSSimpleGradientShader.md) | +|[Get-OBSSimplexNoiseShader](docs/Get-OBSSimplexNoiseShader.md) | +|[Get-OBSSmartDenoiseShader](docs/Get-OBSSmartDenoiseShader.md) | |[Get-OBSSourceActive](docs/Get-OBSSourceActive.md) | |[Get-OBSSourceFilter](docs/Get-OBSSourceFilter.md) | |[Get-OBSSourceFilterDefaultSettings](docs/Get-OBSSourceFilterDefaultSettings.md) | +|[Get-OBSSourceFilterKind](docs/Get-OBSSourceFilterKind.md) | |[Get-OBSSourceFilterList](docs/Get-OBSSourceFilterList.md) | |[Get-OBSSourceScreenshot](docs/Get-OBSSourceScreenshot.md) | |[Get-OBSSpecialInputs](docs/Get-OBSSpecialInputs.md) | +|[Get-OBSSpecularShineShader](docs/Get-OBSSpecularShineShader.md) | +|[Get-OBSSpotlightShader](docs/Get-OBSSpotlightShader.md) | |[Get-OBSStats](docs/Get-OBSStats.md) | |[Get-OBSStreamServiceSettings](docs/Get-OBSStreamServiceSettings.md) | |[Get-OBSStreamStatus](docs/Get-OBSStreamStatus.md) | |[Get-OBSStudioModeEnabled](docs/Get-OBSStudioModeEnabled.md) | +|[Get-OBSSwirlShader](docs/Get-OBSSwirlShader.md) | +|[Get-OBSTetraShader](docs/Get-OBSTetraShader.md) | +|[Get-OBSThermalShader](docs/Get-OBSThermalShader.md) | |[Get-OBSTransitionKind](docs/Get-OBSTransitionKind.md) | +|[Get-OBSTvCrtSubpixelShader](docs/Get-OBSTvCrtSubpixelShader.md) | +|[Get-OBSTwistShader](docs/Get-OBSTwistShader.md) | +|[Get-OBSTwoPassDropShadowShader](docs/Get-OBSTwoPassDropShadowShader.md) | +|[Get-OBSVCRShader](docs/Get-OBSVCRShader.md) | |[Get-OBSVersion](docs/Get-OBSVersion.md) | +|[Get-OBSVHSShader](docs/Get-OBSVHSShader.md) | |[Get-OBSVideoSettings](docs/Get-OBSVideoSettings.md) | +|[Get-OBSVignettingShader](docs/Get-OBSVignettingShader.md) | |[Get-OBSVirtualCamStatus](docs/Get-OBSVirtualCamStatus.md) | +|[Get-OBSVoronoiPixelationShader](docs/Get-OBSVoronoiPixelationShader.md) | +|[Get-OBSZigZagShader](docs/Get-OBSZigZagShader.md) | +|[Get-OBSZoomBlurShader](docs/Get-OBSZoomBlurShader.md) | +|[Get-OBSZoomShader](docs/Get-OBSZoomShader.md) | +|[Get-OBSZoomXYShader](docs/Get-OBSZoomXYShader.md) | |[Hide-OBS](docs/Hide-OBS.md) | |[Import-OBSEffect](docs/Import-OBSEffect.md) | |[Open-OBSInputFiltersDialog](docs/Open-OBSInputFiltersDialog.md) | @@ -312,6 +602,7 @@ Aliases |[Set-OBSInputName](docs/Set-OBSInputName.md) | |[Set-OBSInputSettings](docs/Set-OBSInputSettings.md) | |[Set-OBSInputVolume](docs/Set-OBSInputVolume.md) | +|[Set-OBSMarkdownSource](docs/Set-OBSMarkdownSource.md) | |[Set-OBSMediaInputCursor](docs/Set-OBSMediaInputCursor.md) | |[Set-OBSMediaSource](docs/Set-OBSMediaSource.md) | |[Set-OBSOutputSettings](docs/Set-OBSOutputSettings.md) | @@ -330,15 +621,18 @@ Aliases |[Set-OBSScrollFilter](docs/Set-OBSScrollFilter.md) | |[Set-OBSShaderFilter](docs/Set-OBSShaderFilter.md) | |[Set-OBSSharpnessFilter](docs/Set-OBSSharpnessFilter.md) | +|[Set-OBSSoundCloudSource](docs/Set-OBSSoundCloudSource.md) | |[Set-OBSSourceFilterEnabled](docs/Set-OBSSourceFilterEnabled.md) | |[Set-OBSSourceFilterIndex](docs/Set-OBSSourceFilterIndex.md) | |[Set-OBSSourceFilterName](docs/Set-OBSSourceFilterName.md) | |[Set-OBSSourceFilterSettings](docs/Set-OBSSourceFilterSettings.md) | |[Set-OBSStreamServiceSettings](docs/Set-OBSStreamServiceSettings.md) | |[Set-OBSStudioModeEnabled](docs/Set-OBSStudioModeEnabled.md) | +|[Set-OBSSwitchSource](docs/Set-OBSSwitchSource.md) | |[Set-OBSTBarPosition](docs/Set-OBSTBarPosition.md) | |[Set-OBSVideoSettings](docs/Set-OBSVideoSettings.md) | |[Set-OBSVLCSource](docs/Set-OBSVLCSource.md) | +|[Set-OBSWaveformSource](docs/Set-OBSWaveformSource.md) | |[Set-OBSWindowSource](docs/Set-OBSWindowSource.md) | |[Show-OBS](docs/Show-OBS.md) | |[Start-OBSEffect](docs/Start-OBSEffect.md) | diff --git a/en-us/obs-powershell-websocket-commands.help.txt b/en-us/obs-powershell-websocket-commands.help.txt index afb332b87..bc1155edd 100644 --- a/en-us/obs-powershell-websocket-commands.help.txt +++ b/en-us/obs-powershell-websocket-commands.help.txt @@ -52,12 +52,14 @@ and are are generated by [PipeScript](https://github.com/StartAutomating/PipeScr |[Get-OBSSceneItemId](docs/Get-OBSSceneItemId.md) |[GetSceneItemId](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemid) | |[Get-OBSSceneItemIndex](docs/Get-OBSSceneItemIndex.md) |[GetSceneItemIndex](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemindex) | |[Get-OBSSceneItemLocked](docs/Get-OBSSceneItemLocked.md) |[GetSceneItemLocked](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlocked) | +|[Get-OBSSceneItemSource](docs/Get-OBSSceneItemSource.md) |[GetSceneItemSource](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource) | |[Get-OBSSceneItemTransform](docs/Get-OBSSceneItemTransform.md) |[GetSceneItemTransform](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemtransform) | |[Get-OBSSceneSceneTransitionOverride](docs/Get-OBSSceneSceneTransitionOverride.md) |[GetSceneSceneTransitionOverride](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenescenetransitionoverride) | |[Get-OBSSceneTransition](docs/Get-OBSSceneTransition.md) |[GetSceneTransitionList](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenetransitionlist) | |[Get-OBSSourceActive](docs/Get-OBSSourceActive.md) |[GetSourceActive](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourceactive) | |[Get-OBSSourceFilter](docs/Get-OBSSourceFilter.md) |[GetSourceFilter](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilter) | |[Get-OBSSourceFilterDefaultSettings](docs/Get-OBSSourceFilterDefaultSettings.md) |[GetSourceFilterDefaultSettings](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterdefaultsettings) | +|[Get-OBSSourceFilterKind](docs/Get-OBSSourceFilterKind.md) |[GetSourceFilterKindList](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist) | |[Get-OBSSourceFilterList](docs/Get-OBSSourceFilterList.md) |[GetSourceFilterList](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterlist) | |[Get-OBSSourceScreenshot](docs/Get-OBSSourceScreenshot.md) |[GetSourceScreenshot](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcescreenshot) | |[Get-OBSSpecialInputs](docs/Get-OBSSpecialInputs.md) |[GetSpecialInputs](https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getspecialinputs) | diff --git a/obs-powershell-Help.xml b/obs-powershell-Help.xml new file mode 100644 index 000000000..4cfe0a356 --- /dev/null +++ b/obs-powershell-Help.xml @@ -0,0 +1,90014 @@ + + + + + Add-OBSInput + OBSInput + Add + + Add-OBSInput : CreateInput + + 0.2 + + + Creates a new input, adding it as a scene item to the specified scene. + Add-OBSInput calls the OBS WebSocket with a request of type CreateInput. + + + + Add-OBSInput + + SceneName + + Name of the scene to add the input to as a scene item + + String + + String + + + + + + + SceneUuid + + UUID of the scene to add the input to as a scene item + + String + + String + + + + + + + InputName + + Name of the new input to created + + String + + String + + + + + + + InputKind + + The kind of input to be created + + String + + String + + + + + + + InputSettings + + Settings object to initialize the input with + + Psobject + + Psobject + + + + + + + SceneItemEnabled + + Whether to set the created scene item to enabled or disabled + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputKind + + The kind of input to be created + + String + + String + + + + + + + InputName + + Name of the new input to created + + String + + String + + + + + + + InputSettings + + Settings object to initialize the input with + + Psobject + + Psobject + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemEnabled + + Whether to set the created scene item to enabled or disabled + + Switch + + Switch + + + + + + + SceneName + + Name of the scene to add the input to as a scene item + + String + + String + + + + + + + SceneUuid + + UUID of the scene to add the input to as a scene item + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createinput + + + + + + Add-OBSProfile + OBSProfile + Add + + Add-OBSProfile : CreateProfile + + 0.2 + + + Creates a new profile, switching to it in the process + Add-OBSProfile calls the OBS WebSocket with a request of type CreateProfile. + + + + Add-OBSProfile + + ProfileName + + Name for the new profile + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + ProfileName + + Name for the new profile + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createprofile + + + + + + Add-OBSScene + OBSScene + Add + + Add-OBSScene : CreateScene + + 0.2 + + + Creates a new scene in OBS. + Add-OBSScene calls the OBS WebSocket with a request of type CreateScene. + + + + Add-OBSScene + + SceneName + + Name for the new scene + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Name for the new scene + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscene + + + + + + Add-OBSSceneCollection + OBSSceneCollection + Add + + Add-OBSSceneCollection : CreateSceneCollection + + 0.2 + + + Creates a new scene collection, switching to it in the process. + Note: This will block until the collection has finished changing. + Add-OBSSceneCollection calls the OBS WebSocket with a request of type CreateSceneCollection. + + + + Add-OBSSceneCollection + + SceneCollectionName + + Name for the new scene collection + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneCollectionName + + Name for the new scene collection + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createscenecollection + + + + + + Add-OBSSceneItem + OBSSceneItem + Add + + Add-OBSSceneItem : CreateSceneItem + + 0.2 + + + Creates a new scene item using a source. + Scenes only + Add-OBSSceneItem calls the OBS WebSocket with a request of type CreateSceneItem. + + + + Add-OBSSceneItem + + SceneName + + Name of the scene to create the new item in + + String + + String + + + + + + + SceneUuid + + UUID of the scene to create the new item in + + String + + String + + + + + + + SourceName + + Name of the source to add to the scene + + String + + String + + + + + + + SourceUuid + + UUID of the source to add to the scene + + String + + String + + + + + + + SceneItemEnabled + + Enable state to apply to the scene item on creation + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemEnabled + + Enable state to apply to the scene item on creation + + Switch + + Switch + + + + + + + SceneName + + Name of the scene to create the new item in + + String + + String + + + + + + + SceneUuid + + UUID of the scene to create the new item in + + String + + String + + + + + + + SourceName + + Name of the source to add to the scene + + String + + String + + + + + + + SourceUuid + + UUID of the source to add to the scene + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsceneitem + + + + + + Add-OBSSourceFilter + OBSSourceFilter + Add + + Add-OBSSourceFilter : CreateSourceFilter + + 0.2 + + + Creates a new filter, adding it to the specified source. + Add-OBSSourceFilter calls the OBS WebSocket with a request of type CreateSourceFilter. + + + + Add-OBSSourceFilter + + SourceName + + Name of the source to add the filter to + + String + + String + + + + + + + SourceUuid + + UUID of the source to add the filter to + + String + + String + + + + + + + FilterName + + Name of the new filter to be created + + String + + String + + + + + + + FilterKind + + The kind of filter to be created + + String + + String + + + + + + + FilterSettings + + Settings object to initialize the filter with + + Psobject + + Psobject + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + FilterKind + + The kind of filter to be created + + String + + String + + + + + + + FilterName + + Name of the new filter to be created + + String + + String + + + + + + + FilterSettings + + Settings object to initialize the filter with + + Psobject + + Psobject + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source to add the filter to + + String + + String + + + + + + + SourceUuid + + UUID of the source to add the filter to + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#createsourcefilter + + + + + + Clear-OBSScene + OBSScene + Clear + + Clears a Scene in OBS + + 0.2 + + + Clears a Scene in OBS. + All inputs will be removed from the scene. + This cannot be undone, so you will be prompted for confirmation. + + + + Clear-OBSScene + + SceneName + + Name of the scene. + + String + + String + + + + + + + + + + SceneName + + Name of the scene. + + String + + String + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Clear-OBSScene -SceneName Scene + + + + + + + + Connect-OBS + OBS + Connect + + Connects to Open Broadcast Studio + + 0.2 + + + Connects to the obs-websocket. + This must occur at least once to use obs-powershell. + + + + Connect-OBS + + + Connect-OBS + + WebSocketUri + + The OBS websocket URL. If not provided, this will default to loopback on port 4455. + + Uri + + Uri + + + + + + + WebSocketToken + + A randomly generated password used to connect to OBS. +You can see the websocket password in Tools -> obs-websocket settings -> show connect info + + String + + String + + + + + + + + + + WebSocketToken + + A randomly generated password used to connect to OBS. +You can see the websocket password in Tools -> obs-websocket settings -> show connect info + + String + + String + + + + + + + WebSocketUri + + The OBS websocket URL. If not provided, this will default to loopback on port 4455. + + Uri + + Uri + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Connect-OBS + + + + + + + Disconnect-OBS + + + + + + + + Copy-OBSSceneItem + OBSSceneItem + Copy + + Copy-OBSSceneItem : DuplicateSceneItem + + 0.2 + + + Duplicates a scene item, copying all transform and crop info. + Scenes only + Copy-OBSSceneItem calls the OBS WebSocket with a request of type DuplicateSceneItem. + + + + Copy-OBSSceneItem + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + DestinationSceneName + + Name of the scene to create the duplicated item in + + String + + String + + + + + + + DestinationSceneUuid + + UUID of the scene to create the duplicated item in + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + DestinationSceneName + + Name of the scene to create the duplicated item in + + String + + String + + + + + + + DestinationSceneUuid + + UUID of the scene to create the duplicated item in + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#duplicatesceneitem + + + + + + Disconnect-OBS + OBS + Disconnect + + Disconnects OBS + + 0.2 + + + Disconnects Websockets from OBS. + All websockets will be disconnected. + + + + Disconnect-OBS + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Disconnect-OBS + + + + + + + Connect-OBS + + + + + + + + Get-OBS + OBS + Get + + Gets OBS + + 0.2 + + + Outputs OBS connection information and state. + + + + Get-OBS + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBS + + + + + + + + Get-OBS3dSwapTransitionShader + OBS3dSwapTransitionShader + Get + + Get-OBS3dSwapTransitionShader [[-ImageA] <string>] [[-ImageB] <string>] [[-TransitionTime] <float>] [[-Reflection] <float>] [[-Perspective] <float>] [[-Depth] <float>] [[-BackgroundColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBS3dSwapTransitionShader + + ImageA + + + + + String + + String + + + + + + + ImageB + + + + + String + + String + + + + + + + TransitionTime + + + + + Float + + Float + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + Reflection + + + + + Float + + Float + + + + + + + Perspective + + + + + Float + + Float + + + + + + + Depth + + + + + Float + + Float + + + + + + + BackgroundColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BackgroundColor + + + + + String + + String + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + Depth + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + ImageA + + + + + String + + String + + + + + + + ImageB + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Perspective + + + + + Float + + Float + + + + + + + Reflection + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TransitionTime + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSAddShader + OBSAddShader + Get + + Get-OBSAddShader [[-OtherImage] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSAddShader + + OtherImage + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + OtherImage + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSAlphaBorderShader + OBSAlphaBorderShader + Get + + Get-OBSAlphaBorderShader [[-BorderColor] <string>] [[-BorderThickness] <int>] [[-AlphaCutOff] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSAlphaBorderShader + + BorderColor + + + + + String + + String + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSAlphaGamingBentCameraShader + OBSAlphaGamingBentCameraShader + Get + + Get-OBSAlphaGamingBentCameraShader [[-LeftSideWidth] <float>] [[-LeftSideSize] <float>] [[-LeftSideShadow] <float>] [[-LeftFlipWidth] <float>] [[-LeftFlipShadow] <float>] [[-RightSideWidth] <float>] [[-RightSideSize] <float>] [[-RightSideShadow] <float>] [[-RightFlipWidth] <float>] [[-RightFlipShadow] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSAlphaGamingBentCameraShader + + LeftSideWidth + + + + + Float + + Float + + + + + + + LeftSideSize + + + + + Float + + Float + + + + + + + LeftSideShadow + + + + + Float + + Float + + + + + + + LeftFlipWidth + + + + + Float + + Float + + + + + + + LeftFlipShadow + + + + + Float + + Float + + + + + + + RightSideWidth + + + + + Float + + Float + + + + + + + RightSideSize + + + + + Float + + Float + + + + + + + RightSideShadow + + + + + Float + + Float + + + + + + + RightFlipWidth + + + + + Float + + Float + + + + + + + RightFlipShadow + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + LeftFlipShadow + + + + + Float + + Float + + + + + + + LeftFlipWidth + + + + + Float + + Float + + + + + + + LeftSideShadow + + + + + Float + + Float + + + + + + + LeftSideSize + + + + + Float + + Float + + + + + + + LeftSideWidth + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RightFlipShadow + + + + + Float + + Float + + + + + + + RightFlipWidth + + + + + Float + + Float + + + + + + + RightSideShadow + + + + + Float + + Float + + + + + + + RightSideSize + + + + + Float + + Float + + + + + + + RightSideWidth + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSAnimatedPathShader + OBSAnimatedPathShader + Get + + Get-OBSAnimatedPathShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-SpeedPercent] <int>] [[-PathMap] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Reverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSAnimatedPathShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + PathMap + + + + + String + + String + + + + + + + Reverse + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PathMap + + + + + String + + String + + + + + + + RandF + + + + + Float + + Float + + + + + + + Reverse + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSAnimatedTextureShader + OBSAnimatedTextureShader + Get + + Get-OBSAnimatedTextureShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-Notes] <string>] [[-AnimationImage] <string>] [[-ColorizationImage] <string>] [[-PolarAngle] <float>] [[-PolarHeight] <float>] [[-SpeedHorizontalPercent] <float>] [[-SpeedVerticalPercent] <float>] [[-TintSpeedHorizontalPercent] <float>] [[-TintSpeedVerticalPercent] <float>] [[-Alpha] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Reverse] [-Bounce] [-CenterAnimation] [-PolarAnimation] [-UseAnimationImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSAnimatedTextureShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + Notes + + + + + String + + String + + + + + + + AnimationImage + + + + + String + + String + + + + + + + ColorizationImage + + + + + String + + String + + + + + + + Reverse + + + + + Switch + + Switch + + + + + + + Bounce + + + + + Switch + + Switch + + + + + + + CenterAnimation + + + + + Switch + + Switch + + + + + + + PolarAnimation + + + + + Switch + + Switch + + + + + + + PolarAngle + + + + + Float + + Float + + + + + + + PolarHeight + + + + + Float + + Float + + + + + + + SpeedHorizontalPercent + + + + + Float + + Float + + + + + + + SpeedVerticalPercent + + + + + Float + + Float + + + + + + + TintSpeedHorizontalPercent + + + + + Float + + Float + + + + + + + TintSpeedVerticalPercent + + + + + Float + + Float + + + + + + + Alpha + + + + + Float + + Float + + + + + + + UseAnimationImageColor + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Alpha + + + + + Float + + Float + + + + + + + AnimationImage + + + + + String + + String + + + + + + + Bounce + + + + + Switch + + Switch + + + + + + + CenterAnimation + + + + + Switch + + Switch + + + + + + + ColorizationImage + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PolarAngle + + + + + Float + + Float + + + + + + + PolarAnimation + + + + + Switch + + Switch + + + + + + + PolarHeight + + + + + Float + + Float + + + + + + + RandF + + + + + Float + + Float + + + + + + + Reverse + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedHorizontalPercent + + + + + Float + + Float + + + + + + + SpeedVerticalPercent + + + + + Float + + Float + + + + + + + TintSpeedHorizontalPercent + + + + + Float + + Float + + + + + + + TintSpeedVerticalPercent + + + + + Float + + Float + + + + + + + UseAnimationImageColor + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSAsciiShader + OBSAsciiShader + Get + + Get-OBSAsciiShader [[-Scale] <int>] [[-BaseColor] <string>] [[-CharacterSet] <int>] [[-Note] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Monochrome] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSAsciiShader + + Scale + + + + + Int + + Int + + + + + + + BaseColor + + + + + String + + String + + + + + + + Monochrome + + + + + Switch + + Switch + + + + + + + CharacterSet + + + + + Int + + Int + + + + + + + Note + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BaseColor + + + + + String + + String + + + + + + + CharacterSet + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Monochrome + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Note + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Scale + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSAspectRatioShader + OBSAspectRatioShader + Get + + Get-OBSAspectRatioShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-BorderColor] <string>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSAspectRatioShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + BorderColor + + + + + String + + String + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BorderColor + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSBackgroundRemovalShader + OBSBackgroundRemovalShader + Get + + Get-OBSBackgroundRemovalShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-Notes] <string>] [[-Target] <string>] [[-Color] <string>] [[-Opacity] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Invert] [-Convert709to601] [-Convert601to709] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSBackgroundRemovalShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + Notes + + + + + String + + String + + + + + + + Target + + + + + String + + String + + + + + + + Color + + + + + String + + String + + + + + + + Opacity + + + + + Float + + Float + + + + + + + Invert + + + + + Switch + + Switch + + + + + + + Convert709to601 + + + + + Switch + + Switch + + + + + + + Convert601to709 + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Color + + + + + String + + String + + + + + + + Convert601to709 + + + + + Switch + + Switch + + + + + + + Convert709to601 + + + + + Switch + + Switch + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + Invert + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + Opacity + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Target + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSBlendOpacityShader + OBSBlendOpacityShader + Get + + Get-OBSBlendOpacityShader [[-RotationOffset] <float>] [[-OpacityStartPercent] <float>] [[-OpacityEndPercent] <float>] [[-Spread] <float>] [[-Speed] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Vertical] [-Rotational] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSBlendOpacityShader + + Vertical + + + + + Switch + + Switch + + + + + + + Rotational + + + + + Switch + + Switch + + + + + + + RotationOffset + + + + + Float + + Float + + + + + + + OpacityStartPercent + + + + + Float + + Float + + + + + + + OpacityEndPercent + + + + + Float + + Float + + + + + + + Spread + + + + + Float + + Float + + + + + + + Speed + + + + + Float + + Float + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + OpacityEndPercent + + + + + Float + + Float + + + + + + + OpacityStartPercent + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Rotational + + + + + Switch + + Switch + + + + + + + RotationOffset + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + Spread + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + Vertical + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSBlinkShader + OBSBlinkShader + Get + + Get-OBSBlinkShader [[-Speed] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSBlinkShader + + Speed + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSBloomShader + OBSBloomShader + Get + + Get-OBSBloomShader [[-AngleSteps] <int>] [[-RadiusSteps] <int>] [[-AmpFactor] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSBloomShader + + AngleSteps + + + + + Int + + Int + + + + + + + RadiusSteps + + + + + Int + + Int + + + + + + + AmpFactor + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AmpFactor + + + + + Float + + Float + + + + + + + AngleSteps + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RadiusSteps + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSBorderShader + OBSBorderShader + Get + + Get-OBSBorderShader [[-BorderColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSBorderShader + + BorderColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BorderColor + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSBoxBlurShader + OBSBoxBlurShader + Get + + Get-OBSBoxBlurShader [[-Strength] <int>] [[-MaskLeft] <float>] [[-MaskRight] <float>] [[-MaskTop] <float>] [[-MaskBottom] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSBoxBlurShader + + Strength + + + + + Int + + Int + + + + + + + MaskLeft + + + + + Float + + Float + + + + + + + MaskRight + + + + + Float + + Float + + + + + + + MaskTop + + + + + Float + + Float + + + + + + + MaskBottom + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + MaskBottom + + + + + Float + + Float + + + + + + + MaskLeft + + + + + Float + + Float + + + + + + + MaskRight + + + + + Float + + Float + + + + + + + MaskTop + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Strength + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSBulgePinchShader + OBSBulgePinchShader + Get + + Get-OBSBulgePinchShader [[-Radius] <float>] [[-Magnitude] <float>] [[-CenterX] <float>] [[-CenterY] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Animate] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSBulgePinchShader + + Radius + + + + + Float + + Float + + + + + + + Magnitude + + + + + Float + + Float + + + + + + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + Animate + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Animate + + + + + Switch + + Switch + + + + + + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Magnitude + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Radius + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSBurnShader + OBSBurnShader + Get + + Get-OBSBurnShader [[-BurnGradient] <string>] [[-Speed] <float>] [[-GradientAdjust] <float>] [[-DissolveValue] <float>] [[-SmokeHorizonalSpeed] <float>] [[-SmokeVerticalSpeed] <float>] [[-Iterations] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Animated] [-ApplyToChannel] [-ApplySmoke] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSBurnShader + + BurnGradient + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + GradientAdjust + + + + + Float + + Float + + + + + + + DissolveValue + + + + + Float + + Float + + + + + + + Animated + + + + + Switch + + Switch + + + + + + + ApplyToChannel + + + + + Switch + + Switch + + + + + + + ApplySmoke + + + + + Switch + + Switch + + + + + + + SmokeHorizonalSpeed + + + + + Float + + Float + + + + + + + SmokeVerticalSpeed + + + + + Float + + Float + + + + + + + Iterations + + + + + Int + + Int + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Animated + + + + + Switch + + Switch + + + + + + + ApplySmoke + + + + + Switch + + Switch + + + + + + + ApplyToChannel + + + + + Switch + + Switch + + + + + + + BurnGradient + + + + + String + + String + + + + + + + DissolveValue + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GradientAdjust + + + + + Float + + Float + + + + + + + Iterations + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SmokeHorizonalSpeed + + + + + Float + + Float + + + + + + + SmokeVerticalSpeed + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSCartoonShader + OBSCartoonShader + Get + + Get-OBSCartoonShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-Notes] <string>] [[-HueSteps] <int>] [[-ValueSteps] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSCartoonShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + Notes + + + + + String + + String + + + + + + + HueSteps + + + + + Int + + Int + + + + + + + ValueSteps + + + + + Int + + Int + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + HueSteps + + + + + Int + + Int + + + + + + + Image + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ValueSteps + + + + + Int + + Int + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSCellShadedShader + OBSCellShadedShader + Get + + Get-OBSCellShadedShader [[-AngleSteps] <int>] [[-RadiusSteps] <int>] [[-AmpFactor] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSCellShadedShader + + AngleSteps + + + + + Int + + Int + + + + + + + RadiusSteps + + + + + Int + + Int + + + + + + + AmpFactor + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AmpFactor + + + + + Float + + Float + + + + + + + AngleSteps + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RadiusSteps + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSChromaticAberrationShader + OBSChromaticAberrationShader + Get + + Get-OBSChromaticAberrationShader [[-Power] <float>] [[-Gamma] <float>] [[-NumIter] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-DistortRadial] [-DistortBarrel] [-OffsetSpectrumYcgco] [-OffsetSpectrumYuv] [-UseRandom] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSChromaticAberrationShader + + Power + + + + + Float + + Float + + + + + + + Gamma + + + + + Float + + Float + + + + + + + NumIter + + + + + Int + + Int + + + + + + + DistortRadial + + + + + Switch + + Switch + + + + + + + DistortBarrel + + + + + Switch + + Switch + + + + + + + OffsetSpectrumYcgco + + + + + Switch + + Switch + + + + + + + OffsetSpectrumYuv + + + + + Switch + + Switch + + + + + + + UseRandom + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + DistortBarrel + + + + + Switch + + Switch + + + + + + + DistortRadial + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Gamma + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + NumIter + + + + + Int + + Int + + + + + + + OffsetSpectrumYcgco + + + + + Switch + + Switch + + + + + + + OffsetSpectrumYuv + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Power + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseRandom + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSChromaUVDistortionShader + OBSChromaUVDistortionShader + Get + + Get-OBSChromaUVDistortionShader [[-Distortion] <float>] [[-Amplitude] <float>] [[-Chroma] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSChromaUVDistortionShader + + Distortion + + + + + Float + + Float + + + + + + + Amplitude + + + + + Float + + Float + + + + + + + Chroma + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Amplitude + + + + + Float + + Float + + + + + + + Chroma + + + + + Float + + Float + + + + + + + Distortion + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSCircleMaskFilterShader + OBSCircleMaskFilterShader + Get + + Get-OBSCircleMaskFilterShader [[-Radius] <float>] [[-CircleOffsetX] <int>] [[-CircleOffsetY] <int>] [[-SourceOffsetX] <int>] [[-SourceOffsetY] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Antialiasing] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSCircleMaskFilterShader + + Radius + + + + + Float + + Float + + + + + + + CircleOffsetX + + + + + Int + + Int + + + + + + + CircleOffsetY + + + + + Int + + Int + + + + + + + SourceOffsetX + + + + + Int + + Int + + + + + + + SourceOffsetY + + + + + Int + + Int + + + + + + + Antialiasing + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Antialiasing + + + + + Switch + + Switch + + + + + + + CircleOffsetX + + + + + Int + + Int + + + + + + + CircleOffsetY + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Radius + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SourceOffsetX + + + + + Int + + Int + + + + + + + SourceOffsetY + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSClockAnalogShader + OBSClockAnalogShader + Get + + Get-OBSClockAnalogShader [[-CurrentTimeMs] <int>] [[-CurrentTimeSec] <int>] [[-CurrentTimeMin] <int>] [[-CurrentTimeHour] <int>] [[-HourHandleColor] <float[]>] [[-MinuteHandleColor] <float[]>] [[-SecondHandleColor] <float[]>] [[-OutlineColor] <float[]>] [[-TopLineColor] <float[]>] [[-BackgroundColor] <float[]>] [[-TimeOffsetHours] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSClockAnalogShader + + CurrentTimeMs + + + + + Int + + Int + + + + + + + CurrentTimeSec + + + + + Int + + Int + + + + + + + CurrentTimeMin + + + + + Int + + Int + + + + + + + CurrentTimeHour + + + + + Int + + Int + + + + + + + HourHandleColor + + + + + System.Single[] + + System.Single[] + + + + + + + MinuteHandleColor + + + + + System.Single[] + + System.Single[] + + + + + + + SecondHandleColor + + + + + System.Single[] + + System.Single[] + + + + + + + OutlineColor + + + + + System.Single[] + + System.Single[] + + + + + + + TopLineColor + + + + + System.Single[] + + System.Single[] + + + + + + + BackgroundColor + + + + + System.Single[] + + System.Single[] + + + + + + + TimeOffsetHours + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BackgroundColor + + + + + System.Single[] + + System.Single[] + + + + + + + CurrentTimeHour + + + + + Int + + Int + + + + + + + CurrentTimeMin + + + + + Int + + Int + + + + + + + CurrentTimeMs + + + + + Int + + Int + + + + + + + CurrentTimeSec + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + HourHandleColor + + + + + System.Single[] + + System.Single[] + + + + + + + MinuteHandleColor + + + + + System.Single[] + + System.Single[] + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + OutlineColor + + + + + System.Single[] + + System.Single[] + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + SecondHandleColor + + + + + System.Single[] + + System.Single[] + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TimeOffsetHours + + + + + Int + + Int + + + + + + + TopLineColor + + + + + System.Single[] + + System.Single[] + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSClockDigitalLedShader + OBSClockDigitalLedShader + Get + + Get-OBSClockDigitalLedShader [[-CurrentTimeSec] <int>] [[-CurrentTimeMin] <int>] [[-CurrentTimeHour] <int>] [[-TimeMode] <int>] [[-LedColor] <string>] [[-OffsetHours] <int>] [[-OffsetSeconds] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ShowMatrix] [-ShowOff] [-Ampm] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSClockDigitalLedShader + + CurrentTimeSec + + + + + Int + + Int + + + + + + + CurrentTimeMin + + + + + Int + + Int + + + + + + + CurrentTimeHour + + + + + Int + + Int + + + + + + + TimeMode + + + + + Int + + Int + + + + + + + ShowMatrix + + + + + Switch + + Switch + + + + + + + ShowOff + + + + + Switch + + Switch + + + + + + + Ampm + + + + + Switch + + Switch + + + + + + + LedColor + + + + + String + + String + + + + + + + OffsetHours + + + + + Int + + Int + + + + + + + OffsetSeconds + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Ampm + + + + + Switch + + Switch + + + + + + + CurrentTimeHour + + + + + Int + + Int + + + + + + + CurrentTimeMin + + + + + Int + + Int + + + + + + + CurrentTimeSec + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + LedColor + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + OffsetHours + + + + + Int + + Int + + + + + + + OffsetSeconds + + + + + Int + + Int + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + ShowMatrix + + + + + Switch + + Switch + + + + + + + ShowOff + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + TimeMode + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSClockDigitalNixieShader + OBSClockDigitalNixieShader + Get + + Get-OBSClockDigitalNixieShader [[-CurrentTimeMs] <int>] [[-CurrentTimeSec] <int>] [[-CurrentTimeMin] <int>] [[-CurrentTimeHour] <int>] [[-TimeMode] <int>] [[-OffsetHours] <int>] [[-OffsetSeconds] <int>] [[-Corecolor] <float[]>] [[-Halocolor] <float[]>] [[-Flarecolor] <float[]>] [[-Anodecolor] <float[]>] [[-Anodehighlightscolor] <float[]>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSClockDigitalNixieShader + + CurrentTimeMs + + + + + Int + + Int + + + + + + + CurrentTimeSec + + + + + Int + + Int + + + + + + + CurrentTimeMin + + + + + Int + + Int + + + + + + + CurrentTimeHour + + + + + Int + + Int + + + + + + + TimeMode + + + + + Int + + Int + + + + + + + OffsetHours + + + + + Int + + Int + + + + + + + OffsetSeconds + + + + + Int + + Int + + + + + + + Corecolor + + + + + System.Single[] + + System.Single[] + + + + + + + Halocolor + + + + + System.Single[] + + System.Single[] + + + + + + + Flarecolor + + + + + System.Single[] + + System.Single[] + + + + + + + Anodecolor + + + + + System.Single[] + + System.Single[] + + + + + + + Anodehighlightscolor + + + + + System.Single[] + + System.Single[] + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Anodecolor + + + + + System.Single[] + + System.Single[] + + + + + + + Anodehighlightscolor + + + + + System.Single[] + + System.Single[] + + + + + + + Corecolor + + + + + System.Single[] + + System.Single[] + + + + + + + CurrentTimeHour + + + + + Int + + Int + + + + + + + CurrentTimeMin + + + + + Int + + Int + + + + + + + CurrentTimeMs + + + + + Int + + Int + + + + + + + CurrentTimeSec + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Flarecolor + + + + + System.Single[] + + System.Single[] + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Halocolor + + + + + System.Single[] + + System.Single[] + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + OffsetHours + + + + + Int + + Int + + + + + + + OffsetSeconds + + + + + Int + + Int + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TimeMode + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSColorDepthShader + OBSColorDepthShader + Get + + Get-OBSColorDepthShader [[-ColorDepth] <float>] [[-PixelSize] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSColorDepthShader + + ColorDepth + + + + + Float + + Float + + + + + + + PixelSize + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ColorDepth + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PixelSize + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSColorGradeFilterShader + OBSColorGradeFilterShader + Get + + Get-OBSColorGradeFilterShader [[-Notes] <string>] [[-Lut] <string>] [[-LutAmountPercent] <int>] [[-LutScalePercent] <int>] [[-LutOffsetPercent] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSColorGradeFilterShader + + Notes + + + + + String + + String + + + + + + + Lut + + + + + String + + String + + + + + + + LutAmountPercent + + + + + Int + + Int + + + + + + + LutScalePercent + + + + + Int + + Int + + + + + + + LutOffsetPercent + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Lut + + + + + String + + String + + + + + + + LutAmountPercent + + + + + Int + + Int + + + + + + + LutOffsetPercent + + + + + Int + + Int + + + + + + + LutScalePercent + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSCornerPinShader + OBSCornerPinShader + Get + + Get-OBSCornerPinShader [[-TopLeftX] <float>] [[-TopLeftY] <float>] [[-TopRightX] <float>] [[-TopRightY] <float>] [[-BottomLeftX] <float>] [[-BottomLeftY] <float>] [[-BottomRightX] <float>] [[-BottomRightY] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-AntialiasEdges] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSCornerPinShader + + AntialiasEdges + + + + + Switch + + Switch + + + + + + + TopLeftX + + + + + Float + + Float + + + + + + + TopLeftY + + + + + Float + + Float + + + + + + + TopRightX + + + + + Float + + Float + + + + + + + TopRightY + + + + + Float + + Float + + + + + + + BottomLeftX + + + + + Float + + Float + + + + + + + BottomLeftY + + + + + Float + + Float + + + + + + + BottomRightX + + + + + Float + + Float + + + + + + + BottomRightY + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AntialiasEdges + + + + + Switch + + Switch + + + + + + + BottomLeftX + + + + + Float + + Float + + + + + + + BottomLeftY + + + + + Float + + Float + + + + + + + BottomRightX + + + + + Float + + Float + + + + + + + BottomRightY + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TopLeftX + + + + + Float + + Float + + + + + + + TopLeftY + + + + + Float + + Float + + + + + + + TopRightX + + + + + Float + + Float + + + + + + + TopRightY + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSCrtCurvatureShader + OBSCrtCurvatureShader + Get + + Get-OBSCrtCurvatureShader [[-Strength] <float>] [[-Border] <string>] [[-Feathering] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSCrtCurvatureShader + + Strength + + + + + Float + + Float + + + + + + + Border + + + + + String + + String + + + + + + + Feathering + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Border + + + + + String + + String + + + + + + + Feathering + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Strength + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSCurrentPreviewScene + OBSCurrentPreviewScene + Get + + Get-OBSCurrentPreviewScene : GetCurrentPreviewScene + + 0.2 + + + Gets the current preview scene. + Only available when studio mode is enabled. + Note: This request is slated to have the `currentPreview`-prefixed fields removed from in an upcoming RPC version. + Get-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type GetCurrentPreviewScene. + + + + Get-OBSCurrentPreviewScene + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSCurrentPreviewScene + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentpreviewscene + + + + + + Get-OBSCurrentProgramScene + OBSCurrentProgramScene + Get + + Get-OBSCurrentProgramScene : GetCurrentProgramScene + + 0.2 + + + Gets the current program scene. + Note: This request is slated to have the `currentProgram`-prefixed fields removed from in an upcoming RPC version. + Get-OBSCurrentProgramScene calls the OBS WebSocket with a request of type GetCurrentProgramScene. + + + + Get-OBSCurrentProgramScene + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSCurrentProgramScene + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentprogramscene + + + + + + Get-OBSCurrentSceneTransition + OBSCurrentSceneTransition + Get + + Get-OBSCurrentSceneTransition : GetCurrentSceneTransition + + 0.2 + + + Gets information about the current scene transition. + Get-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type GetCurrentSceneTransition. + + + + Get-OBSCurrentSceneTransition + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSCurrentSceneTransition + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransition + + + + + + Get-OBSCurrentSceneTransitionCursor + OBSCurrentSceneTransitionCursor + Get + + Get-OBSCurrentSceneTransitionCursor : GetCurrentSceneTransitionCursor + + 0.2 + + + Gets the cursor position of the current scene transition. + Note: `transitionCursor` will return 1.0 when the transition is inactive. + Get-OBSCurrentSceneTransitionCursor calls the OBS WebSocket with a request of type GetCurrentSceneTransitionCursor. + + + + Get-OBSCurrentSceneTransitionCursor + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSCurrentSceneTransitionCursor + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getcurrentscenetransitioncursor + + + + + + Get-OBSCurveShader + OBSCurveShader + Get + + Get-OBSCurveShader [[-Strength] <float>] [[-Scale] <float>] [[-CurveColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSCurveShader + + Strength + + + + + Float + + Float + + + + + + + Scale + + + + + Float + + Float + + + + + + + CurveColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CurveColor + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Scale + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Strength + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSCutRectPerCornerShader + OBSCutRectPerCornerShader + Get + + Get-OBSCutRectPerCornerShader [[-CornerTl] <int>] [[-CornerTr] <int>] [[-CornerBr] <int>] [[-CornerBl] <int>] [[-BorderThickness] <int>] [[-BorderColor] <string>] [[-BorderAlphaStart] <float>] [[-BorderAlphaEnd] <float>] [[-AlphaCutOff] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSCutRectPerCornerShader + + CornerTl + + + + + Int + + Int + + + + + + + CornerTr + + + + + Int + + Int + + + + + + + CornerBr + + + + + Int + + Int + + + + + + + CornerBl + + + + + Int + + Int + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderAlphaStart + + + + + Float + + Float + + + + + + + BorderAlphaEnd + + + + + Float + + Float + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + BorderAlphaEnd + + + + + Float + + Float + + + + + + + BorderAlphaStart + + + + + Float + + Float + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + CornerBl + + + + + Int + + Int + + + + + + + CornerBr + + + + + Int + + Int + + + + + + + CornerTl + + + + + Int + + Int + + + + + + + CornerTr + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSCylinderShader + OBSCylinderShader + Get + + Get-OBSCylinderShader [[-CylinderFactor] <float>] [[-BackgroundCut] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSCylinderShader + + CylinderFactor + + + + + Float + + Float + + + + + + + BackgroundCut + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BackgroundCut + + + + + Float + + Float + + + + + + + CylinderFactor + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDarkenShader + OBSDarkenShader + Get + + Get-OBSDarkenShader [[-OpacityPercentage] <float>] [[-FillPercentage] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDarkenShader + + OpacityPercentage + + + + + Float + + Float + + + + + + + FillPercentage + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FillPercentage + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + OpacityPercentage + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDeadPixelFixerShader + OBSDeadPixelFixerShader + Get + + Get-OBSDeadPixelFixerShader [[-DeadPixelX] <int>] [[-DeadPixelY] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDeadPixelFixerShader + + DeadPixelX + + + + + Int + + Int + + + + + + + DeadPixelY + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + DeadPixelX + + + + + Int + + Int + + + + + + + DeadPixelY + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDensitySatHueShader + OBSDensitySatHueShader + Get + + Get-OBSDensitySatHueShader [[-Notes] <string>] [[-DensityR] <float>] [[-SaturationR] <float>] [[-HueShiftR] <float>] [[-DensityY] <float>] [[-SaturationY] <float>] [[-HueShiftY] <float>] [[-DensityG] <float>] [[-SaturationG] <float>] [[-HueShiftG] <float>] [[-DensityC] <float>] [[-SaturationC] <float>] [[-HueShiftC] <float>] [[-DensityB] <float>] [[-SaturationB] <float>] [[-HueShiftB] <float>] [[-DensityM] <float>] [[-SaturationM] <float>] [[-HueShiftM] <float>] [[-GlobalDensity] <float>] [[-GlobalSaturation] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDensitySatHueShader + + Notes + + + + + String + + String + + + + + + + DensityR + + + + + Float + + Float + + + + + + + SaturationR + + + + + Float + + Float + + + + + + + HueShiftR + + + + + Float + + Float + + + + + + + DensityY + + + + + Float + + Float + + + + + + + SaturationY + + + + + Float + + Float + + + + + + + HueShiftY + + + + + Float + + Float + + + + + + + DensityG + + + + + Float + + Float + + + + + + + SaturationG + + + + + Float + + Float + + + + + + + HueShiftG + + + + + Float + + Float + + + + + + + DensityC + + + + + Float + + Float + + + + + + + SaturationC + + + + + Float + + Float + + + + + + + HueShiftC + + + + + Float + + Float + + + + + + + DensityB + + + + + Float + + Float + + + + + + + SaturationB + + + + + Float + + Float + + + + + + + HueShiftB + + + + + Float + + Float + + + + + + + DensityM + + + + + Float + + Float + + + + + + + SaturationM + + + + + Float + + Float + + + + + + + HueShiftM + + + + + Float + + Float + + + + + + + GlobalDensity + + + + + Float + + Float + + + + + + + GlobalSaturation + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + DensityB + + + + + Float + + Float + + + + + + + DensityC + + + + + Float + + Float + + + + + + + DensityG + + + + + Float + + Float + + + + + + + DensityM + + + + + Float + + Float + + + + + + + DensityR + + + + + Float + + Float + + + + + + + DensityY + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GlobalDensity + + + + + Float + + Float + + + + + + + GlobalSaturation + + + + + Float + + Float + + + + + + + HueShiftB + + + + + Float + + Float + + + + + + + HueShiftC + + + + + Float + + Float + + + + + + + HueShiftG + + + + + Float + + Float + + + + + + + HueShiftM + + + + + Float + + Float + + + + + + + HueShiftR + + + + + Float + + Float + + + + + + + HueShiftY + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + SaturationB + + + + + Float + + Float + + + + + + + SaturationC + + + + + Float + + Float + + + + + + + SaturationG + + + + + Float + + Float + + + + + + + SaturationM + + + + + Float + + Float + + + + + + + SaturationR + + + + + Float + + Float + + + + + + + SaturationY + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDiffuseTransitionShader + OBSDiffuseTransitionShader + Get + + Get-OBSDiffuseTransitionShader [[-ImageA] <string>] [[-ImageB] <string>] [[-TransitionTime] <float>] [[-NumSamples] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDiffuseTransitionShader + + ImageA + + + + + String + + String + + + + + + + ImageB + + + + + String + + String + + + + + + + TransitionTime + + + + + Float + + Float + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + NumSamples + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + ImageA + + + + + String + + String + + + + + + + ImageB + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + NumSamples + + + + + Int + + Int + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TransitionTime + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDigitalRainShader + OBSDigitalRainShader + Get + + Get-OBSDigitalRainShader [[-Font] <string>] [[-Noise] <string>] [[-BaseColor] <string>] [[-RainSpeed] <float>] [[-CharSpeed] <float>] [[-GlowContrast] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDigitalRainShader + + Font + + + + + String + + String + + + + + + + Noise + + + + + String + + String + + + + + + + BaseColor + + + + + String + + String + + + + + + + RainSpeed + + + + + Float + + Float + + + + + + + CharSpeed + + + + + Float + + Float + + + + + + + GlowContrast + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BaseColor + + + + + String + + String + + + + + + + CharSpeed + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Font + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GlowContrast + + + + + Float + + Float + + + + + + + Noise + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RainSpeed + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDivideRotateShader + OBSDivideRotateShader + Get + + Get-OBSDivideRotateShader [[-IChannel0] <string>] [[-SpeedPercentage] <int>] [[-AlphaPercentage] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDivideRotateShader + + IChannel0 + + + + + String + + String + + + + + + + SpeedPercentage + + + + + Int + + Int + + + + + + + AlphaPercentage + + + + + Int + + Int + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Int + + Int + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + IChannel0 + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedPercentage + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDoodleShader + OBSDoodleShader + Get + + Get-OBSDoodleShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-DoodleScalePercent] <float>] [[-SnapPercent] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDoodleShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + DoodleScalePercent + + + + + Float + + Float + + + + + + + SnapPercent + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + DoodleScalePercent + + + + + Float + + Float + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SnapPercent + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDrawingsShader + OBSDrawingsShader + Get + + Get-OBSDrawingsShader [[-AngleNum] <int>] [[-SampNum] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDrawingsShader + + AngleNum + + + + + Int + + Int + + + + + + + SampNum + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AngleNum + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + SampNum + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDropShadowShader + OBSDropShadowShader + Get + + Get-OBSDropShadowShader [[-ShadowOffsetX] <int>] [[-ShadowOffsetY] <int>] [[-ShadowBlurSize] <int>] [[-Notes] <string>] [[-ShadowColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDropShadowShader + + ShadowOffsetX + + + + + Int + + Int + + + + + + + ShadowOffsetY + + + + + Int + + Int + + + + + + + ShadowBlurSize + + + + + Int + + Int + + + + + + + Notes + + + + + String + + String + + + + + + + ShadowColor + + + + + String + + String + + + + + + + IsAlphaPremultiplied + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + IsAlphaPremultiplied + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + ShadowBlurSize + + + + + Int + + Int + + + + + + + ShadowColor + + + + + String + + String + + + + + + + ShadowOffsetX + + + + + Int + + Int + + + + + + + ShadowOffsetY + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDrunkShader + OBSDrunkShader + Get + + Get-OBSDrunkShader [[-ColorMatrix] <float[][]>] [[-GlowPercent] <int>] [[-Blur] <int>] [[-MinBrightness] <int>] [[-MaxBrightness] <int>] [[-PulseSpeedPercent] <int>] [[-GlowColor] <string>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ApplyToAlphaLayer] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDrunkShader + + ColorMatrix + + + + + System.Single[][] + + System.Single[][] + + + + + + + GlowPercent + + + + + Int + + Int + + + + + + + Blur + + + + + Int + + Int + + + + + + + MinBrightness + + + + + Int + + Int + + + + + + + MaxBrightness + + + + + Int + + Int + + + + + + + PulseSpeedPercent + + + + + Int + + Int + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + GlowColor + + + + + String + + String + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + Blur + + + + + Int + + Int + + + + + + + ColorMatrix + + + + + System.Single[][] + + System.Single[][] + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + GlowColor + + + + + String + + String + + + + + + + GlowPercent + + + + + Int + + Int + + + + + + + MaxBrightness + + + + + Int + + Int + + + + + + + MinBrightness + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PulseSpeedPercent + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSDynamicMaskShader + OBSDynamicMaskShader + Get + + Get-OBSDynamicMaskShader [[-InputSource] <string>] [[-RedBaseValue] <float>] [[-RedRedInputValue] <float>] [[-RedGreenInputValue] <float>] [[-RedBlueInputValue] <float>] [[-RedAlphaInputValue] <float>] [[-RedMultiplier] <float>] [[-GreenBaseValue] <float>] [[-GreenRedInputValue] <float>] [[-GreenGreenInputValue] <float>] [[-GreenBlueInputValue] <float>] [[-GreenAlphaInputValue] <float>] [[-GreenMultiplier] <float>] [[-BlueBaseValue] <float>] [[-BlueRedInputValue] <float>] [[-BlueGreenInputValue] <float>] [[-BlueBlueInputValue] <float>] [[-BlueAlphaInputValue] <float>] [[-BlueMultiplier] <float>] [[-AlphaBaseValue] <float>] [[-AlphaRedInputValue] <float>] [[-AlphaGreenInputValue] <float>] [[-AlphaBlueInputValue] <float>] [[-AlphaAlphaInputValue] <float>] [[-AlphaMultiplier] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSDynamicMaskShader + + InputSource + + + + + String + + String + + + + + + + RedBaseValue + + + + + Float + + Float + + + + + + + RedRedInputValue + + + + + Float + + Float + + + + + + + RedGreenInputValue + + + + + Float + + Float + + + + + + + RedBlueInputValue + + + + + Float + + Float + + + + + + + RedAlphaInputValue + + + + + Float + + Float + + + + + + + RedMultiplier + + + + + Float + + Float + + + + + + + GreenBaseValue + + + + + Float + + Float + + + + + + + GreenRedInputValue + + + + + Float + + Float + + + + + + + GreenGreenInputValue + + + + + Float + + Float + + + + + + + GreenBlueInputValue + + + + + Float + + Float + + + + + + + GreenAlphaInputValue + + + + + Float + + Float + + + + + + + GreenMultiplier + + + + + Float + + Float + + + + + + + BlueBaseValue + + + + + Float + + Float + + + + + + + BlueRedInputValue + + + + + Float + + Float + + + + + + + BlueGreenInputValue + + + + + Float + + Float + + + + + + + BlueBlueInputValue + + + + + Float + + Float + + + + + + + BlueAlphaInputValue + + + + + Float + + Float + + + + + + + BlueMultiplier + + + + + Float + + Float + + + + + + + AlphaBaseValue + + + + + Float + + Float + + + + + + + AlphaRedInputValue + + + + + Float + + Float + + + + + + + AlphaGreenInputValue + + + + + Float + + Float + + + + + + + AlphaBlueInputValue + + + + + Float + + Float + + + + + + + AlphaAlphaInputValue + + + + + Float + + Float + + + + + + + AlphaMultiplier + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaAlphaInputValue + + + + + Float + + Float + + + + + + + AlphaBaseValue + + + + + Float + + Float + + + + + + + AlphaBlueInputValue + + + + + Float + + Float + + + + + + + AlphaGreenInputValue + + + + + Float + + Float + + + + + + + AlphaMultiplier + + + + + Float + + Float + + + + + + + AlphaRedInputValue + + + + + Float + + Float + + + + + + + BlueAlphaInputValue + + + + + Float + + Float + + + + + + + BlueBaseValue + + + + + Float + + Float + + + + + + + BlueBlueInputValue + + + + + Float + + Float + + + + + + + BlueGreenInputValue + + + + + Float + + Float + + + + + + + BlueMultiplier + + + + + Float + + Float + + + + + + + BlueRedInputValue + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GreenAlphaInputValue + + + + + Float + + Float + + + + + + + GreenBaseValue + + + + + Float + + Float + + + + + + + GreenBlueInputValue + + + + + Float + + Float + + + + + + + GreenGreenInputValue + + + + + Float + + Float + + + + + + + GreenMultiplier + + + + + Float + + Float + + + + + + + GreenRedInputValue + + + + + Float + + Float + + + + + + + InputSource + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RedAlphaInputValue + + + + + Float + + Float + + + + + + + RedBaseValue + + + + + Float + + Float + + + + + + + RedBlueInputValue + + + + + Float + + Float + + + + + + + RedGreenInputValue + + + + + Float + + Float + + + + + + + RedMultiplier + + + + + Float + + Float + + + + + + + RedRedInputValue + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSEdgeDetectionShader + OBSEdgeDetectionShader + Get + + Get-OBSEdgeDetectionShader [[-Sensitivity] <float>] [[-EdgeColor] <string>] [[-NonEdgeColor] <string>] [[-AlphaLevel] <float>] [[-RandF] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-InvertEdge] [-EdgeMultiply] [-NonEdgeMultiply] [-AlphaChannel] [-AlphaInvert] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSEdgeDetectionShader + + Sensitivity + + + + + Float + + Float + + + + + + + InvertEdge + + + + + Switch + + Switch + + + + + + + EdgeColor + + + + + String + + String + + + + + + + EdgeMultiply + + + + + Switch + + Switch + + + + + + + NonEdgeColor + + + + + String + + String + + + + + + + NonEdgeMultiply + + + + + Switch + + Switch + + + + + + + AlphaChannel + + + + + Switch + + Switch + + + + + + + AlphaLevel + + + + + Float + + Float + + + + + + + AlphaInvert + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaChannel + + + + + Switch + + Switch + + + + + + + AlphaInvert + + + + + Switch + + Switch + + + + + + + AlphaLevel + + + + + Float + + Float + + + + + + + EdgeColor + + + + + String + + String + + + + + + + EdgeMultiply + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + InvertEdge + + + + + Switch + + Switch + + + + + + + NonEdgeColor + + + + + String + + String + + + + + + + NonEdgeMultiply + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + Sensitivity + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSEffect + OBSEffect + Get + + Gets OBS Effects + + 0.2 + + + Gets effects currently loaded into OBS-PowerShell. + An effect can be thought of as a name with a series of messages to OBS. + Those messages can be defined in a .json file or a script, in any module that tags OBS. + They can also be defined in a function or script named like: + * `*.OBS.FX.*` + * `*.OBS.Effect.*` + * `*.OBS.Effects.*` + + + + Get-OBSEffect + + Name + + The name of the effect. + + String + + String + + + + + + + + + + Name + + The name of the effect. + + String + + String + + + + + + + + + Import-OBSEffect + + + + + Remove-OBSEffect + + + + + + + + Get-OBSEmbersShader + OBSEmbersShader + Get + + Get-OBSEmbersShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvSize] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-RandInstanceF] <float>] [[-RandActivationF] <float>] [[-Loops] <int>] [[-LocalTime] <float>] [[-Notes] <string>] [[-AnimationSpeed] <float>] [[-MovementDirectionHorizontal] <float>] [[-MovementDirectionVertical] <float>] [[-MovementSpeedPercent] <int>] [[-LayersCount] <int>] [[-LumaMin] <float>] [[-LumaMinSmooth] <float>] [[-AlphaPercentage] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSEmbersShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + Loops + + + + + Int + + Int + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + AnimationSpeed + + + + + Float + + Float + + + + + + + MovementDirectionHorizontal + + + + + Float + + Float + + + + + + + MovementDirectionVertical + + + + + Float + + Float + + + + + + + MovementSpeedPercent + + + + + Int + + Int + + + + + + + LayersCount + + + + + Int + + Int + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + AnimationSpeed + + + + + Float + + Float + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + LayersCount + + + + + Int + + Int + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + Loops + + + + + Int + + Int + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + MovementDirectionHorizontal + + + + + Float + + Float + + + + + + + MovementDirectionVertical + + + + + Float + + Float + + + + + + + MovementSpeedPercent + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSEmbossColorShader + OBSEmbossColorShader + Get + + Get-OBSEmbossColorShader [[-AngleSteps] <int>] [[-RadiusSteps] <int>] [[-AmpFactor] <float>] [[-UpDownPercent] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSEmbossColorShader + + AngleSteps + + + + + Int + + Int + + + + + + + RadiusSteps + + + + + Int + + Int + + + + + + + AmpFactor + + + + + Float + + Float + + + + + + + UpDownPercent + + + + + Int + + Int + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AmpFactor + + + + + Float + + Float + + + + + + + AngleSteps + + + + + Int + + Int + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RadiusSteps + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UpDownPercent + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSEmbossShader + OBSEmbossShader + Get + + Get-OBSEmbossShader [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-UseColor] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSEmbossShader + + UseColor + + + + + Switch + + Switch + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseColor + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSExeldroBentCameraShader + OBSExeldroBentCameraShader + Get + + Get-OBSExeldroBentCameraShader [[-LeftSideWidth] <float>] [[-LeftSideSize] <float>] [[-LeftSideShadow] <float>] [[-LeftFlipWidth] <float>] [[-LeftFlipShadow] <float>] [[-RightSideWidth] <float>] [[-RightSideSize] <float>] [[-RightSideShadow] <float>] [[-RightFlipWidth] <float>] [[-RightFlipShadow] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSExeldroBentCameraShader + + LeftSideWidth + + + + + Float + + Float + + + + + + + LeftSideSize + + + + + Float + + Float + + + + + + + LeftSideShadow + + + + + Float + + Float + + + + + + + LeftFlipWidth + + + + + Float + + Float + + + + + + + LeftFlipShadow + + + + + Float + + Float + + + + + + + RightSideWidth + + + + + Float + + Float + + + + + + + RightSideSize + + + + + Float + + Float + + + + + + + RightSideShadow + + + + + Float + + Float + + + + + + + RightFlipWidth + + + + + Float + + Float + + + + + + + RightFlipShadow + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + LeftFlipShadow + + + + + Float + + Float + + + + + + + LeftFlipWidth + + + + + Float + + Float + + + + + + + LeftSideShadow + + + + + Float + + Float + + + + + + + LeftSideSize + + + + + Float + + Float + + + + + + + LeftSideWidth + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RightFlipShadow + + + + + Float + + Float + + + + + + + RightFlipWidth + + + + + Float + + Float + + + + + + + RightSideShadow + + + + + Float + + Float + + + + + + + RightSideSize + + + + + Float + + Float + + + + + + + RightSideWidth + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFadeTransitionShader + OBSFadeTransitionShader + Get + + Get-OBSFadeTransitionShader [[-ImageA] <string>] [[-ImageB] <string>] [[-TransitionTime] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFadeTransitionShader + + ImageA + + + + + String + + String + + + + + + + ImageB + + + + + String + + String + + + + + + + TransitionTime + + + + + Float + + Float + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + ImageA + + + + + String + + String + + + + + + + ImageB + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TransitionTime + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFillColorGradientShader + OBSFillColorGradientShader + Get + + Get-OBSFillColorGradientShader [[-Fill] <float>] [[-GradientWidth] <float>] [[-GradientOffset] <float>] [[-FillDirection] <int>] [[-FillColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFillColorGradientShader + + Fill + + + + + Float + + Float + + + + + + + GradientWidth + + + + + Float + + Float + + + + + + + GradientOffset + + + + + Float + + Float + + + + + + + FillDirection + + + + + Int + + Int + + + + + + + FillColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Fill + + + + + Float + + Float + + + + + + + FillColor + + + + + String + + String + + + + + + + FillDirection + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GradientOffset + + + + + Float + + Float + + + + + + + GradientWidth + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFillColorLinearShader + OBSFillColorLinearShader + Get + + Get-OBSFillColorLinearShader [[-Fill] <float>] [[-FillDirection] <int>] [[-FillColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFillColorLinearShader + + Fill + + + + + Float + + Float + + + + + + + FillDirection + + + + + Int + + Int + + + + + + + FillColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Fill + + + + + Float + + Float + + + + + + + FillColor + + + + + String + + String + + + + + + + FillDirection + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFillColorRadialDegreesShader + OBSFillColorRadialDegreesShader + Get + + Get-OBSFillColorRadialDegreesShader [[-FillDirection] <int>] [[-Fill] <float>] [[-StartAngle] <float>] [[-OffsetX] <float>] [[-OffsetY] <float>] [[-FillColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFillColorRadialDegreesShader + + FillDirection + + + + + Int + + Int + + + + + + + Fill + + + + + Float + + Float + + + + + + + StartAngle + + + + + Float + + Float + + + + + + + OffsetX + + + + + Float + + Float + + + + + + + OffsetY + + + + + Float + + Float + + + + + + + FillColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Fill + + + + + Float + + Float + + + + + + + FillColor + + + + + String + + String + + + + + + + FillDirection + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + OffsetX + + + + + Float + + Float + + + + + + + OffsetY + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + StartAngle + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFillColorRadialPercentageShader + OBSFillColorRadialPercentageShader + Get + + Get-OBSFillColorRadialPercentageShader [[-FillDirection] <int>] [[-Fill] <float>] [[-StartAngle] <float>] [[-OffsetX] <float>] [[-OffsetY] <float>] [[-FillColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFillColorRadialPercentageShader + + FillDirection + + + + + Int + + Int + + + + + + + Fill + + + + + Float + + Float + + + + + + + StartAngle + + + + + Float + + Float + + + + + + + OffsetX + + + + + Float + + Float + + + + + + + OffsetY + + + + + Float + + Float + + + + + + + FillColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Fill + + + + + Float + + Float + + + + + + + FillColor + + + + + String + + String + + + + + + + FillDirection + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + OffsetX + + + + + Float + + Float + + + + + + + OffsetY + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + StartAngle + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFilterTemplateShader + OBSFilterTemplateShader + Get + + Get-OBSFilterTemplateShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-UvSize] <float[]>] [[-RandF] <float>] [[-RandInstanceF] <float>] [[-RandActivationF] <float>] [[-Loops] <int>] [[-LocalTime] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFilterTemplateShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + Loops + + + + + Int + + Int + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + Loops + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFire3Shader + OBSFire3Shader + Get + + Get-OBSFire3Shader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-UvSize] <float[]>] [[-RandF] <float>] [[-RandInstanceF] <float>] [[-RandActivationF] <float>] [[-Loops] <int>] [[-LocalTime] <float>] [[-MovementDirectionHorizontal] <float>] [[-MovementDirectionVertical] <float>] [[-AlphaPercentage] <int>] [[-Speed] <int>] [[-LumaMin] <float>] [[-LumaMinSmooth] <float>] [[-ColorToReplace] <string>] [[-FlameSize] <float>] [[-SparkGridHeight] <float>] [[-FlameModifier] <float>] [[-FlameTongueSize] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-FullWidth] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFire3Shader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + Loops + + + + + Int + + Int + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + MovementDirectionHorizontal + + + + + Float + + Float + + + + + + + MovementDirectionVertical + + + + + Float + + Float + + + + + + + AlphaPercentage + + + + + Int + + Int + + + + + + + Speed + + + + + Int + + Int + + + + + + + Invert + + + + + Switch + + Switch + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + FullWidth + + + + + Switch + + Switch + + + + + + + FlameSize + + + + + Float + + Float + + + + + + + SparkGridHeight + + + + + Float + + Float + + + + + + + FlameModifier + + + + + Float + + Float + + + + + + + FlameTongueSize + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Int + + Int + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + FlameModifier + + + + + Float + + Float + + + + + + + FlameSize + + + + + Float + + Float + + + + + + + FlameTongueSize + + + + + Float + + Float + + + + + + + Force + + + + + Switch + + Switch + + + + + + + FullWidth + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + Invert + + + + + Switch + + Switch + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + Loops + + + + + Int + + Int + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + MovementDirectionHorizontal + + + + + Float + + Float + + + + + + + MovementDirectionVertical + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SparkGridHeight + + + + + Float + + Float + + + + + + + Speed + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFireShader + OBSFireShader + Get + + Get-OBSFireShader [[-AlphaPercentage] <int>] [[-Speed] <int>] [[-FlameSize] <int>] [[-FireType] <int>] [[-LumaMin] <float>] [[-LumaMinSmooth] <float>] [[-ColorToReplace] <string>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Invert] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFireShader + + AlphaPercentage + + + + + Int + + Int + + + + + + + Speed + + + + + Int + + Int + + + + + + + FlameSize + + + + + Int + + Int + + + + + + + FireType + + + + + Int + + Int + + + + + + + Invert + + + + + Switch + + Switch + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Int + + Int + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + FireType + + + + + Int + + Int + + + + + + + FlameSize + + + + + Int + + Int + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Invert + + + + + Switch + + Switch + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFireworks2Shader + OBSFireworks2Shader + Get + + Get-OBSFireworks2Shader [[-Speed] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFireworks2Shader + + Speed + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFireworksShader + OBSFireworksShader + Get + + Get-OBSFireworksShader [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ShowFlash] [-ShowStars] [-UseTransparancy] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFireworksShader + + ShowFlash + + + + + Switch + + Switch + + + + + + + ShowStars + + + + + Switch + + Switch + + + + + + + UseTransparancy + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + ShowFlash + + + + + Switch + + Switch + + + + + + + ShowStars + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UseTransparancy + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFisheyeShader + OBSFisheyeShader + Get + + Get-OBSFisheyeShader [[-CenterXPercent] <float>] [[-CenterYPercent] <float>] [[-Power] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFisheyeShader + + CenterXPercent + + + + + Float + + Float + + + + + + + CenterYPercent + + + + + Float + + Float + + + + + + + Power + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CenterXPercent + + + + + Float + + Float + + + + + + + CenterYPercent + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Power + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFisheyeXyShader + OBSFisheyeXyShader + Get + + Get-OBSFisheyeXyShader [[-CenterXPercent] <float>] [[-CenterYPercent] <float>] [[-PowerX] <float>] [[-PowerY] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFisheyeXyShader + + CenterXPercent + + + + + Float + + Float + + + + + + + CenterYPercent + + + + + Float + + Float + + + + + + + PowerX + + + + + Float + + Float + + + + + + + PowerY + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CenterXPercent + + + + + Float + + Float + + + + + + + CenterYPercent + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PowerX + + + + + Float + + Float + + + + + + + PowerY + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFlipShader + OBSFlipShader + Get + + Get-OBSFlipShader [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFlipShader + + Horizontal + + + + + Switch + + Switch + + + + + + + Vertical + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Horizontal + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + Vertical + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSFrostedGlassShader + OBSFrostedGlassShader + Get + + Get-OBSFrostedGlassShader [[-AlphaPercent] <float>] [[-Amount] <float>] [[-Scale] <float>] [[-BorderOffset] <float>] [[-BorderColor] <string>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Animate] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSFrostedGlassShader + + AlphaPercent + + + + + Float + + Float + + + + + + + Amount + + + + + Float + + Float + + + + + + + Scale + + + + + Float + + Float + + + + + + + Animate + + + + + Switch + + Switch + + + + + + + HorizontalBorder + + + + + Switch + + Switch + + + + + + + BorderOffset + + + + + Float + + Float + + + + + + + BorderColor + + + + + String + + String + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercent + + + + + Float + + Float + + + + + + + Amount + + + + + Float + + Float + + + + + + + Animate + + + + + Switch + + Switch + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderOffset + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + HorizontalBorder + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Scale + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGammaCorrectionShader + OBSGammaCorrectionShader + Get + + Get-OBSGammaCorrectionShader [[-Red] <float>] [[-Green] <float>] [[-Blue] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGammaCorrectionShader + + Red + + + + + Float + + Float + + + + + + + Green + + + + + Float + + Float + + + + + + + Blue + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Blue + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Green + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Red + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGaussianBlurAdvancedShader + OBSGaussianBlurAdvancedShader + Get + + Get-OBSGaussianBlurAdvancedShader [[-Directions] <float>] [[-Quality] <float>] [[-Size] <float>] [[-MaskLeft] <float>] [[-MaskRight] <float>] [[-MaskTop] <float>] [[-MaskBottom] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGaussianBlurAdvancedShader + + Directions + + + + + Float + + Float + + + + + + + Quality + + + + + Float + + Float + + + + + + + Size + + + + + Float + + Float + + + + + + + MaskLeft + + + + + Float + + Float + + + + + + + MaskRight + + + + + Float + + Float + + + + + + + MaskTop + + + + + Float + + Float + + + + + + + MaskBottom + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Directions + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + MaskBottom + + + + + Float + + Float + + + + + + + MaskLeft + + + + + Float + + Float + + + + + + + MaskRight + + + + + Float + + Float + + + + + + + MaskTop + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Quality + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + Size + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGaussianBlurShader + OBSGaussianBlurShader + Get + + Get-OBSGaussianBlurShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ImageSize] <float[]>] [[-ImageTexel] <float[]>] [[-URadius] <int>] [[-UDiameter] <int>] [[-UTexelDelta] <float[]>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-Kernel] <string>] [[-KernelTexel] <float[]>] [[-PixelSize] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGaussianBlurShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ImageSize + + + + + System.Single[] + + System.Single[] + + + + + + + ImageTexel + + + + + System.Single[] + + System.Single[] + + + + + + + URadius + + + + + Int + + Int + + + + + + + UDiameter + + + + + Int + + Int + + + + + + + UTexelDelta + + + + + System.Single[] + + System.Single[] + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + Kernel + + + + + String + + String + + + + + + + KernelTexel + + + + + System.Single[] + + System.Single[] + + + + + + + PixelSize + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + ImageSize + + + + + System.Single[] + + System.Single[] + + + + + + + ImageTexel + + + + + System.Single[] + + System.Single[] + + + + + + + Kernel + + + + + String + + String + + + + + + + KernelTexel + + + + + System.Single[] + + System.Single[] + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PixelSize + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UDiameter + + + + + Int + + Int + + + + + + + URadius + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UTexelDelta + + + + + System.Single[] + + System.Single[] + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGaussianBlurSimpleShader + OBSGaussianBlurSimpleShader + Get + + Get-OBSGaussianBlurSimpleShader [[-Strength] <int>] [[-MaskLeft] <float>] [[-MaskRight] <float>] [[-MaskTop] <float>] [[-MaskBottom] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGaussianBlurSimpleShader + + Strength + + + + + Int + + Int + + + + + + + MaskLeft + + + + + Float + + Float + + + + + + + MaskRight + + + + + Float + + Float + + + + + + + MaskTop + + + + + Float + + Float + + + + + + + MaskBottom + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + MaskBottom + + + + + Float + + Float + + + + + + + MaskLeft + + + + + Float + + Float + + + + + + + MaskRight + + + + + Float + + Float + + + + + + + MaskTop + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Strength + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGaussianExampleShader + OBSGaussianExampleShader + Get + + Get-OBSGaussianExampleShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvSize] <float[]>] [[-UvPixelInterval] <float[]>] [[-InitialImage] <string>] [[-BeforeImage] <string>] [[-AfterImage] <string>] [[-TextColor] <string>] [[-MaxDistance] <float>] [[-Exp] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGaussianExampleShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + InitialImage + + + + + String + + String + + + + + + + BeforeImage + + + + + String + + String + + + + + + + AfterImage + + + + + String + + String + + + + + + + TextColor + + + + + String + + String + + + + + + + MaxDistance + + + + + Float + + Float + + + + + + + Exp + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AfterImage + + + + + String + + String + + + + + + + BeforeImage + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + Exp + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + InitialImage + + + + + String + + String + + + + + + + MaxDistance + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TextColor + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGaussianSimpleShader + OBSGaussianSimpleShader + Get + + Get-OBSGaussianSimpleShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-UvSize] <float[]>] [[-RandF] <float>] [[-RandInstanceF] <float>] [[-RandActivationF] <float>] [[-Loops] <int>] [[-LocalTime] <float>] [[-Samples] <int>] [[-LOD] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGaussianSimpleShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + Loops + + + + + Int + + Int + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + Samples + + + + + Int + + Int + + + + + + + LOD + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + LOD + + + + + Int + + Int + + + + + + + Loops + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + Samples + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGbCameraShader + OBSGbCameraShader + Get + + Get-OBSGbCameraShader [[-PixelSize] <float>] [[-DitherFactor] <float>] [[-Brightness] <float>] [[-Contrast] <float>] [[-Gamma] <float>] [[-Color1] <string>] [[-Color2] <string>] [[-Color3] <string>] [[-Color4] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-AlternativeBayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGbCameraShader + + PixelSize + + + + + Float + + Float + + + + + + + DitherFactor + + + + + Float + + Float + + + + + + + AlternativeBayer + + + + + Switch + + Switch + + + + + + + Brightness + + + + + Float + + Float + + + + + + + Contrast + + + + + Float + + Float + + + + + + + Gamma + + + + + Float + + Float + + + + + + + Color1 + + + + + String + + String + + + + + + + Color2 + + + + + String + + String + + + + + + + Color3 + + + + + String + + String + + + + + + + Color4 + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlternativeBayer + + + + + Switch + + Switch + + + + + + + Brightness + + + + + Float + + Float + + + + + + + Color1 + + + + + String + + String + + + + + + + Color2 + + + + + String + + String + + + + + + + Color3 + + + + + String + + String + + + + + + + Color4 + + + + + String + + String + + + + + + + Contrast + + + + + Float + + Float + + + + + + + DitherFactor + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Gamma + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PixelSize + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGlassShader + OBSGlassShader + Get + + Get-OBSGlassShader [[-AlphaPercent] <float>] [[-OffsetAmount] <float>] [[-XSize] <int>] [[-YSize] <int>] [[-ReflectionOffset] <int>] [[-BorderOffset] <float>] [[-BorderColor] <string>] [[-GlassColor] <string>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-HorizontalBorder] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGlassShader + + AlphaPercent + + + + + Float + + Float + + + + + + + OffsetAmount + + + + + Float + + Float + + + + + + + XSize + + + + + Int + + Int + + + + + + + YSize + + + + + Int + + Int + + + + + + + ReflectionOffset + + + + + Int + + Int + + + + + + + HorizontalBorder + + + + + Switch + + Switch + + + + + + + BorderOffset + + + + + Float + + Float + + + + + + + BorderColor + + + + + String + + String + + + + + + + GlassColor + + + + + String + + String + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercent + + + + + Float + + Float + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderOffset + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GlassColor + + + + + String + + String + + + + + + + HorizontalBorder + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + OffsetAmount + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ReflectionOffset + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + XSize + + + + + Int + + Int + + + + + + + YSize + + + + + Int + + Int + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGlitchAnalogShader + OBSGlitchAnalogShader + Get + + Get-OBSGlitchAnalogShader [[-ScanLineJitterDisplacement] <float>] [[-ScanLineJitterThresholdPercent] <int>] [[-VerticalJumpAmount] <float>] [[-VerticalSpeed] <float>] [[-HorizontalShake] <float>] [[-ColorDriftAmount] <float>] [[-ColorDriftSpeed] <float>] [[-PulseSpeedPercent] <int>] [[-AlphaPercent] <int>] [[-ColorToReplace] <string>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-RotateColors] [-ApplyToAlphaLayer] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGlitchAnalogShader + + ScanLineJitterDisplacement + + + + + Float + + Float + + + + + + + ScanLineJitterThresholdPercent + + + + + Int + + Int + + + + + + + VerticalJumpAmount + + + + + Float + + Float + + + + + + + VerticalSpeed + + + + + Float + + Float + + + + + + + HorizontalShake + + + + + Float + + Float + + + + + + + ColorDriftAmount + + + + + Float + + Float + + + + + + + ColorDriftSpeed + + + + + Float + + Float + + + + + + + PulseSpeedPercent + + + + + Int + + Int + + + + + + + AlphaPercent + + + + + Int + + Int + + + + + + + RotateColors + + + + + Switch + + Switch + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercent + + + + + Int + + Int + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorDriftAmount + + + + + Float + + Float + + + + + + + ColorDriftSpeed + + + + + Float + + Float + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + HorizontalShake + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PulseSpeedPercent + + + + + Int + + Int + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + RotateColors + + + + + Switch + + Switch + + + + + + + ScanLineJitterDisplacement + + + + + Float + + Float + + + + + + + ScanLineJitterThresholdPercent + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + VerticalJumpAmount + + + + + Float + + Float + + + + + + + VerticalSpeed + + + + + Float + + Float + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGlitchShader + OBSGlitchShader + Get + + Get-OBSGlitchShader [[-AMT] <float>] [[-SPEED] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGlitchShader + + AMT + + + + + Float + + Float + + + + + + + SPEED + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AMT + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SPEED + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGlowShader + OBSGlowShader + Get + + Get-OBSGlowShader [[-GlowPercent] <int>] [[-Blur] <int>] [[-MinBrightness] <int>] [[-MaxBrightness] <int>] [[-PulseSpeed] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Ease] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGlowShader + + GlowPercent + + + + + Int + + Int + + + + + + + Blur + + + + + Int + + Int + + + + + + + MinBrightness + + + + + Int + + Int + + + + + + + MaxBrightness + + + + + Int + + Int + + + + + + + PulseSpeed + + + + + Int + + Int + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Blur + + + + + Int + + Int + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GlowPercent + + + + + Int + + Int + + + + + + + MaxBrightness + + + + + Int + + Int + + + + + + + MinBrightness + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PulseSpeed + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGradientShader + OBSGradientShader + Get + + Get-OBSGradientShader [[-StartColor] <string>] [[-StartStep] <float>] [[-MiddleColor] <string>] [[-MiddleStep] <float>] [[-EndColor] <string>] [[-EndStep] <float>] [[-AlphaPercent] <int>] [[-PulseSpeed] <int>] [[-ColorToReplace] <string>] [[-GradientCenterWidthPercentage] <int>] [[-GradientCenterHeightPercentage] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Ease] [-RotateColors] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSGradientShader + + StartColor + + + + + String + + String + + + + + + + StartStep + + + + + Float + + Float + + + + + + + MiddleColor + + + + + String + + String + + + + + + + MiddleStep + + + + + Float + + Float + + + + + + + EndColor + + + + + String + + String + + + + + + + EndStep + + + + + Float + + Float + + + + + + + AlphaPercent + + + + + Int + + Int + + + + + + + PulseSpeed + + + + + Int + + Int + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + RotateColors + + + + + Switch + + Switch + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + Horizontal + + + + + Switch + + Switch + + + + + + + Vertical + + + + + Switch + + Switch + + + + + + + GradientCenterWidthPercentage + + + + + Int + + Int + + + + + + + GradientCenterHeightPercentage + + + + + Int + + Int + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercent + + + + + Int + + Int + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + EndColor + + + + + String + + String + + + + + + + EndStep + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GradientCenterHeightPercentage + + + + + Int + + Int + + + + + + + GradientCenterWidthPercentage + + + + + Int + + Int + + + + + + + Horizontal + + + + + Switch + + Switch + + + + + + + MiddleColor + + + + + String + + String + + + + + + + MiddleStep + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PulseSpeed + + + + + Int + + Int + + + + + + + RotateColors + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + StartColor + + + + + String + + String + + + + + + + StartStep + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + Vertical + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSGroup + OBSGroup + Get + + Get-OBSGroup : GetGroupList + + 0.2 + + + Gets an array of all groups in OBS. + Groups in OBS are actually scenes, but renamed and modified. In obs-websocket, we treat them as scenes where we can. + Get-OBSGroup calls the OBS WebSocket with a request of type GetGroupList. + + + + Get-OBSGroup + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSGroup + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgrouplist + + + + + + Get-OBSGroupSceneItem + OBSGroupSceneItem + Get + + Get-OBSGroupSceneItem : GetGroupSceneItemList + + 0.2 + + + Basically GetSceneItemList, but for groups. + Using groups at all in OBS is discouraged, as they are very broken under the hood. Please use nested scenes instead. + Groups only + Get-OBSGroupSceneItem calls the OBS WebSocket with a request of type GetGroupSceneItemList. + + + + Get-OBSGroupSceneItem + + SceneName + + Name of the group to get the items of + + String + + String + + + + + + + SceneUuid + + UUID of the group to get the items of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Name of the group to get the items of + + String + + String + + + + + + + SceneUuid + + UUID of the group to get the items of + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getgroupsceneitemlist + + + + + + Get-OBSHalftoneShader + OBSHalftoneShader + Get + + Get-OBSHalftoneShader [[-Threshold] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSHalftoneShader + + Threshold + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Threshold + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSHeatWaveSimpleShader + OBSHeatWaveSimpleShader + Get + + Get-OBSHeatWaveSimpleShader [[-Rate] <float>] [[-Strength] <float>] [[-Distortion] <float>] [[-Opacity] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSHeatWaveSimpleShader + + Rate + + + + + Float + + Float + + + + + + + Strength + + + + + Float + + Float + + + + + + + Distortion + + + + + Float + + Float + + + + + + + Opacity + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Distortion + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Opacity + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Rate + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Strength + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSHexagonShader + OBSHexagonShader + Get + + Get-OBSHexagonShader [[-HexColor] <string>] [[-AlphaPercent] <int>] [[-Quantity] <float>] [[-BorderWidth] <int>] [[-SpeedPercent] <int>] [[-DistortX] <float>] [[-DistortY] <float>] [[-OffsetX] <float>] [[-OffsetY] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Blend] [-Equilateral] [-ZoomAnimate] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSHexagonShader + + HexColor + + + + + String + + String + + + + + + + AlphaPercent + + + + + Int + + Int + + + + + + + Quantity + + + + + Float + + Float + + + + + + + BorderWidth + + + + + Int + + Int + + + + + + + Blend + + + + + Switch + + Switch + + + + + + + Equilateral + + + + + Switch + + Switch + + + + + + + ZoomAnimate + + + + + Switch + + Switch + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + DistortX + + + + + Float + + Float + + + + + + + DistortY + + + + + Float + + Float + + + + + + + OffsetX + + + + + Float + + Float + + + + + + + OffsetY + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercent + + + + + Int + + Int + + + + + + + Blend + + + + + Switch + + Switch + + + + + + + BorderWidth + + + + + Int + + Int + + + + + + + DistortX + + + + + Float + + Float + + + + + + + DistortY + + + + + Float + + Float + + + + + + + Equilateral + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + HexColor + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + OffsetX + + + + + Float + + Float + + + + + + + OffsetY + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Quantity + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + ZoomAnimate + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSHotkey + OBSHotkey + Get + + Get-OBSHotkey : GetHotkeyList + + 0.2 + + + Gets an array of all hotkey names in OBS. + Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. + Get-OBSHotkey calls the OBS WebSocket with a request of type GetHotkeyList. + + + + Get-OBSHotkey + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSHotkey + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gethotkeylist + + + + + + Get-OBSHslHsvSaturationShader + OBSHslHsvSaturationShader + Get + + Get-OBSHslHsvSaturationShader [[-HslSaturationFactor] <float>] [[-HslGamma] <float>] [[-HsvSaturationFactor] <float>] [[-HsvGamma] <float>] [[-AdjustmentOrder] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSHslHsvSaturationShader + + HslSaturationFactor + + + + + Float + + Float + + + + + + + HslGamma + + + + + Float + + Float + + + + + + + HsvSaturationFactor + + + + + Float + + Float + + + + + + + HsvGamma + + + + + Float + + Float + + + + + + + AdjustmentOrder + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AdjustmentOrder + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + HslGamma + + + + + Float + + Float + + + + + + + HslSaturationFactor + + + + + Float + + Float + + + + + + + HsvGamma + + + + + Float + + Float + + + + + + + HsvSaturationFactor + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSHueRotatonShader + OBSHueRotatonShader + Get + + Get-OBSHueRotatonShader [[-Speed] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-HueOverride] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSHueRotatonShader + + Speed + + + + + Float + + Float + + + + + + + HueOverride + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + HueOverride + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSInput + OBSInput + Get + + Get-OBSInput : GetInputList + + 0.2 + + + Gets an array of all inputs in OBS. + Get-OBSInput calls the OBS WebSocket with a request of type GetInputList. + + + + Get-OBSInput + + InputKind + + Restrict the array to only inputs of the specified kind + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputKind + + Restrict the array to only inputs of the specified kind + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputlist + + + + + + Get-OBSInputAudioBalance + OBSInputAudioBalance + Get + + Get-OBSInputAudioBalance : GetInputAudioBalance + + 0.2 + + + Gets the audio balance of an input. + Get-OBSInputAudioBalance calls the OBS WebSocket with a request of type GetInputAudioBalance. + + + + Get-OBSInputAudioBalance + + InputName + + Name of the input to get the audio balance of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the audio balance of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to get the audio balance of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the audio balance of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiobalance + + + + + + Get-OBSInputAudioMonitorType + OBSInputAudioMonitorType + Get + + Get-OBSInputAudioMonitorType : GetInputAudioMonitorType + + 0.2 + + + Gets the audio monitor type of an input. + The available audio monitor types are: + - `OBS_MONITORING_TYPE_NONE` + - `OBS_MONITORING_TYPE_MONITOR_ONLY` + - `OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT` + Get-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type GetInputAudioMonitorType. + + + + Get-OBSInputAudioMonitorType + + InputName + + Name of the input to get the audio monitor type of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the audio monitor type of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to get the audio monitor type of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the audio monitor type of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiomonitortype + + + + + + Get-OBSInputAudioSyncOffset + OBSInputAudioSyncOffset + Get + + Get-OBSInputAudioSyncOffset : GetInputAudioSyncOffset + + 0.2 + + + Gets the audio sync offset of an input. + Note: The audio sync offset can be negative too! + Get-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type GetInputAudioSyncOffset. + + + + Get-OBSInputAudioSyncOffset + + InputName + + Name of the input to get the audio sync offset of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the audio sync offset of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to get the audio sync offset of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the audio sync offset of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiosyncoffset + + + + + + Get-OBSInputAudioTracks + OBSInputAudioTracks + Get + + Get-OBSInputAudioTracks : GetInputAudioTracks + + 0.2 + + + Gets the enable state of all audio tracks of an input. + Get-OBSInputAudioTracks calls the OBS WebSocket with a request of type GetInputAudioTracks. + + + + Get-OBSInputAudioTracks + + InputName + + Name of the input + + String + + String + + + + + + + InputUuid + + UUID of the input + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input + + String + + String + + + + + + + InputUuid + + UUID of the input + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputaudiotracks + + + + + + Get-OBSInputDefaultSettings + OBSInputDefaultSettings + Get + + Get-OBSInputDefaultSettings : GetInputDefaultSettings + + 0.2 + + + Gets the default settings for an input kind. + Get-OBSInputDefaultSettings calls the OBS WebSocket with a request of type GetInputDefaultSettings. + + + + Get-OBSInputDefaultSettings + + InputKind + + Input kind to get the default settings for + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputKind + + Input kind to get the default settings for + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputdefaultsettings + + + + + + Get-OBSInputKind + OBSInputKind + Get + + Get-OBSInputKind : GetInputKindList + + 0.2 + + + Gets an array of all available input kinds in OBS. + Get-OBSInputKind calls the OBS WebSocket with a request of type GetInputKindList. + + + + Get-OBSInputKind + + Unversioned + + True == Return all kinds as unversioned, False == Return with version suffixes (if available) + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + Unversioned + + True == Return all kinds as unversioned, False == Return with version suffixes (if available) + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputkindlist + + + + + + Get-OBSInputMute + OBSInputMute + Get + + Get-OBSInputMute : GetInputMute + + 0.2 + + + Gets the audio mute state of an input. + Get-OBSInputMute calls the OBS WebSocket with a request of type GetInputMute. + + + + Get-OBSInputMute + + InputName + + Name of input to get the mute state of + + String + + String + + + + + + + InputUuid + + UUID of input to get the mute state of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of input to get the mute state of + + String + + String + + + + + + + InputUuid + + UUID of input to get the mute state of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputmute + + + + + + Get-OBSInputPropertiesListPropertyItems + OBSInputPropertiesListPropertyItems + Get + + Get-OBSInputPropertiesListPropertyItems : GetInputPropertiesListPropertyItems + + 0.2 + + + Gets the items of a list property from an input's properties. + Note: Use this in cases where an input provides a dynamic, selectable list of items. For example, display capture, where it provides a list of available displays. + Get-OBSInputPropertiesListPropertyItems calls the OBS WebSocket with a request of type GetInputPropertiesListPropertyItems. + + + + Get-OBSInputPropertiesListPropertyItems + + InputName + + Name of the input + + String + + String + + + + + + + InputUuid + + UUID of the input + + String + + String + + + + + + + PropertyName + + Name of the list property to get the items of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input + + String + + String + + + + + + + InputUuid + + UUID of the input + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + PropertyName + + Name of the list property to get the items of + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputpropertieslistpropertyitems + + + + + + Get-OBSInputSettings + OBSInputSettings + Get + + Get-OBSInputSettings : GetInputSettings + + 0.2 + + + Gets the settings of an input. + Note: Does not include defaults. To create the entire settings object, overlay `inputSettings` over the `defaultInputSettings` provided by `GetInputDefaultSettings`. + Get-OBSInputSettings calls the OBS WebSocket with a request of type GetInputSettings. + + + + Get-OBSInputSettings + + InputName + + Name of the input to get the settings of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the settings of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to get the settings of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the settings of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputsettings + + + + + + Get-OBSInputVolume + OBSInputVolume + Get + + Get-OBSInputVolume : GetInputVolume + + 0.2 + + + Gets the current volume setting of an input. + Get-OBSInputVolume calls the OBS WebSocket with a request of type GetInputVolume. + + + + Get-OBSInputVolume + + InputName + + Name of the input to get the volume of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the volume of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to get the volume of + + String + + String + + + + + + + InputUuid + + UUID of the input to get the volume of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getinputvolume + + + + + + Get-OBSIntensityScopeShader + OBSIntensityScopeShader + Get + + Get-OBSIntensityScopeShader [[-Gain] <float>] [[-Blend] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSIntensityScopeShader + + Gain + + + + + Float + + Float + + + + + + + Blend + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Blend + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Gain + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSInvertLumaShader + OBSInvertLumaShader + Get + + Get-OBSInvertLumaShader [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-InvertColor] [-InvertLuma] [-GammaCorrection] [-TestRamp] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSInvertLumaShader + + InvertColor + + + + + Switch + + Switch + + + + + + + InvertLuma + + + + + Switch + + Switch + + + + + + + GammaCorrection + + + + + Switch + + Switch + + + + + + + TestRamp + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GammaCorrection + + + + + Switch + + Switch + + + + + + + InvertColor + + + + + Switch + + Switch + + + + + + + InvertLuma + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TestRamp + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSLastReplayBufferReplay + OBSLastReplayBufferReplay + Get + + Get-OBSLastReplayBufferReplay : GetLastReplayBufferReplay + + 0.2 + + + Gets the filename of the last replay buffer save file. + Get-OBSLastReplayBufferReplay calls the OBS WebSocket with a request of type GetLastReplayBufferReplay. + + + + Get-OBSLastReplayBufferReplay + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSLastReplayBufferReplay + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getlastreplaybufferreplay + + + + + + Get-OBSLuminance2Shader + OBSLuminance2Shader + Get + + Get-OBSLuminance2Shader [[-Color] <string>] [[-LumaMax] <float>] [[-LumaMin] <float>] [[-LumaMaxSmooth] <float>] [[-LumaMinSmooth] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSLuminance2Shader + + Color + + + + + String + + String + + + + + + + LumaMax + + + + + Float + + Float + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMaxSmooth + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + InvertImageColor + + + + + Switch + + Switch + + + + + + + InvertAlphaChannel + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Color + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + InvertAlphaChannel + + + + + Switch + + Switch + + + + + + + InvertImageColor + + + + + Switch + + Switch + + + + + + + LumaMax + + + + + Float + + Float + + + + + + + LumaMaxSmooth + + + + + Float + + Float + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSLuminanceAlphaShader + OBSLuminanceAlphaShader + Get + + Get-OBSLuminanceAlphaShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-ColorMatrix] <float[][]>] [[-Color] <string>] [[-MulVal] <float>] [[-AddVal] <float>] [[-Level] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSLuminanceAlphaShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ColorMatrix + + + + + System.Single[][] + + System.Single[][] + + + + + + + Color + + + + + String + + String + + + + + + + MulVal + + + + + Float + + Float + + + + + + + AddVal + + + + + Float + + Float + + + + + + + Level + + + + + Float + + Float + + + + + + + InvertAlphaChannel + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AddVal + + + + + Float + + Float + + + + + + + Color + + + + + String + + String + + + + + + + ColorMatrix + + + + + System.Single[][] + + System.Single[][] + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + InvertAlphaChannel + + + + + Switch + + Switch + + + + + + + Level + + + + + Float + + Float + + + + + + + MulVal + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSLuminanceShader + OBSLuminanceShader + Get + + Get-OBSLuminanceShader [[-Color] <string>] [[-Level] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-InvertImageColor] [-InvertAlphaChannel] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSLuminanceShader + + Color + + + + + String + + String + + + + + + + Level + + + + + Float + + Float + + + + + + + InvertImageColor + + + + + Switch + + Switch + + + + + + + InvertAlphaChannel + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Color + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + InvertAlphaChannel + + + + + Switch + + Switch + + + + + + + InvertImageColor + + + + + Switch + + Switch + + + + + + + Level + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSMatrixShader + OBSMatrixShader + Get + + Get-OBSMatrixShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvSize] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-RandInstanceF] <float>] [[-RandActivationF] <float>] [[-Loops] <int>] [[-LocalTime] <float>] [[-Mouse] <float[]>] [[-LumaMin] <float>] [[-LumaMinSmooth] <float>] [[-Ratio] <float>] [[-AlphaPercentage] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-InvertDirection] [-ApplyToAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSMatrixShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + Loops + + + + + Int + + Int + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + Mouse + + + + + System.Single[] + + System.Single[] + + + + + + + InvertDirection + + + + + Switch + + Switch + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + Ratio + + + + + Float + + Float + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + InvertDirection + + + + + Switch + + Switch + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + Loops + + + + + Int + + Int + + + + + + + LumaMin + + + + + Float + + Float + + + + + + + LumaMinSmooth + + + + + Float + + Float + + + + + + + Mouse + + + + + System.Single[] + + System.Single[] + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandActivationF + + + + + Float + + Float + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandInstanceF + + + + + Float + + Float + + + + + + + Ratio + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSMediaInputStatus + OBSMediaInputStatus + Get + + Get-OBSMediaInputStatus : GetMediaInputStatus + + 0.2 + + + Gets the status of a media input. + Media States: + - `OBS_MEDIA_STATE_NONE` + - `OBS_MEDIA_STATE_PLAYING` + - `OBS_MEDIA_STATE_OPENING` + - `OBS_MEDIA_STATE_BUFFERING` + - `OBS_MEDIA_STATE_PAUSED` + - `OBS_MEDIA_STATE_STOPPED` + - `OBS_MEDIA_STATE_ENDED` + - `OBS_MEDIA_STATE_ERROR` + Get-OBSMediaInputStatus calls the OBS WebSocket with a request of type GetMediaInputStatus. + + + + Get-OBSMediaInputStatus + + InputName + + Name of the media input + + String + + String + + + + + + + InputUuid + + UUID of the media input + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the media input + + String + + String + + + + + + + InputUuid + + UUID of the media input + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmediainputstatus + + + + + + Get-OBSMonitor + OBSMonitor + Get + + Get-OBSMonitor : GetMonitorList + + 0.2 + + + Gets a list of connected monitors and information about them. + Get-OBSMonitor calls the OBS WebSocket with a request of type GetMonitorList. + + + + Get-OBSMonitor + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSMonitor + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getmonitorlist + + + + + + Get-OBSMultiplyShader + OBSMultiplyShader + Get + + Get-OBSMultiplyShader [[-OtherImage] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSMultiplyShader + + OtherImage + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + OtherImage + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSNightSkyShader + OBSNightSkyShader + Get + + Get-OBSNightSkyShader [[-Speed] <float>] [[-CenterWidthPercentage] <int>] [[-CenterHeightPercentage] <int>] [[-AlphaPercentage] <float>] [[-NumberStars] <int>] [[-SKYCOLOR] <string>] [[-STARCOLOR] <string>] [[-LIGHTSKY] <string>] [[-SKYLIGHTNESS] <float>] [[-MOONCOLOR] <string>] [[-MoonSize] <float>] [[-MoonBumpSize] <float>] [[-MoonPositionX] <float>] [[-MoonPositionY] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-IncludeClouds] [-IncludeMoon] [-ApplyToImage] [-ReplaceImageColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSNightSkyShader + + Speed + + + + + Float + + Float + + + + + + + IncludeClouds + + + + + Switch + + Switch + + + + + + + IncludeMoon + + + + + Switch + + Switch + + + + + + + CenterWidthPercentage + + + + + Int + + Int + + + + + + + CenterHeightPercentage + + + + + Int + + Int + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + NumberStars + + + + + Int + + Int + + + + + + + SKYCOLOR + + + + + String + + String + + + + + + + STARCOLOR + + + + + String + + String + + + + + + + LIGHTSKY + + + + + String + + String + + + + + + + SKYLIGHTNESS + + + + + Float + + Float + + + + + + + MOONCOLOR + + + + + String + + String + + + + + + + MoonSize + + + + + Float + + Float + + + + + + + MoonBumpSize + + + + + Float + + Float + + + + + + + MoonPositionX + + + + + Float + + Float + + + + + + + MoonPositionY + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + CenterHeightPercentage + + + + + Int + + Int + + + + + + + CenterWidthPercentage + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + IncludeClouds + + + + + Switch + + Switch + + + + + + + IncludeMoon + + + + + Switch + + Switch + + + + + + + LIGHTSKY + + + + + String + + String + + + + + + + MoonBumpSize + + + + + Float + + Float + + + + + + + MOONCOLOR + + + + + String + + String + + + + + + + MoonPositionX + + + + + Float + + Float + + + + + + + MoonPositionY + + + + + Float + + Float + + + + + + + MoonSize + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + NumberStars + + + + + Int + + Int + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SKYCOLOR + + + + + String + + String + + + + + + + SKYLIGHTNESS + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + STARCOLOR + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSOpacityShader + OBSOpacityShader + Get + + Get-OBSOpacityShader [[-Opacity] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSOpacityShader + + Opacity + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Opacity + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSOutput + OBSOutput + Get + + Get-OBSOutput : GetOutputList + + 0.2 + + + Gets the list of available outputs. + Get-OBSOutput calls the OBS WebSocket with a request of type GetOutputList. + + + + Get-OBSOutput + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSOutput + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputlist + + + + + + Get-OBSOutputSettings + OBSOutputSettings + Get + + Get-OBSOutputSettings : GetOutputSettings + + 0.2 + + + Gets the settings of an output. + Get-OBSOutputSettings calls the OBS WebSocket with a request of type GetOutputSettings. + + + + Get-OBSOutputSettings + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputsettings + + + + + + Get-OBSOutputStatus + OBSOutputStatus + Get + + Get-OBSOutputStatus : GetOutputStatus + + 0.2 + + + Gets the status of an output. + Get-OBSOutputStatus calls the OBS WebSocket with a request of type GetOutputStatus. + + + + Get-OBSOutputStatus + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getoutputstatus + + + + + + Get-OBSPagePeelShader + OBSPagePeelShader + Get + + Get-OBSPagePeelShader [[-Speed] <float>] [[-Position] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSPagePeelShader + + Speed + + + + + Float + + Float + + + + + + + Position + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Position + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSPagePeelTransitionShader + OBSPagePeelTransitionShader + Get + + Get-OBSPagePeelTransitionShader [[-ImageA] <string>] [[-ImageB] <string>] [[-TransitionTime] <float>] [[-PageColor] <string>] [[-PageTransparency] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSPagePeelTransitionShader + + ImageA + + + + + String + + String + + + + + + + ImageB + + + + + String + + String + + + + + + + TransitionTime + + + + + Float + + Float + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + PageColor + + + + + String + + String + + + + + + + PageTransparency + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + ImageA + + + + + String + + String + + + + + + + ImageB + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PageColor + + + + + String + + String + + + + + + + PageTransparency + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TransitionTime + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSPerlinNoiseShader + OBSPerlinNoiseShader + Get + + Get-OBSPerlinNoiseShader [[-Speed] <float>] [[-SpeedHorizonal] <float>] [[-SpeedVertical] <float>] [[-Iterations] <int>] [[-WhiteNoise] <float>] [[-BlackNoise] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Animated] [-ApplyToChannel] [-Inverted] [-Multiply] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSPerlinNoiseShader + + Speed + + + + + Float + + Float + + + + + + + Animated + + + + + Switch + + Switch + + + + + + + ApplyToChannel + + + + + Switch + + Switch + + + + + + + Inverted + + + + + Switch + + Switch + + + + + + + Multiply + + + + + Switch + + Switch + + + + + + + SpeedHorizonal + + + + + Float + + Float + + + + + + + SpeedVertical + + + + + Float + + Float + + + + + + + Iterations + + + + + Int + + Int + + + + + + + WhiteNoise + + + + + Float + + Float + + + + + + + BlackNoise + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Animated + + + + + Switch + + Switch + + + + + + + ApplyToChannel + + + + + Switch + + Switch + + + + + + + BlackNoise + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Inverted + + + + + Switch + + Switch + + + + + + + Iterations + + + + + Int + + Int + + + + + + + Multiply + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + SpeedHorizonal + + + + + Float + + Float + + + + + + + SpeedVertical + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + WhiteNoise + + + + + Float + + Float + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSPersistentData + OBSPersistentData + Get + + Get-OBSPersistentData : GetPersistentData + + 0.2 + + + Gets the value of a "slot" from the selected persistent data realm. + Get-OBSPersistentData calls the OBS WebSocket with a request of type GetPersistentData. + + + + Get-OBSPersistentData + + Realm + + The data realm to select. `OBS_WEBSOCKET_DATA_REALM_GLOBAL` or `OBS_WEBSOCKET_DATA_REALM_PROFILE` + + String + + String + + + + + + + SlotName + + The name of the slot to retrieve data from + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + Realm + + The data realm to select. `OBS_WEBSOCKET_DATA_REALM_GLOBAL` or `OBS_WEBSOCKET_DATA_REALM_PROFILE` + + String + + String + + + + + + + SlotName + + The name of the slot to retrieve data from + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getpersistentdata + + + + + + Get-OBSPieChartShader + OBSPieChartShader + Get + + Get-OBSPieChartShader [[-InnerRadius] <float>] [[-OuterRadius] <float>] [[-StartAngle] <float>] [[-Total] <int>] [[-Part1] <int>] [[-Color1] <string>] [[-Part2] <int>] [[-Color2] <string>] [[-Part3] <int>] [[-Color3] <string>] [[-Part4] <int>] [[-Color4] <string>] [[-Part5] <int>] [[-Color5] <string>] [[-Part6] <int>] [[-Color6] <string>] [[-Part7] <int>] [[-Color7] <string>] [[-Part8] <int>] [[-Color8] <string>] [[-Part9] <int>] [[-Color9] <string>] [[-Part10] <int>] [[-Color10] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSPieChartShader + + InnerRadius + + + + + Float + + Float + + + + + + + OuterRadius + + + + + Float + + Float + + + + + + + StartAngle + + + + + Float + + Float + + + + + + + Total + + + + + Int + + Int + + + + + + + Part1 + + + + + Int + + Int + + + + + + + Color1 + + + + + String + + String + + + + + + + Part2 + + + + + Int + + Int + + + + + + + Color2 + + + + + String + + String + + + + + + + Part3 + + + + + Int + + Int + + + + + + + Color3 + + + + + String + + String + + + + + + + Part4 + + + + + Int + + Int + + + + + + + Color4 + + + + + String + + String + + + + + + + Part5 + + + + + Int + + Int + + + + + + + Color5 + + + + + String + + String + + + + + + + Part6 + + + + + Int + + Int + + + + + + + Color6 + + + + + String + + String + + + + + + + Part7 + + + + + Int + + Int + + + + + + + Color7 + + + + + String + + String + + + + + + + Part8 + + + + + Int + + Int + + + + + + + Color8 + + + + + String + + String + + + + + + + Part9 + + + + + Int + + Int + + + + + + + Color9 + + + + + String + + String + + + + + + + Part10 + + + + + Int + + Int + + + + + + + Color10 + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Color1 + + + + + String + + String + + + + + + + Color10 + + + + + String + + String + + + + + + + Color2 + + + + + String + + String + + + + + + + Color3 + + + + + String + + String + + + + + + + Color4 + + + + + String + + String + + + + + + + Color5 + + + + + String + + String + + + + + + + Color6 + + + + + String + + String + + + + + + + Color7 + + + + + String + + String + + + + + + + Color8 + + + + + String + + String + + + + + + + Color9 + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + InnerRadius + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + OuterRadius + + + + + Float + + Float + + + + + + + Part1 + + + + + Int + + Int + + + + + + + Part10 + + + + + Int + + Int + + + + + + + Part2 + + + + + Int + + Int + + + + + + + Part3 + + + + + Int + + Int + + + + + + + Part4 + + + + + Int + + Int + + + + + + + Part5 + + + + + Int + + Int + + + + + + + Part6 + + + + + Int + + Int + + + + + + + Part7 + + + + + Int + + Int + + + + + + + Part8 + + + + + Int + + Int + + + + + + + Part9 + + + + + Int + + Int + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + StartAngle + + + + + Float + + Float + + + + + + + Total + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSPixelationShader + OBSPixelationShader + Get + + Get-OBSPixelationShader [[-TargetWidth] <float>] [[-TargetHeight] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSPixelationShader + + TargetWidth + + + + + Float + + Float + + + + + + + TargetHeight + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TargetHeight + + + + + Float + + Float + + + + + + + TargetWidth + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSPixelationTransitionShader + OBSPixelationTransitionShader + Get + + Get-OBSPixelationTransitionShader [[-TransitionTime] <float>] [[-Power] <float>] [[-CenterX] <float>] [[-CenterY] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ConvertLinear] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSPixelationTransitionShader + + TransitionTime + + + + + Float + + Float + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + Power + + + + + Float + + Float + + + + + + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + ConvertLinear + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Power + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TransitionTime + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSPolarShader + OBSPolarShader + Get + + Get-OBSPolarShader [[-CenterX] <float>] [[-CenterY] <float>] [[-PointY] <float>] [[-Rotate] <float>] [[-Repeat] <float>] [[-Scale] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Flip] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSPolarShader + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + PointY + + + + + Float + + Float + + + + + + + Flip + + + + + Switch + + Switch + + + + + + + Rotate + + + + + Float + + Float + + + + + + + Repeat + + + + + Float + + Float + + + + + + + Scale + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Flip + + + + + Switch + + Switch + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PointY + + + + + Float + + Float + + + + + + + Repeat + + + + + Float + + Float + + + + + + + Rotate + + + + + Float + + Float + + + + + + + Scale + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSProfile + OBSProfile + Get + + Get-OBSProfile : GetProfileList + + 0.2 + + + Gets an array of all profiles + Get-OBSProfile calls the OBS WebSocket with a request of type GetProfileList. + + + + Get-OBSProfile + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSProfile + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofilelist + + + + + + Get-OBSProfileParameter + OBSProfileParameter + Get + + Get-OBSProfileParameter : GetProfileParameter + + 0.2 + + + Gets a parameter from the current profile's configuration. + Get-OBSProfileParameter calls the OBS WebSocket with a request of type GetProfileParameter. + + + + Get-OBSProfileParameter + + ParameterCategory + + Category of the parameter to get + + String + + String + + + + + + + ParameterName + + Name of the parameter to get + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + ParameterCategory + + Category of the parameter to get + + String + + String + + + + + + + ParameterName + + Name of the parameter to get + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getprofileparameter + + + + + + Get-OBSPulseShader + OBSPulseShader + Get + + Get-OBSPulseShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-Speed] <float>] [[-MinGrowthPixels] <float>] [[-MaxGrowthPixels] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSPulseShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + Speed + + + + + Float + + Float + + + + + + + MinGrowthPixels + + + + + Float + + Float + + + + + + + MaxGrowthPixels + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + MaxGrowthPixels + + + + + Float + + Float + + + + + + + MinGrowthPixels + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRainbowShader + OBSRainbowShader + Get + + Get-OBSRainbowShader [[-Saturation] <float>] [[-Luminosity] <float>] [[-Spread] <float>] [[-Speed] <float>] [[-AlphaPercentage] <float>] [[-RotationOffset] <float>] [[-ColorToReplace] <string>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Vertical] [-Rotational] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRainbowShader + + Saturation + + + + + Float + + Float + + + + + + + Luminosity + + + + + Float + + Float + + + + + + + Spread + + + + + Float + + Float + + + + + + + Speed + + + + + Float + + Float + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + Vertical + + + + + Switch + + Switch + + + + + + + Rotational + + + + + Switch + + Switch + + + + + + + RotationOffset + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Luminosity + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + Rotational + + + + + Switch + + Switch + + + + + + + RotationOffset + + + + + Float + + Float + + + + + + + Saturation + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + Spread + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + Vertical + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRainWindowShader + OBSRainWindowShader + Get + + Get-OBSRainWindowShader [[-Size] <float>] [[-BlurSize] <float>] [[-TrailStrength] <float>] [[-TrailColor] <float>] [[-Speed] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-DebugShader] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRainWindowShader + + Size + + + + + Float + + Float + + + + + + + BlurSize + + + + + Float + + Float + + + + + + + TrailStrength + + + + + Float + + Float + + + + + + + TrailColor + + + + + Float + + Float + + + + + + + Speed + + + + + Float + + Float + + + + + + + DebugShader + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BlurSize + + + + + Float + + Float + + + + + + + DebugShader + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + Size + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + TrailColor + + + + + Float + + Float + + + + + + + TrailStrength + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRecordDirectory + OBSRecordDirectory + Get + + Get-OBSRecordDirectory : GetRecordDirectory + + 0.2 + + + Gets the current directory that the record output is set to. + Get-OBSRecordDirectory calls the OBS WebSocket with a request of type GetRecordDirectory. + + + + Get-OBSRecordDirectory + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSRecordDirectory + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecorddirectory + + + + + + Get-OBSRecordStatus + OBSRecordStatus + Get + + Get-OBSRecordStatus : GetRecordStatus + + 0.2 + + + Gets the status of the record output. + Get-OBSRecordStatus calls the OBS WebSocket with a request of type GetRecordStatus. + + + + Get-OBSRecordStatus + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSRecordStatus + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getrecordstatus + + + + + + Get-OBSRectangularDropShadowShader + OBSRectangularDropShadowShader + Get + + Get-OBSRectangularDropShadowShader [[-ShadowOffsetX] <int>] [[-ShadowOffsetY] <int>] [[-ShadowBlurSize] <int>] [[-ShadowColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRectangularDropShadowShader + + ShadowOffsetX + + + + + Int + + Int + + + + + + + ShadowOffsetY + + + + + Int + + Int + + + + + + + ShadowBlurSize + + + + + Int + + Int + + + + + + + ShadowColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + ShadowBlurSize + + + + + Int + + Int + + + + + + + ShadowColor + + + + + String + + String + + + + + + + ShadowOffsetX + + + + + Int + + Int + + + + + + + ShadowOffsetY + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSReflectShader + OBSReflectShader + Get + + Get-OBSReflectShader [[-CenterXPercent] <int>] [[-CenterYPercent] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Horizontal] [-Vertical] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSReflectShader + + Horizontal + + + + + Switch + + Switch + + + + + + + Vertical + + + + + Switch + + Switch + + + + + + + CenterXPercent + + + + + Int + + Int + + + + + + + CenterYPercent + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CenterXPercent + + + + + Int + + Int + + + + + + + CenterYPercent + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Horizontal + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + Vertical + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRemovePartialPixelsShader + OBSRemovePartialPixelsShader + Get + + Get-OBSRemovePartialPixelsShader [[-MinimumAlphaPercent] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRemovePartialPixelsShader + + MinimumAlphaPercent + + + + + Int + + Int + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + MinimumAlphaPercent + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRepeatShader + OBSRepeatShader + Get + + Get-OBSRepeatShader [[-ViewProj] <float[][]>] [[-ColorMatrix] <float[][]>] [[-ColorRangeMin] <float[]>] [[-ColorRangeMax] <float[]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-UvSize] <float[]>] [[-RandF] <float>] [[-Alpha] <float>] [[-Copies] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRepeatShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + ColorMatrix + + + + + System.Single[][] + + System.Single[][] + + + + + + + ColorRangeMin + + + + + System.Single[] + + System.Single[] + + + + + + + ColorRangeMax + + + + + System.Single[] + + System.Single[] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + Alpha + + + + + Float + + Float + + + + + + + Copies + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Alpha + + + + + Float + + Float + + + + + + + ColorMatrix + + + + + System.Single[][] + + System.Single[][] + + + + + + + ColorRangeMax + + + + + System.Single[] + + System.Single[] + + + + + + + ColorRangeMin + + + + + System.Single[] + + System.Single[] + + + + + + + Copies + + + + + Float + + Float + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRepeatTextureShader + OBSRepeatTextureShader + Get + + Get-OBSRepeatTextureShader [[-ViewProj] <float[][]>] [[-ColorMatrix] <float[][]>] [[-ColorRangeMin] <float[]>] [[-ColorRangeMax] <float[]>] [[-Image] <string>] [[-TexImage] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-UvSize] <float[]>] [[-RandF] <float>] [[-Blend] <float>] [[-Copies] <float>] [[-Notes] <string>] [[-AlphaPercentage] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRepeatTextureShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + ColorMatrix + + + + + System.Single[][] + + System.Single[][] + + + + + + + ColorRangeMin + + + + + System.Single[] + + System.Single[] + + + + + + + ColorRangeMax + + + + + System.Single[] + + System.Single[] + + + + + + + Image + + + + + String + + String + + + + + + + TexImage + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + Blend + + + + + Float + + Float + + + + + + + Copies + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + Blend + + + + + Float + + Float + + + + + + + ColorMatrix + + + + + System.Single[][] + + System.Single[][] + + + + + + + ColorRangeMax + + + + + System.Single[] + + System.Single[] + + + + + + + ColorRangeMin + + + + + System.Single[] + + System.Single[] + + + + + + + Copies + + + + + Float + + Float + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TexImage + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSReplayBufferStatus + OBSReplayBufferStatus + Get + + Get-OBSReplayBufferStatus : GetReplayBufferStatus + + 0.2 + + + Gets the status of the replay buffer output. + Get-OBSReplayBufferStatus calls the OBS WebSocket with a request of type GetReplayBufferStatus. + + + + Get-OBSReplayBufferStatus + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSReplayBufferStatus + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getreplaybufferstatus + + + + + + Get-OBSRGBAPercentShader + OBSRGBAPercentShader + Get + + Get-OBSRGBAPercentShader [[-RedPercent] <float>] [[-GreenPercent] <float>] [[-BluePercent] <float>] [[-AlphaPercent] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRGBAPercentShader + + RedPercent + + + + + Float + + Float + + + + + + + GreenPercent + + + + + Float + + Float + + + + + + + BluePercent + + + + + Float + + Float + + + + + + + AlphaPercent + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercent + + + + + Float + + Float + + + + + + + BluePercent + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GreenPercent + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RedPercent + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRgbColorWheelShader + OBSRgbColorWheelShader + Get + + Get-OBSRgbColorWheelShader [[-Speed] <float>] [[-ColorDepth] <float>] [[-ColorToReplace] <string>] [[-AlphaPercentage] <float>] [[-CenterWidthPercentage] <int>] [[-CenterHeightPercentage] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRgbColorWheelShader + + Speed + + + + + Float + + Float + + + + + + + ColorDepth + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + CenterWidthPercentage + + + + + Int + + Int + + + + + + + CenterHeightPercentage + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + CenterHeightPercentage + + + + + Int + + Int + + + + + + + CenterWidthPercentage + + + + + Int + + Int + + + + + + + ColorDepth + + + + + Float + + Float + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRgbSplitShader + OBSRgbSplitShader + Get + + Get-OBSRgbSplitShader [[-Redx] <float>] [[-Redy] <float>] [[-Greenx] <float>] [[-Greeny] <float>] [[-Bluex] <float>] [[-Bluey] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRgbSplitShader + + Redx + + + + + Float + + Float + + + + + + + Redy + + + + + Float + + Float + + + + + + + Greenx + + + + + Float + + Float + + + + + + + Greeny + + + + + Float + + Float + + + + + + + Bluex + + + + + Float + + Float + + + + + + + Bluey + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Bluex + + + + + Float + + Float + + + + + + + Bluey + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Greenx + + + + + Float + + Float + + + + + + + Greeny + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Redx + + + + + Float + + Float + + + + + + + Redy + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRgbvisibilityShader + OBSRgbvisibilityShader + Get + + Get-OBSRgbvisibilityShader [[-Red] <float>] [[-Green] <float>] [[-Blue] <float>] [[-RedVisibility] <float>] [[-GreenVisibility] <float>] [[-BlueVisibility] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRgbvisibilityShader + + Red + + + + + Float + + Float + + + + + + + Green + + + + + Float + + Float + + + + + + + Blue + + + + + Float + + Float + + + + + + + RedVisibility + + + + + Float + + Float + + + + + + + GreenVisibility + + + + + Float + + Float + + + + + + + BlueVisibility + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Blue + + + + + Float + + Float + + + + + + + BlueVisibility + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Green + + + + + Float + + Float + + + + + + + GreenVisibility + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Red + + + + + Float + + Float + + + + + + + RedVisibility + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRGSSAAShader + OBSRGSSAAShader + Get + + Get-OBSRGSSAAShader [[-ColorSigma] <float>] [[-SpatialSigma] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRGSSAAShader + + ColorSigma + + + + + Float + + Float + + + + + + + SpatialSigma + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ColorSigma + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpatialSigma + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRippleShader + OBSRippleShader + Get + + Get-OBSRippleShader [[-DistanceFactor] <float>] [[-TimeFactor] <float>] [[-PowerFactor] <float>] [[-CenterPosX] <float>] [[-CenterPosY] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRippleShader + + DistanceFactor + + + + + Float + + Float + + + + + + + TimeFactor + + + + + Float + + Float + + + + + + + PowerFactor + + + + + Float + + Float + + + + + + + CenterPosX + + + + + Float + + Float + + + + + + + CenterPosY + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CenterPosX + + + + + Float + + Float + + + + + + + CenterPosY + + + + + Float + + Float + + + + + + + DistanceFactor + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PowerFactor + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + TimeFactor + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRotatingSourceShader + OBSRotatingSourceShader + Get + + Get-OBSRotatingSourceShader [[-SpinSpeed] <float>] [[-Rotation] <float>] [[-Zoomin] <float>] [[-XCenter] <float>] [[-YCenter] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-KeepAspectratio] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRotatingSourceShader + + SpinSpeed + + + + + Float + + Float + + + + + + + Rotation + + + + + Float + + Float + + + + + + + Zoomin + + + + + Float + + Float + + + + + + + KeepAspectratio + + + + + Switch + + Switch + + + + + + + XCenter + + + + + Float + + Float + + + + + + + YCenter + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + KeepAspectratio + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Rotation + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpinSpeed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + XCenter + + + + + Float + + Float + + + + + + + YCenter + + + + + Float + + Float + + + + + + + Zoomin + + + + + Float + + Float + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRotatoeShader + OBSRotatoeShader + Get + + Get-OBSRotatoeShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-SpeedPercent] <int>] [[-AxisX] <float>] [[-AxisY] <float>] [[-AxisZ] <float>] [[-AngleDegrees] <float>] [[-CenterWidthPercentage] <int>] [[-CenterHeightPercentage] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-RotateTransform] [-RotatePixels] [-RotateColors] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRotatoeShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + AxisX + + + + + Float + + Float + + + + + + + AxisY + + + + + Float + + Float + + + + + + + AxisZ + + + + + Float + + Float + + + + + + + AngleDegrees + + + + + Float + + Float + + + + + + + RotateTransform + + + + + Switch + + Switch + + + + + + + RotatePixels + + + + + Switch + + Switch + + + + + + + RotateColors + + + + + Switch + + Switch + + + + + + + CenterWidthPercentage + + + + + Int + + Int + + + + + + + CenterHeightPercentage + + + + + Int + + Int + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AngleDegrees + + + + + Float + + Float + + + + + + + AxisX + + + + + Float + + Float + + + + + + + AxisY + + + + + Float + + Float + + + + + + + AxisZ + + + + + Float + + Float + + + + + + + CenterHeightPercentage + + + + + Int + + Int + + + + + + + CenterWidthPercentage + + + + + Int + + Int + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + RotateColors + + + + + Switch + + Switch + + + + + + + RotatePixels + + + + + Switch + + Switch + + + + + + + RotateTransform + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRoundedRect2Shader + OBSRoundedRect2Shader + Get + + Get-OBSRoundedRect2Shader [[-CornerRadius] <int>] [[-BorderThickness] <int>] [[-BorderColor] <string>] [[-BorderAlphaStart] <float>] [[-BorderAlphaEnd] <float>] [[-AlphaCutOff] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-FasterScan] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRoundedRect2Shader + + CornerRadius + + + + + Int + + Int + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderAlphaStart + + + + + Float + + Float + + + + + + + BorderAlphaEnd + + + + + Float + + Float + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + FasterScan + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + BorderAlphaEnd + + + + + Float + + Float + + + + + + + BorderAlphaStart + + + + + Float + + Float + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + CornerRadius + + + + + Int + + Int + + + + + + + FasterScan + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRoundedRectPerCornerShader + OBSRoundedRectPerCornerShader + Get + + Get-OBSRoundedRectPerCornerShader [[-CornerRadiusTl] <int>] [[-CornerRadiusTr] <int>] [[-CornerRadiusBr] <int>] [[-CornerRadiusBl] <int>] [[-BorderThickness] <int>] [[-BorderColor] <string>] [[-BorderAlphaStart] <float>] [[-BorderAlphaEnd] <float>] [[-AlphaCutOff] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRoundedRectPerCornerShader + + CornerRadiusTl + + + + + Int + + Int + + + + + + + CornerRadiusTr + + + + + Int + + Int + + + + + + + CornerRadiusBr + + + + + Int + + Int + + + + + + + CornerRadiusBl + + + + + Int + + Int + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderAlphaStart + + + + + Float + + Float + + + + + + + BorderAlphaEnd + + + + + Float + + Float + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + BorderAlphaEnd + + + + + Float + + Float + + + + + + + BorderAlphaStart + + + + + Float + + Float + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + CornerRadiusBl + + + + + Int + + Int + + + + + + + CornerRadiusBr + + + + + Int + + Int + + + + + + + CornerRadiusTl + + + + + Int + + Int + + + + + + + CornerRadiusTr + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRoundedRectPerSideShader + OBSRoundedRectPerSideShader + Get + + Get-OBSRoundedRectPerSideShader [[-CornerRadiusBottom] <int>] [[-CornerRadiusLeft] <int>] [[-CornerRadiusTop] <int>] [[-CornerRadiusRight] <int>] [[-BorderThickness] <int>] [[-BorderColor] <string>] [[-BorderAlphaStart] <float>] [[-BorderAlphaEnd] <float>] [[-AlphaCutOff] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRoundedRectPerSideShader + + CornerRadiusBottom + + + + + Int + + Int + + + + + + + CornerRadiusLeft + + + + + Int + + Int + + + + + + + CornerRadiusTop + + + + + Int + + Int + + + + + + + CornerRadiusRight + + + + + Int + + Int + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderAlphaStart + + + + + Float + + Float + + + + + + + BorderAlphaEnd + + + + + Float + + Float + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaCutOff + + + + + Float + + Float + + + + + + + BorderAlphaEnd + + + + + Float + + Float + + + + + + + BorderAlphaStart + + + + + Float + + Float + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + CornerRadiusBottom + + + + + Int + + Int + + + + + + + CornerRadiusLeft + + + + + Int + + Int + + + + + + + CornerRadiusRight + + + + + Int + + Int + + + + + + + CornerRadiusTop + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRoundedRectShader + OBSRoundedRectShader + Get + + Get-OBSRoundedRectShader [[-CornerRadius] <int>] [[-BorderThickness] <int>] [[-BorderColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRoundedRectShader + + CornerRadius + + + + + Int + + Int + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + BorderColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + CornerRadius + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRoundedStrokeGradientShader + OBSRoundedStrokeGradientShader + Get + + Get-OBSRoundedStrokeGradientShader [[-CornerRadius] <int>] [[-BorderThickness] <int>] [[-MinimumAlphaPercent] <int>] [[-RotationSpeed] <int>] [[-BorderColorL] <string>] [[-BorderColorR] <string>] [[-CenterWidth] <int>] [[-CenterHeight] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRoundedStrokeGradientShader + + CornerRadius + + + + + Int + + Int + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + MinimumAlphaPercent + + + + + Int + + Int + + + + + + + RotationSpeed + + + + + Int + + Int + + + + + + + BorderColorL + + + + + String + + String + + + + + + + BorderColorR + + + + + String + + String + + + + + + + CenterWidth + + + + + Int + + Int + + + + + + + CenterHeight + + + + + Int + + Int + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BorderColorL + + + + + String + + String + + + + + + + BorderColorR + + + + + String + + String + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + CenterHeight + + + + + Int + + Int + + + + + + + CenterWidth + + + + + Int + + Int + + + + + + + CornerRadius + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + MinimumAlphaPercent + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RotationSpeed + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSRoundedStrokeShader + OBSRoundedStrokeShader + Get + + Get-OBSRoundedStrokeShader [[-CornerRadius] <int>] [[-BorderThickness] <int>] [[-MinimumAlphaPercent] <int>] [[-BorderColor] <string>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSRoundedStrokeShader + + CornerRadius + + + + + Int + + Int + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + MinimumAlphaPercent + + + + + Int + + Int + + + + + + + BorderColor + + + + + String + + String + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BorderColor + + + + + String + + String + + + + + + + BorderThickness + + + + + Int + + Int + + + + + + + CornerRadius + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + MinimumAlphaPercent + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSScanLineShader + OBSScanLineShader + Get + + Get-OBSScanLineShader [[-Speed] <float>] [[-Angle] <float>] [[-Floor] <float>] [[-Period] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Lengthwise] [-Animate] [-Shift] [-Boost] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSScanLineShader + + Lengthwise + + + + + Switch + + Switch + + + + + + + Animate + + + + + Switch + + Switch + + + + + + + Speed + + + + + Float + + Float + + + + + + + Angle + + + + + Float + + Float + + + + + + + Shift + + + + + Switch + + Switch + + + + + + + Boost + + + + + Switch + + Switch + + + + + + + Floor + + + + + Float + + Float + + + + + + + Period + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Angle + + + + + Float + + Float + + + + + + + Animate + + + + + Switch + + Switch + + + + + + + Boost + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Floor + + + + + Float + + Float + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Lengthwise + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Period + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + Shift + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSScene + OBSScene + Get + + Get-OBSScene : GetSceneList + + 0.2 + + + Gets an array of all scenes in OBS. + Get-OBSScene calls the OBS WebSocket with a request of type GetSceneList. + + + + Get-OBSScene + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSScene + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenelist + + + + + + Get-OBSSceneCollection + OBSSceneCollection + Get + + Get-OBSSceneCollection : GetSceneCollectionList + + 0.2 + + + Gets an array of all scene collections + Get-OBSSceneCollection calls the OBS WebSocket with a request of type GetSceneCollectionList. + + + + Get-OBSSceneCollection + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSSceneCollection + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenecollectionlist + + + + + + Get-OBSSceneItem + OBSSceneItem + Get + + Get-OBSSceneItem : GetSceneItemList + + 0.2 + + + Gets a list of all scene items in a scene. + Scenes only + Get-OBSSceneItem calls the OBS WebSocket with a request of type GetSceneItemList. + + + + Get-OBSSceneItem + + SceneName + + Name of the scene to get the items of + + String + + String + + + + + + + SceneUuid + + UUID of the scene to get the items of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Name of the scene to get the items of + + String + + String + + + + + + + SceneUuid + + UUID of the scene to get the items of + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlist + + + + + + Get-OBSSceneItemBlendMode + OBSSceneItemBlendMode + Get + + Get-OBSSceneItemBlendMode : GetSceneItemBlendMode + + 0.2 + + + Gets the blend mode of a scene item. + Blend modes: + - `OBS_BLEND_NORMAL` + - `OBS_BLEND_ADDITIVE` + - `OBS_BLEND_SUBTRACT` + - `OBS_BLEND_SCREEN` + - `OBS_BLEND_MULTIPLY` + - `OBS_BLEND_LIGHTEN` + - `OBS_BLEND_DARKEN` + Scenes and Groups + Get-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type GetSceneItemBlendMode. + + + + Get-OBSSceneItemBlendMode + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemblendmode + + + + + + Get-OBSSceneItemEnabled + OBSSceneItemEnabled + Get + + Get-OBSSceneItemEnabled : GetSceneItemEnabled + + 0.2 + + + Gets the enable state of a scene item. + Scenes and Groups + Get-OBSSceneItemEnabled calls the OBS WebSocket with a request of type GetSceneItemEnabled. + + + + Get-OBSSceneItemEnabled + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemenabled + + + + + + Get-OBSSceneItemId + OBSSceneItemId + Get + + Get-OBSSceneItemId : GetSceneItemId + + 0.2 + + + Searches a scene for a source, and returns its id. + Scenes and Groups + Get-OBSSceneItemId calls the OBS WebSocket with a request of type GetSceneItemId. + + + + Get-OBSSceneItemId + + SceneName + + Name of the scene or group to search in + + String + + String + + + + + + + SceneUuid + + UUID of the scene or group to search in + + String + + String + + + + + + + SourceName + + Name of the source to find + + String + + String + + + + + + + SearchOffset + + Number of matches to skip during search. >= 0 means first forward. -1 means last (top) item + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Name of the scene or group to search in + + String + + String + + + + + + + SceneUuid + + UUID of the scene or group to search in + + String + + String + + + + + + + SearchOffset + + Number of matches to skip during search. >= 0 means first forward. -1 means last (top) item + + Double + + Double + + + + + + + SourceName + + Name of the source to find + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemid + + + + + + Get-OBSSceneItemIndex + OBSSceneItemIndex + Get + + Get-OBSSceneItemIndex : GetSceneItemIndex + + 0.2 + + + Gets the index position of a scene item in a scene. + An index of 0 is at the bottom of the source list in the UI. + Scenes and Groups + Get-OBSSceneItemIndex calls the OBS WebSocket with a request of type GetSceneItemIndex. + + + + Get-OBSSceneItemIndex + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemindex + + + + + + Get-OBSSceneItemLocked + OBSSceneItemLocked + Get + + Get-OBSSceneItemLocked : GetSceneItemLocked + + 0.2 + + + Gets the lock state of a scene item. + Scenes and Groups + Get-OBSSceneItemLocked calls the OBS WebSocket with a request of type GetSceneItemLocked. + + + + Get-OBSSceneItemLocked + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemlocked + + + + + + Get-OBSSceneItemSource + OBSSceneItemSource + Get + + Get-OBSSceneItemSource : GetSceneItemSource + + 0.2 + + + Gets the source associated with a scene item. + Get-OBSSceneItemSource calls the OBS WebSocket with a request of type GetSceneItemSource. + + + + Get-OBSSceneItemSource + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemsource + + + + + + Get-OBSSceneItemTransform + OBSSceneItemTransform + Get + + Get-OBSSceneItemTransform : GetSceneItemTransform + + 0.2 + + + Gets the transform and crop info of a scene item. + Scenes and Groups + Get-OBSSceneItemTransform calls the OBS WebSocket with a request of type GetSceneItemTransform. + + + + Get-OBSSceneItemTransform + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsceneitemtransform + + + + + + Get-OBSSceneSceneTransitionOverride + OBSSceneSceneTransitionOverride + Get + + Get-OBSSceneSceneTransitionOverride : GetSceneSceneTransitionOverride + + 0.2 + + + Gets the scene transition overridden for a scene. + Note: A transition UUID response field is not currently able to be implemented as of 2024-1-18. + Get-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type GetSceneSceneTransitionOverride. + + + + Get-OBSSceneSceneTransitionOverride + + SceneName + + Name of the scene + + String + + String + + + + + + + SceneUuid + + UUID of the scene + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Name of the scene + + String + + String + + + + + + + SceneUuid + + UUID of the scene + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenescenetransitionoverride + + + + + + Get-OBSSceneTransition + OBSSceneTransition + Get + + Get-OBSSceneTransition : GetSceneTransitionList + + 0.2 + + + Gets an array of all scene transitions in OBS. + Get-OBSSceneTransition calls the OBS WebSocket with a request of type GetSceneTransitionList. + + + + Get-OBSSceneTransition + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSSceneTransition + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getscenetransitionlist + + + + + + Get-OBSSeascapeShader + OBSSeascapeShader + Get + + Get-OBSSeascapeShader [[-SEAHEIGHT] <float>] [[-SEACHOPPY] <float>] [[-SEASPEED] <float>] [[-SEAFREQ] <float>] [[-SEABASE] <string>] [[-SEAWATERCOLOR] <string>] [[-CAMERASPEED] <float>] [[-CAMERATURNSPEED] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-AA] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSSeascapeShader + + AA + + + + + Switch + + Switch + + + + + + + SEAHEIGHT + + + + + Float + + Float + + + + + + + SEACHOPPY + + + + + Float + + Float + + + + + + + SEASPEED + + + + + Float + + Float + + + + + + + SEAFREQ + + + + + Float + + Float + + + + + + + SEABASE + + + + + String + + String + + + + + + + SEAWATERCOLOR + + + + + String + + String + + + + + + + CAMERASPEED + + + + + Float + + Float + + + + + + + CAMERATURNSPEED + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AA + + + + + Switch + + Switch + + + + + + + CAMERASPEED + + + + + Float + + Float + + + + + + + CAMERATURNSPEED + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + SEABASE + + + + + String + + String + + + + + + + SEACHOPPY + + + + + Float + + Float + + + + + + + SEAFREQ + + + + + Float + + Float + + + + + + + SEAHEIGHT + + + + + Float + + Float + + + + + + + SEASPEED + + + + + Float + + Float + + + + + + + SEAWATERCOLOR + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSSeasickShader + OBSSeasickShader + Get + + Get-OBSSeasickShader [[-Notes] <string>] [[-Amplitude] <float>] [[-Speed] <float>] [[-Frequency] <float>] [[-Opacity] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSSeasickShader + + Notes + + + + + String + + String + + + + + + + Amplitude + + + + + Float + + Float + + + + + + + Speed + + + + + Float + + Float + + + + + + + Frequency + + + + + Float + + Float + + + + + + + Opacity + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Amplitude + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Frequency + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + Opacity + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSSelectiveColorShader + OBSSelectiveColorShader + Get + + Get-OBSSelectiveColorShader [[-CutoffRed] <float>] [[-CutoffGreen] <float>] [[-CutoffBlue] <float>] [[-CutoffYellow] <float>] [[-AcceptanceAmplifier] <float>] [[-Notes] <string>] [[-BackgroundType] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ShowRed] [-ShowGreen] [-ShowBlue] [-ShowYellow] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSSelectiveColorShader + + CutoffRed + + + + + Float + + Float + + + + + + + CutoffGreen + + + + + Float + + Float + + + + + + + CutoffBlue + + + + + Float + + Float + + + + + + + CutoffYellow + + + + + Float + + Float + + + + + + + AcceptanceAmplifier + + + + + Float + + Float + + + + + + + ShowRed + + + + + Switch + + Switch + + + + + + + ShowGreen + + + + + Switch + + Switch + + + + + + + ShowBlue + + + + + Switch + + Switch + + + + + + + ShowYellow + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + BackgroundType + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AcceptanceAmplifier + + + + + Float + + Float + + + + + + + BackgroundType + + + + + Int + + Int + + + + + + + CutoffBlue + + + + + Float + + Float + + + + + + + CutoffGreen + + + + + Float + + Float + + + + + + + CutoffRed + + + + + Float + + Float + + + + + + + CutoffYellow + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + ShowBlue + + + + + Switch + + Switch + + + + + + + ShowGreen + + + + + Switch + + Switch + + + + + + + ShowRed + + + + + Switch + + Switch + + + + + + + ShowYellow + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSShakeShader + OBSShakeShader + Get + + Get-OBSShakeShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-LocalTime] <float>] [[-RandomScale] <float>] [[-Speed] <float>] [[-MinGrowthPixels] <float>] [[-MaxGrowthPixels] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Worble] [-RandomizeMovement] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSShakeShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + RandomScale + + + + + Float + + Float + + + + + + + Worble + + + + + Switch + + Switch + + + + + + + Speed + + + + + Float + + Float + + + + + + + MinGrowthPixels + + + + + Float + + Float + + + + + + + MaxGrowthPixels + + + + + Float + + Float + + + + + + + RandomizeMovement + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + LocalTime + + + + + Float + + Float + + + + + + + MaxGrowthPixels + + + + + Float + + Float + + + + + + + MinGrowthPixels + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + RandomizeMovement + + + + + Switch + + Switch + + + + + + + RandomScale + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Speed + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Worble + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSShineShader + OBSShineShader + Get + + Get-OBSShineShader [[-LTex] <string>] [[-ShineColor] <string>] [[-SpeedPercent] <int>] [[-GradientPercent] <int>] [[-DelayPercent] <int>] [[-Notes] <string>] [[-StartAdjust] <float>] [[-StopAdjust] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ApplyToAlphaLayer] [-Ease] [-Hide] [-Reverse] [-OneDirection] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSShineShader + + LTex + + + + + String + + String + + + + + + + ShineColor + + + + + String + + String + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + GradientPercent + + + + + Int + + Int + + + + + + + DelayPercent + + + + + Int + + Int + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + Hide + + + + + Switch + + Switch + + + + + + + Reverse + + + + + Switch + + Switch + + + + + + + OneDirection + + + + + Switch + + Switch + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + StartAdjust + + + + + Float + + Float + + + + + + + StopAdjust + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + DelayPercent + + + + + Int + + Int + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + GradientPercent + + + + + Int + + Int + + + + + + + Hide + + + + + Switch + + Switch + + + + + + + LTex + + + + + String + + String + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + OneDirection + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Reverse + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + ShineColor + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + StartAdjust + + + + + Float + + Float + + + + + + + StopAdjust + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSSimpleGradientShader + OBSSimpleGradientShader + Get + + Get-OBSSimpleGradientShader [[-SpeedPercentage] <int>] [[-AlphaPercentage] <int>] [[-ColorToReplace] <string>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-LensFlair] [-AnimateLensFlair] [-ApplyToAlphaLayer] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSSimpleGradientShader + + SpeedPercentage + + + + + Int + + Int + + + + + + + AlphaPercentage + + + + + Int + + Int + + + + + + + LensFlair + + + + + Switch + + Switch + + + + + + + AnimateLensFlair + + + + + Switch + + Switch + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Int + + Int + + + + + + + AnimateLensFlair + + + + + Switch + + Switch + + + + + + + ApplyToAlphaLayer + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + LensFlair + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedPercentage + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSSimplexNoiseShader + OBSSimplexNoiseShader + Get + + Get-OBSSimplexNoiseShader [[-SnapPercent] <float>] [[-SpeedPercent] <float>] [[-Resolution] <float>] [[-ForeColor] <string>] [[-BackColor] <string>] [[-AlphaPercent] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Fractal] [-UseAlphaLayer] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSSimplexNoiseShader + + SnapPercent + + + + + Float + + Float + + + + + + + SpeedPercent + + + + + Float + + Float + + + + + + + Resolution + + + + + Float + + Float + + + + + + + Fractal + + + + + Switch + + Switch + + + + + + + UseAlphaLayer + + + + + Switch + + Switch + + + + + + + ForeColor + + + + + String + + String + + + + + + + BackColor + + + + + String + + String + + + + + + + AlphaPercent + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercent + + + + + Float + + Float + + + + + + + BackColor + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + ForeColor + + + + + String + + String + + + + + + + Fractal + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Resolution + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SnapPercent + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedPercent + + + + + Float + + Float + + + + + + + UseAlphaLayer + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSSmartDenoiseShader + OBSSmartDenoiseShader + Get + + Get-OBSSmartDenoiseShader [[-USigma] <float>] [[-UKSigma] <float>] [[-UThreshold] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSSmartDenoiseShader + + USigma + + + + + Float + + Float + + + + + + + UKSigma + + + + + Float + + Float + + + + + + + UThreshold + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UKSigma + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + USigma + + + + + Float + + Float + + + + + + + UThreshold + + + + + Float + + Float + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSSourceActive + OBSSourceActive + Get + + Get-OBSSourceActive : GetSourceActive + + 0.2 + + + Gets the active and show state of a source. + **Compatible with inputs and scenes.** + Get-OBSSourceActive calls the OBS WebSocket with a request of type GetSourceActive. + + + + Get-OBSSourceActive + + SourceName + + Name of the source to get the active state of + + String + + String + + + + + + + SourceUuid + + UUID of the source to get the active state of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source to get the active state of + + String + + String + + + + + + + SourceUuid + + UUID of the source to get the active state of + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourceactive + + + + + + Get-OBSSourceFilter + OBSSourceFilter + Get + + Get-OBSSourceFilter : GetSourceFilter + + 0.2 + + + Gets the info for a specific source filter. + Get-OBSSourceFilter calls the OBS WebSocket with a request of type GetSourceFilter. + + + + Get-OBSSourceFilter + + SourceName + + Name of the source + + String + + String + + + + + + + SourceUuid + + UUID of the source + + String + + String + + + + + + + FilterName + + Name of the filter + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + FilterName + + Name of the filter + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source + + String + + String + + + + + + + SourceUuid + + UUID of the source + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilter + + + + + + Get-OBSSourceFilterDefaultSettings + OBSSourceFilterDefaultSettings + Get + + Get-OBSSourceFilterDefaultSettings : GetSourceFilterDefaultSettings + + 0.2 + + + Gets the default settings for a filter kind. + Get-OBSSourceFilterDefaultSettings calls the OBS WebSocket with a request of type GetSourceFilterDefaultSettings. + + + + Get-OBSSourceFilterDefaultSettings + + FilterKind + + Filter kind to get the default settings for + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + FilterKind + + Filter kind to get the default settings for + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterdefaultsettings + + + + + + Get-OBSSourceFilterKind + OBSSourceFilterKind + Get + + Get-OBSSourceFilterKind : GetSourceFilterKindList + + 0.2 + + + Gets an array of all available source filter kinds. + Similar to `GetInputKindList` + Get-OBSSourceFilterKind calls the OBS WebSocket with a request of type GetSourceFilterKindList. + + + + Get-OBSSourceFilterKind + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSSourceFilterKind + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterkindlist + + + + + + Get-OBSSourceFilterList + OBSSourceFilterList + Get + + Get-OBSSourceFilterList : GetSourceFilterList + + 0.2 + + + Gets an array of all of a source's filters. + Get-OBSSourceFilterList calls the OBS WebSocket with a request of type GetSourceFilterList. + + + + Get-OBSSourceFilterList + + SourceName + + Name of the source + + String + + String + + + + + + + SourceUuid + + UUID of the source + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source + + String + + String + + + + + + + SourceUuid + + UUID of the source + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcefilterlist + + + + + + Get-OBSSourceScreenshot + OBSSourceScreenshot + Get + + Get-OBSSourceScreenshot : GetSourceScreenshot + + 0.2 + + + Gets a Base64-encoded screenshot of a source. + The `imageWidth` and `imageHeight` parameters are treated as "scale to inner", meaning the smallest ratio will be used and the aspect ratio of the original resolution is kept. + If `imageWidth` and `imageHeight` are not specified, the compressed image will use the full resolution of the source. + **Compatible with inputs and scenes.** + Get-OBSSourceScreenshot calls the OBS WebSocket with a request of type GetSourceScreenshot. + + + + Get-OBSSourceScreenshot + + SourceName + + Name of the source to take a screenshot of + + String + + String + + + + + + + SourceUuid + + UUID of the source to take a screenshot of + + String + + String + + + + + + + ImageFormat + + Image compression format to use. Use `GetVersion` to get compatible image formats + + String + + String + + + + + + + ImageWidth + + Width to scale the screenshot to + + Double + + Double + + + + + + + ImageHeight + + Height to scale the screenshot to + + Double + + Double + + + + + + + ImageCompressionQuality + + Compression quality to use. 0 for high compression, 100 for uncompressed. -1 to use "default" (whatever that means, idk) + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + ImageCompressionQuality + + Compression quality to use. 0 for high compression, 100 for uncompressed. -1 to use "default" (whatever that means, idk) + + Double + + Double + + + + + + + ImageFormat + + Image compression format to use. Use `GetVersion` to get compatible image formats + + String + + String + + + + + + + ImageHeight + + Height to scale the screenshot to + + Double + + Double + + + + + + + ImageWidth + + Width to scale the screenshot to + + Double + + Double + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source to take a screenshot of + + String + + String + + + + + + + SourceUuid + + UUID of the source to take a screenshot of + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getsourcescreenshot + + + + + + Get-OBSSpecialInputs + OBSSpecialInputs + Get + + Get-OBSSpecialInputs : GetSpecialInputs + + 0.2 + + + Gets the names of all special inputs. + Get-OBSSpecialInputs calls the OBS WebSocket with a request of type GetSpecialInputs. + + + + Get-OBSSpecialInputs + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSSpecialInputs + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getspecialinputs + + + + + + Get-OBSSpecularShineShader + OBSSpecularShineShader + Get + + Get-OBSSpecularShineShader [[-Hint] <string>] [[-Roughness] <float>] [[-LightStrength] <float>] [[-LightPositionX] <float>] [[-LightPositionY] <float>] [[-FlattenNormal] <float>] [[-StretchNormalX] <float>] [[-StretchNormalY] <float>] [[-LightColor] <float[]>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSSpecularShineShader + + Hint + + + + + String + + String + + + + + + + Roughness + + + + + Float + + Float + + + + + + + LightStrength + + + + + Float + + Float + + + + + + + LightPositionX + + + + + Float + + Float + + + + + + + LightPositionY + + + + + Float + + Float + + + + + + + FlattenNormal + + + + + Float + + Float + + + + + + + StretchNormalX + + + + + Float + + Float + + + + + + + StretchNormalY + + + + + Float + + Float + + + + + + + LightColor + + + + + System.Single[] + + System.Single[] + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + FlattenNormal + + + + + Float + + Float + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Hint + + + + + String + + String + + + + + + + LightColor + + + + + System.Single[] + + System.Single[] + + + + + + + LightPositionX + + + + + Float + + Float + + + + + + + LightPositionY + + + + + Float + + Float + + + + + + + LightStrength + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Roughness + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + StretchNormalX + + + + + Float + + Float + + + + + + + StretchNormalY + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSSpotlightShader + OBSSpotlightShader + Get + + Get-OBSSpotlightShader [[-SpeedPercent] <float>] [[-FocusPercent] <float>] [[-SpotlightColor] <string>] [[-HorizontalOffset] <float>] [[-VerticalOffset] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSSpotlightShader + + SpeedPercent + + + + + Float + + Float + + + + + + + FocusPercent + + + + + Float + + Float + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + SpotlightColor + + + + + String + + String + + + + + + + HorizontalOffset + + + + + Float + + Float + + + + + + + VerticalOffset + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + FocusPercent + + + + + Float + + Float + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + HorizontalOffset + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedPercent + + + + + Float + + Float + + + + + + + SpotlightColor + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + VerticalOffset + + + + + Float + + Float + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSStats + OBSStats + Get + + Get-OBSStats : GetStats + + 0.2 + + + Gets statistics about OBS, obs-websocket, and the current session. + Get-OBSStats calls the OBS WebSocket with a request of type GetStats. + + + + Get-OBSStats + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSStats + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstats + + + + + + Get-OBSStreamServiceSettings + OBSStreamServiceSettings + Get + + Get-OBSStreamServiceSettings : GetStreamServiceSettings + + 0.2 + + + Gets the current stream service settings (stream destination). + Get-OBSStreamServiceSettings calls the OBS WebSocket with a request of type GetStreamServiceSettings. + + + + Get-OBSStreamServiceSettings + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSStreamServiceSettings + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamservicesettings + + + + + + Get-OBSStreamStatus + OBSStreamStatus + Get + + Get-OBSStreamStatus : GetStreamStatus + + 0.2 + + + Gets the status of the stream output. + Get-OBSStreamStatus calls the OBS WebSocket with a request of type GetStreamStatus. + + + + Get-OBSStreamStatus + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSStreamStatus + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstreamstatus + + + + + + Get-OBSStudioModeEnabled + OBSStudioModeEnabled + Get + + Get-OBSStudioModeEnabled : GetStudioModeEnabled + + 0.2 + + + Gets whether studio is enabled. + Get-OBSStudioModeEnabled calls the OBS WebSocket with a request of type GetStudioModeEnabled. + + + + Get-OBSStudioModeEnabled + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSStudioModeEnabled + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getstudiomodeenabled + + + + + + Get-OBSSwirlShader + OBSSwirlShader + Get + + Get-OBSSwirlShader [[-Radius] <float>] [[-Angle] <float>] [[-CenterX] <float>] [[-CenterY] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Animate] [-Inverse] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSSwirlShader + + Radius + + + + + Float + + Float + + + + + + + Angle + + + + + Float + + Float + + + + + + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + Animate + + + + + Switch + + Switch + + + + + + + Inverse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Angle + + + + + Float + + Float + + + + + + + Animate + + + + + Switch + + Switch + + + + + + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Inverse + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Radius + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSTetraShader + OBSTetraShader + Get + + Get-OBSTetraShader [[-RedR] <float>] [[-RedG] <float>] [[-RedB] <float>] [[-YelR] <float>] [[-YelG] <float>] [[-YelB] <float>] [[-GrnR] <float>] [[-GrnG] <float>] [[-GrnB] <float>] [[-CynR] <float>] [[-CynG] <float>] [[-CynB] <float>] [[-BluR] <float>] [[-BluG] <float>] [[-BluB] <float>] [[-MagR] <float>] [[-MagG] <float>] [[-MagB] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSTetraShader + + RedR + + + + + Float + + Float + + + + + + + RedG + + + + + Float + + Float + + + + + + + RedB + + + + + Float + + Float + + + + + + + YelR + + + + + Float + + Float + + + + + + + YelG + + + + + Float + + Float + + + + + + + YelB + + + + + Float + + Float + + + + + + + GrnR + + + + + Float + + Float + + + + + + + GrnG + + + + + Float + + Float + + + + + + + GrnB + + + + + Float + + Float + + + + + + + CynR + + + + + Float + + Float + + + + + + + CynG + + + + + Float + + Float + + + + + + + CynB + + + + + Float + + Float + + + + + + + BluR + + + + + Float + + Float + + + + + + + BluG + + + + + Float + + Float + + + + + + + BluB + + + + + Float + + Float + + + + + + + MagR + + + + + Float + + Float + + + + + + + MagG + + + + + Float + + Float + + + + + + + MagB + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + BluB + + + + + Float + + Float + + + + + + + BluG + + + + + Float + + Float + + + + + + + BluR + + + + + Float + + Float + + + + + + + CynB + + + + + Float + + Float + + + + + + + CynG + + + + + Float + + Float + + + + + + + CynR + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + GrnB + + + + + Float + + Float + + + + + + + GrnG + + + + + Float + + Float + + + + + + + GrnR + + + + + Float + + Float + + + + + + + MagB + + + + + Float + + Float + + + + + + + MagG + + + + + Float + + Float + + + + + + + MagR + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RedB + + + + + Float + + Float + + + + + + + RedG + + + + + Float + + Float + + + + + + + RedR + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + YelB + + + + + Float + + Float + + + + + + + YelG + + + + + Float + + Float + + + + + + + YelR + + + + + Float + + Float + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSThermalShader + OBSThermalShader + Get + + Get-OBSThermalShader [[-Strength] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSThermalShader + + Strength + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Strength + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSTransitionKind + OBSTransitionKind + Get + + Get-OBSTransitionKind : GetTransitionKindList + + 0.2 + + + Gets an array of all available transition kinds. + Similar to `GetInputKindList` + Get-OBSTransitionKind calls the OBS WebSocket with a request of type GetTransitionKindList. + + + + Get-OBSTransitionKind + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSTransitionKind + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#gettransitionkindlist + + + + + + Get-OBSTvCrtSubpixelShader + OBSTvCrtSubpixelShader + Get + + Get-OBSTvCrtSubpixelShader [[-ChannelWidth] <int>] [[-ChannelHeight] <int>] [[-HGap] <int>] [[-VGap] <int>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSTvCrtSubpixelShader + + ChannelWidth + + + + + Int + + Int + + + + + + + ChannelHeight + + + + + Int + + Int + + + + + + + HGap + + + + + Int + + Int + + + + + + + VGap + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ChannelHeight + + + + + Int + + Int + + + + + + + ChannelWidth + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + HGap + + + + + Int + + Int + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + VGap + + + + + Int + + Int + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSTwistShader + OBSTwistShader + Get + + Get-OBSTwistShader [[-CenterXPercent] <int>] [[-CenterYPercent] <int>] [[-Power] <float>] [[-Rotation] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSTwistShader + + CenterXPercent + + + + + Int + + Int + + + + + + + CenterYPercent + + + + + Int + + Int + + + + + + + Power + + + + + Float + + Float + + + + + + + Rotation + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CenterXPercent + + + + + Int + + Int + + + + + + + CenterYPercent + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Power + + + + + Float + + Float + + + + + + + Rotation + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSTwoPassDropShadowShader + OBSTwoPassDropShadowShader + Get + + Get-OBSTwoPassDropShadowShader [[-ViewProj] <float[][]>] [[-Image] <string>] [[-ElapsedTime] <float>] [[-UvOffset] <float[]>] [[-UvScale] <float[]>] [[-UvPixelInterval] <float[]>] [[-RandF] <float>] [[-UvSize] <float[]>] [[-ShadowOffsetX] <int>] [[-ShadowOffsetY] <int>] [[-ShadowBlurSize] <int>] [[-ShadowColor] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-IsAlphaPremultiplied] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSTwoPassDropShadowShader + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + Image + + + + + String + + String + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + RandF + + + + + Float + + Float + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ShadowOffsetX + + + + + Int + + Int + + + + + + + ShadowOffsetY + + + + + Int + + Int + + + + + + + ShadowBlurSize + + + + + Int + + Int + + + + + + + ShadowColor + + + + + String + + String + + + + + + + IsAlphaPremultiplied + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + ElapsedTime + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Image + + + + + String + + String + + + + + + + IsAlphaPremultiplied + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + RandF + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + ShadowBlurSize + + + + + Int + + Int + + + + + + + ShadowColor + + + + + String + + String + + + + + + + ShadowOffsetX + + + + + Int + + Int + + + + + + + ShadowOffsetY + + + + + Int + + Int + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + UvOffset + + + + + System.Single[] + + System.Single[] + + + + + + + UvPixelInterval + + + + + System.Single[] + + System.Single[] + + + + + + + UvScale + + + + + System.Single[] + + System.Single[] + + + + + + + UvSize + + + + + System.Single[] + + System.Single[] + + + + + + + ViewProj + + + + + System.Single[][] + + System.Single[][] + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSVCRShader + OBSVCRShader + Get + + Get-OBSVCRShader [[-VerticalShift] <float>] [[-Distort] <float>] [[-Vignet] <float>] [[-Stripe] <float>] [[-VerticalFactor] <float>] [[-VerticalHeight] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSVCRShader + + VerticalShift + + + + + Float + + Float + + + + + + + Distort + + + + + Float + + Float + + + + + + + Vignet + + + + + Float + + Float + + + + + + + Stripe + + + + + Float + + Float + + + + + + + VerticalFactor + + + + + Float + + Float + + + + + + + VerticalHeight + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Distort + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + Stripe + + + + + Float + + Float + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + VerticalFactor + + + + + Float + + Float + + + + + + + VerticalHeight + + + + + Float + + Float + + + + + + + VerticalShift + + + + + Float + + Float + + + + + + + Vignet + + + + + Float + + Float + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSVersion + OBSVersion + Get + + Get-OBSVersion : GetVersion + + 0.2 + + + Gets data about the current plugin and RPC version. + Get-OBSVersion calls the OBS WebSocket with a request of type GetVersion. + + + + Get-OBSVersion + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSVersion + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getversion + + + + + + Get-OBSVHSShader + OBSVHSShader + Get + + Get-OBSVHSShader [[-Range] <float>] [[-OffsetIntensity] <float>] [[-NoiseQuality] <float>] [[-NoiseIntensity] <float>] [[-ColorOffsetIntensity] <float>] [[-AlphaPercentage] <float>] [[-ColorToReplace] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-ApplyToImage] [-ReplaceImageColor] [-ApplyToSpecificColor] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSVHSShader + + Range + + + + + Float + + Float + + + + + + + OffsetIntensity + + + + + Float + + Float + + + + + + + NoiseQuality + + + + + Float + + Float + + + + + + + NoiseIntensity + + + + + Float + + Float + + + + + + + ColorOffsetIntensity + + + + + Float + + Float + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + AlphaPercentage + + + + + Float + + Float + + + + + + + ApplyToImage + + + + + Switch + + Switch + + + + + + + ApplyToSpecificColor + + + + + Switch + + Switch + + + + + + + ColorOffsetIntensity + + + + + Float + + Float + + + + + + + ColorToReplace + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoiseIntensity + + + + + Float + + Float + + + + + + + NoiseQuality + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + OffsetIntensity + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Range + + + + + Float + + Float + + + + + + + ReplaceImageColor + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSVideoSettings + OBSVideoSettings + Get + + Get-OBSVideoSettings : GetVideoSettings + + 0.2 + + + Gets the current video settings. + Note: To get the true FPS value, divide the FPS numerator by the FPS denominator. Example: `60000/1001` + Get-OBSVideoSettings calls the OBS WebSocket with a request of type GetVideoSettings. + + + + Get-OBSVideoSettings + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSVideoSettings + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvideosettings + + + + + + Get-OBSVignettingShader + OBSVignettingShader + Get + + Get-OBSVignettingShader [[-InnerRadius] <float>] [[-OuterRadius] <float>] [[-Opacity] <float>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSVignettingShader + + InnerRadius + + + + + Float + + Float + + + + + + + OuterRadius + + + + + Float + + Float + + + + + + + Opacity + + + + + Float + + Float + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + InnerRadius + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + Opacity + + + + + Float + + Float + + + + + + + OuterRadius + + + + + Float + + Float + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSVirtualCamStatus + OBSVirtualCamStatus + Get + + Get-OBSVirtualCamStatus : GetVirtualCamStatus + + 0.2 + + + Gets the status of the virtualcam output. + Get-OBSVirtualCamStatus calls the OBS WebSocket with a request of type GetVirtualCamStatus. + + + + Get-OBSVirtualCamStatus + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-OBSVirtualCamStatus + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#getvirtualcamstatus + + + + + + Get-OBSVoronoiPixelationShader + OBSVoronoiPixelationShader + Get + + Get-OBSVoronoiPixelationShader [[-PixH] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Alternative] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSVoronoiPixelationShader + + PixH + + + + + Float + + Float + + + + + + + Alternative + + + + + Switch + + Switch + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Alternative + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + PixH + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSZigZagShader + OBSZigZagShader + Get + + Get-OBSZigZagShader [[-Radius] <float>] [[-Angle] <float>] [[-Period] <float>] [[-Amplitude] <float>] [[-CenterX] <float>] [[-CenterY] <float>] [[-Phase] <float>] [[-Animate] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSZigZagShader + + Radius + + + + + Float + + Float + + + + + + + Angle + + + + + Float + + Float + + + + + + + Period + + + + + Float + + Float + + + + + + + Amplitude + + + + + Float + + Float + + + + + + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + Phase + + + + + Float + + Float + + + + + + + Animate + + + + + Int + + Int + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Amplitude + + + + + Float + + Float + + + + + + + Angle + + + + + Float + + Float + + + + + + + Animate + + + + + Int + + Int + + + + + + + CenterX + + + + + Float + + Float + + + + + + + CenterY + + + + + Float + + Float + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Period + + + + + Float + + Float + + + + + + + Phase + + + + + Float + + Float + + + + + + + Radius + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSZoomBlurShader + OBSZoomBlurShader + Get + + Get-OBSZoomBlurShader [[-Samples] <int>] [[-Magnitude] <float>] [[-SpeedPercent] <int>] [[-Notes] <string>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Ease] [-Glitch] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSZoomBlurShader + + Samples + + + + + Int + + Int + + + + + + + Magnitude + + + + + Float + + Float + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + Ease + + + + + Switch + + Switch + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + Glitch + + + + + Switch + + Switch + + + + + + + Magnitude + + + + + Float + + Float + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + Notes + + + + + String + + String + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Samples + + + + + Int + + Int + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + SpeedPercent + + + + + Int + + Int + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSZoomShader + OBSZoomShader + Get + + Get-OBSZoomShader [[-CenterXPercent] <int>] [[-CenterYPercent] <int>] [[-Power] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSZoomShader + + CenterXPercent + + + + + Int + + Int + + + + + + + CenterYPercent + + + + + Int + + Int + + + + + + + Power + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CenterXPercent + + + + + Int + + Int + + + + + + + CenterYPercent + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + Power + + + + + Float + + Float + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Get-OBSZoomXYShader + OBSZoomXYShader + Get + + Get-OBSZoomXYShader [[-CenterXPercent] <int>] [[-CenterYPercent] <int>] [[-XPower] <float>] [[-YPower] <float>] [[-SourceName] <string>] [[-FilterName] <string>] [[-ShaderText] <string>] [-Force] [-PassThru] [-NoResponse] [-UseShaderTime] [<CommonParameters>] + + 0.2 + + + + + + Get-OBSZoomXYShader + + CenterXPercent + + + + + Int + + Int + + + + + + + CenterYPercent + + + + + Int + + Int + + + + + + + XPower + + + + + Float + + Float + + + + + + + YPower + + + + + Float + + Float + + + + + + + SourceName + + + + + String + + String + + + + + + + FilterName + + + + + String + + String + + + + + + + ShaderText + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + + + + CenterXPercent + + + + + Int + + Int + + + + + + + CenterYPercent + + + + + Int + + Int + + + + + + + FilterName + + + + + String + + String + + + + + + + Force + + + + + Switch + + Switch + + + + + + + NoResponse + + + + + Switch + + Switch + + + + + + + PassThru + + + + + Switch + + Switch + + + + + + + ShaderText + + + + + String + + String + + + + + + + SourceName + + + + + String + + String + + + + + + + UseShaderTime + + + + + Switch + + Switch + + + + + + + XPower + + + + + Float + + Float + + + + + + + YPower + + + + + Float + + Float + + + + + + + + + + System.String + + + + + + + + + System.Object + + + + + + + + + Hide-OBS + OBS + Hide + + Hide OBS + + 0.2 + + + Hides items in OBS + + + + Hide-OBS + + ItemName + + The name of the item we want to Hide + + System.Object + + System.Object + + + + + + + SceneName + + The name of the scene. If not provided, the current program scene will be used. + + String + + String + + + + + + + + + + ItemName + + The name of the item we want to Hide + + System.Object + + System.Object + + + + + + + SceneName + + The name of the scene. If not provided, the current program scene will be used. + + String + + String + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Hide-OBS -SourceName "foo" + + + + + + + Set-OBSSceneItemEnabled + + + + + + + + Import-OBSEffect + OBSEffect + Import + + Imports Effects + + 0.2 + + + Imports obs-powershell effects + + + + Import-OBSEffect + + From + + The source location of the effect. +This can be a string, file, directory, command, or module. + + System.Object + + System.Object + + + + + + + + + + From + + The source location of the effect. +This can be a string, file, directory, command, or module. + + System.Object + + System.Object + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Import-OBSEffect -Path (Get-Module obs-powershell) + + + + + + + Get-OBSEffect + + + + + + + + Open-OBSInputFiltersDialog + OBSInputFiltersDialog + Open + + Open-OBSInputFiltersDialog : OpenInputFiltersDialog + + 0.2 + + + Opens the filters dialog of an input. + Open-OBSInputFiltersDialog calls the OBS WebSocket with a request of type OpenInputFiltersDialog. + + + + Open-OBSInputFiltersDialog + + InputName + + Name of the input to open the dialog of + + String + + String + + + + + + + InputUuid + + UUID of the input to open the dialog of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to open the dialog of + + String + + String + + + + + + + InputUuid + + UUID of the input to open the dialog of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputfiltersdialog + + + + + + Open-OBSInputInteractDialog + OBSInputInteractDialog + Open + + Open-OBSInputInteractDialog : OpenInputInteractDialog + + 0.2 + + + Opens the interact dialog of an input. + Open-OBSInputInteractDialog calls the OBS WebSocket with a request of type OpenInputInteractDialog. + + + + Open-OBSInputInteractDialog + + InputName + + Name of the input to open the dialog of + + String + + String + + + + + + + InputUuid + + UUID of the input to open the dialog of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to open the dialog of + + String + + String + + + + + + + InputUuid + + UUID of the input to open the dialog of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputinteractdialog + + + + + + Open-OBSInputPropertiesDialog + OBSInputPropertiesDialog + Open + + Open-OBSInputPropertiesDialog : OpenInputPropertiesDialog + + 0.2 + + + Opens the properties dialog of an input. + Open-OBSInputPropertiesDialog calls the OBS WebSocket with a request of type OpenInputPropertiesDialog. + + + + Open-OBSInputPropertiesDialog + + InputName + + Name of the input to open the dialog of + + String + + String + + + + + + + InputUuid + + UUID of the input to open the dialog of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to open the dialog of + + String + + String + + + + + + + InputUuid + + UUID of the input to open the dialog of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openinputpropertiesdialog + + + + + + Open-OBSSourceProjector + OBSSourceProjector + Open + + Open-OBSSourceProjector : OpenSourceProjector + + 0.2 + + + Opens a projector for a source. + Note: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release. + Open-OBSSourceProjector calls the OBS WebSocket with a request of type OpenSourceProjector. + + + + Open-OBSSourceProjector + + SourceName + + Name of the source to open a projector for + + String + + String + + + + + + + SourceUuid + + UUID of the source to open a projector for + + String + + String + + + + + + + MonitorIndex + + Monitor index, use `GetMonitorList` to obtain index + + Double + + Double + + + + + + + ProjectorGeometry + + Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + MonitorIndex + + Monitor index, use `GetMonitorList` to obtain index + + Double + + Double + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + ProjectorGeometry + + Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` + + String + + String + + + + + + + SourceName + + Name of the source to open a projector for + + String + + String + + + + + + + SourceUuid + + UUID of the source to open a projector for + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#opensourceprojector + + + + + + Open-OBSVideoMixProjector + OBSVideoMixProjector + Open + + Open-OBSVideoMixProjector : OpenVideoMixProjector + + 0.2 + + + Opens a projector for a specific output video mix. + Mix types: + - `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PREVIEW` + - `OBS_WEBSOCKET_VIDEO_MIX_TYPE_PROGRAM` + - `OBS_WEBSOCKET_VIDEO_MIX_TYPE_MULTIVIEW` + Note: This request serves to provide feature parity with 4.x. It is very likely to be changed/deprecated in a future release. + Open-OBSVideoMixProjector calls the OBS WebSocket with a request of type OpenVideoMixProjector. + + + + Open-OBSVideoMixProjector + + VideoMixType + + Type of mix to open + + String + + String + + + + + + + MonitorIndex + + Monitor index, use `GetMonitorList` to obtain index + + Double + + Double + + + + + + + ProjectorGeometry + + Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + MonitorIndex + + Monitor index, use `GetMonitorList` to obtain index + + Double + + Double + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + ProjectorGeometry + + Size/Position data for a windowed projector, in Qt Base64 encoded format. Mutually exclusive with `monitorIndex` + + String + + String + + + + + + + VideoMixType + + Type of mix to open + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#openvideomixprojector + + + + + + Receive-OBS + OBS + Receive + + Receives data from OBS + + 0.2 + + + Receives responses from the OBS WebSocket + + + + Receive-OBS + + MessageData + + The message data that has been received + + System.Object + + System.Object + + + + + + + WaitForReponse + + If set will wait for a response from the message and expand the results. + + Switch + + Switch + + + + + + + + Receive-OBS + + MessageData + + The message data that has been received + + System.Object + + System.Object + + + + + + + SendEvent + + If set, will responsd to known events, like 'hello', and resend other events as PowerShell events + + Switch + + Switch + + + + + + + WebSocketURI + + The OBS websocket URL. If not provided, this will default to loopback on port 4455. + + Uri + + Uri + + + + + + + WebSocketToken + + A randomly generated password used to connect to OBS. +You can see the websocket password in Tools -> obs-websocket settings -> show connect info + + String + + String + + + + + + + + + + MessageData + + The message data that has been received + + System.Object + + System.Object + + + + + + + SendEvent + + If set, will responsd to known events, like 'hello', and resend other events as PowerShell events + + Switch + + Switch + + + + + + + WaitForReponse + + If set will wait for a response from the message and expand the results. + + Switch + + Switch + + + + + + + WebSocketToken + + A randomly generated password used to connect to OBS. +You can see the websocket password in Tools -> obs-websocket settings -> show connect info + + String + + String + + + + + + + WebSocketURI + + The OBS websocket URL. If not provided, this will default to loopback on port 4455. + + Uri + + Uri + + + + + + + + + + Remove-OBS + OBS + Remove + + Remove OBS + + 0.2 + + + Removes items from OBS + + + + Remove-OBS + + ItemName + + The name of the item we want to remove + + System.Object + + System.Object + + + + + + + + + + ItemName + + The name of the item we want to remove + + System.Object + + System.Object + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Remove-OBS -SourceName "foo" + + + + + -------------------------- EXAMPLE 2 -------------------------- + + PS > + + Remove-OBS -SceneName "bar" + + + + + + + Remove-OBSInput + + + + + Remove-OBSScene + + + + + + + + Remove-OBSEffect + OBSEffect + Remove + + Removes OBS Effects + + 0.2 + + + Removes effects currently loaded into OBS-PowerShell. + + + + Remove-OBSEffect + + EffectName + + The name of the effect. + + String + + String + + + + + + + + + + EffectName + + The name of the effect. + + String + + String + + + + + + + + + + + This removes effects from memory, but will not delete effect commands or remove effect scripts. + + + + + Get-OBSEffect + + + + + + + + Remove-OBSInput + OBSInput + Remove + + Remove-OBSInput : RemoveInput + + 0.2 + + + Removes an existing input. + Note: Will immediately remove all associated scene items. + Remove-OBSInput calls the OBS WebSocket with a request of type RemoveInput. + + + + Remove-OBSInput + + InputName + + Name of the input to remove + + String + + String + + + + + + + InputUuid + + UUID of the input to remove + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to remove + + String + + String + + + + + + + InputUuid + + UUID of the input to remove + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeinput + + + + + + Remove-OBSProfile + OBSProfile + Remove + + Remove-OBSProfile : RemoveProfile + + 0.2 + + + Removes a profile. If the current profile is chosen, it will change to a different profile first. + Remove-OBSProfile calls the OBS WebSocket with a request of type RemoveProfile. + + + + Remove-OBSProfile + + ProfileName + + Name of the profile to remove + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + ProfileName + + Name of the profile to remove + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removeprofile + + + + + + Remove-OBSScene + OBSScene + Remove + + Remove-OBSScene : RemoveScene + + 0.2 + + + Removes a scene from OBS. + Remove-OBSScene calls the OBS WebSocket with a request of type RemoveScene. + + + + Remove-OBSScene + + SceneName + + Name of the scene to remove + + String + + String + + + + + + + SceneUuid + + UUID of the scene to remove + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Name of the scene to remove + + String + + String + + + + + + + SceneUuid + + UUID of the scene to remove + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removescene + + + + + + Remove-OBSSceneItem + OBSSceneItem + Remove + + Remove-OBSSceneItem : RemoveSceneItem + + 0.2 + + + Removes a scene item from a scene. + Scenes only + Remove-OBSSceneItem calls the OBS WebSocket with a request of type RemoveSceneItem. + + + + Remove-OBSSceneItem + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesceneitem + + + + + + Remove-OBSSourceFilter + OBSSourceFilter + Remove + + Remove-OBSSourceFilter : RemoveSourceFilter + + 0.2 + + + Removes a filter from a source. + Remove-OBSSourceFilter calls the OBS WebSocket with a request of type RemoveSourceFilter. + + + + Remove-OBSSourceFilter + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + FilterName + + Name of the filter to remove + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + FilterName + + Name of the filter to remove + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#removesourcefilter + + + + + + Resume-OBSRecord + OBSRecord + Resume + + Resume-OBSRecord : ResumeRecord + + 0.2 + + + Resumes the record output. + Resume-OBSRecord calls the OBS WebSocket with a request of type ResumeRecord. + + + + Resume-OBSRecord + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Resume-OBSRecord + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#resumerecord + + + + + + Save-OBSReplayBuffer + OBSReplayBuffer + Save + + Save-OBSReplayBuffer : SaveReplayBuffer + + 0.2 + + + Saves the contents of the replay buffer output. + Save-OBSReplayBuffer calls the OBS WebSocket with a request of type SaveReplayBuffer. + + + + Save-OBSReplayBuffer + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Save-OBSReplayBuffer + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savereplaybuffer + + + + + + Save-OBSSourceScreenshot + OBSSourceScreenshot + Save + + Save-OBSSourceScreenshot : SaveSourceScreenshot + + 0.2 + + + Saves a screenshot of a source to the filesystem. + The `imageWidth` and `imageHeight` parameters are treated as "scale to inner", meaning the smallest ratio will be used and the aspect ratio of the original resolution is kept. + If `imageWidth` and `imageHeight` are not specified, the compressed image will use the full resolution of the source. + **Compatible with inputs and scenes.** + Save-OBSSourceScreenshot calls the OBS WebSocket with a request of type SaveSourceScreenshot. + + + + Save-OBSSourceScreenshot + + SourceName + + Name of the source to take a screenshot of + + String + + String + + + + + + + SourceUuid + + UUID of the source to take a screenshot of + + String + + String + + + + + + + ImageFormat + + Image compression format to use. Use `GetVersion` to get compatible image formats + + String + + String + + + + + + + ImageFilePath + + Path to save the screenshot file to. Eg. `C:\Users\user\Desktop\screenshot.png` + + String + + String + + + + + + + ImageWidth + + Width to scale the screenshot to + + Double + + Double + + + + + + + ImageHeight + + Height to scale the screenshot to + + Double + + Double + + + + + + + ImageCompressionQuality + + Compression quality to use. 0 for high compression, 100 for uncompressed. -1 to use "default" (whatever that means, idk) + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + ImageCompressionQuality + + Compression quality to use. 0 for high compression, 100 for uncompressed. -1 to use "default" (whatever that means, idk) + + Double + + Double + + + + + + + ImageFilePath + + Path to save the screenshot file to. Eg. `C:\Users\user\Desktop\screenshot.png` + + String + + String + + + + + + + ImageFormat + + Image compression format to use. Use `GetVersion` to get compatible image formats + + String + + String + + + + + + + ImageHeight + + Height to scale the screenshot to + + Double + + Double + + + + + + + ImageWidth + + Width to scale the screenshot to + + Double + + Double + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source to take a screenshot of + + String + + String + + + + + + + SourceUuid + + UUID of the source to take a screenshot of + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#savesourcescreenshot + + + + + + Send-OBS + OBS + Send + + Sends messages to the OBS websocket. + + 0.2 + + + Sends one or more messages to the OBS websocket. + + + + Send-OBS + + MessageData + + The data to send to the obs websocket. + + System.Object + + System.Object + + + + + + + StepTime + + If provided, will sleep after each step. +If -StepTime is less than 10000 ticks, it will be treated as frames per second. +If -SerialFrame was provied, -StepTime will be the number of frames to wait. + + Timespan + + Timespan + + + + + + + Parallel + + If set, will process a batch of requests in parallel. + + Switch + + Switch + + + + + + + SerialFrame + + If set, will process a batch of requests in parallel. + + Switch + + Switch + + + + + + + ReceiveBatch + + If set, will receive responses from batches of requests. + + Switch + + Switch + + + + + + + NoResponse + + If set, will never attempt to receive a response. + + Switch + + Switch + + + + + + + + + + MessageData + + The data to send to the obs websocket. + + System.Object + + System.Object + + + + + + + NoResponse + + If set, will never attempt to receive a response. + + Switch + + Switch + + + + + + + Parallel + + If set, will process a batch of requests in parallel. + + Switch + + Switch + + + + + + + ReceiveBatch + + If set, will receive responses from batches of requests. + + Switch + + Switch + + + + + + + SerialFrame + + If set, will process a batch of requests in parallel. + + Switch + + Switch + + + + + + + StepTime + + If provided, will sleep after each step. +If -StepTime is less than 10000 ticks, it will be treated as frames per second. +If -SerialFrame was provied, -StepTime will be the number of frames to wait. + + Timespan + + Timespan + + + + + + + + + Receive-OBS + + + + + Watch-OBS + + + + + + + + Send-OBSCallVendorRequest + OBSCallVendorRequest + Send + + Send-OBSCallVendorRequest : CallVendorRequest + + 0.2 + + + Call a request registered to a vendor. + A vendor is a unique name registered by a third-party plugin or script, which allows for custom requests and events to be added to obs-websocket. + If a plugin or script implements vendor requests or events, documentation is expected to be provided with them. + Send-OBSCallVendorRequest calls the OBS WebSocket with a request of type CallVendorRequest. + + + + Send-OBSCallVendorRequest + + VendorName + + Name of the vendor to use + + String + + String + + + + + + + RequestType + + The request type to call + + String + + String + + + + + + + RequestData + + Object containing appropriate request data + + Psobject + + Psobject + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + RequestData + + Object containing appropriate request data + + Psobject + + Psobject + + + + + + + RequestType + + The request type to call + + String + + String + + + + + + + VendorName + + Name of the vendor to use + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#callvendorrequest + + + + + + Send-OBSCustomEvent + OBSCustomEvent + Send + + Send-OBSCustomEvent : BroadcastCustomEvent + + 0.2 + + + Broadcasts a `CustomEvent` to all WebSocket clients. Receivers are clients which are identified and subscribed. + Send-OBSCustomEvent calls the OBS WebSocket with a request of type BroadcastCustomEvent. + + + + Send-OBSCustomEvent + + EventData + + Data payload to emit to all receivers + + Psobject + + Psobject + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + EventData + + Data payload to emit to all receivers + + Psobject + + Psobject + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#broadcastcustomevent + + + + + + Send-OBSOffsetMediaInputCursor + OBSOffsetMediaInputCursor + Send + + Send-OBSOffsetMediaInputCursor : OffsetMediaInputCursor + + 0.2 + + + Offsets the current cursor position of a media input by the specified value. + This request does not perform bounds checking of the cursor position. + Send-OBSOffsetMediaInputCursor calls the OBS WebSocket with a request of type OffsetMediaInputCursor. + + + + Send-OBSOffsetMediaInputCursor + + InputName + + Name of the media input + + String + + String + + + + + + + InputUuid + + UUID of the media input + + String + + String + + + + + + + MediaCursorOffset + + Value to offset the current cursor position by + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the media input + + String + + String + + + + + + + InputUuid + + UUID of the media input + + String + + String + + + + + + + MediaCursorOffset + + Value to offset the current cursor position by + + Double + + Double + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#offsetmediainputcursor + + + + + + Send-OBSPauseRecord + OBSPauseRecord + Send + + Send-OBSPauseRecord : PauseRecord + + 0.2 + + + Pauses the record output. + Send-OBSPauseRecord calls the OBS WebSocket with a request of type PauseRecord. + + + + Send-OBSPauseRecord + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Send-OBSPauseRecord + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pauserecord + + + + + + Send-OBSPressInputPropertiesButton + OBSPressInputPropertiesButton + Send + + Send-OBSPressInputPropertiesButton : PressInputPropertiesButton + + 0.2 + + + Presses a button in the properties of an input. + Some known `propertyName` values are: + - `refreshnocache` - Browser source reload button + Note: Use this in cases where there is a button in the properties of an input that cannot be accessed in any other way. For example, browser sources, where there is a refresh button. + Send-OBSPressInputPropertiesButton calls the OBS WebSocket with a request of type PressInputPropertiesButton. + + + + Send-OBSPressInputPropertiesButton + + InputName + + Name of the input + + String + + String + + + + + + + InputUuid + + UUID of the input + + String + + String + + + + + + + PropertyName + + Name of the button property to press + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input + + String + + String + + + + + + + InputUuid + + UUID of the input + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + PropertyName + + Name of the button property to press + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#pressinputpropertiesbutton + + + + + + Send-OBSSleep + OBSSleep + Send + + Send-OBSSleep : Sleep + + 0.2 + + + Sleeps for a time duration or number of frames. Only available in request batches with types `SERIAL_REALTIME` or `SERIAL_FRAME`. + Send-OBSSleep calls the OBS WebSocket with a request of type Sleep. + + + + Send-OBSSleep + + SleepMillis + + Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode) + + Double + + Double + + + + + + + SleepFrames + + Number of frames to sleep for (if `SERIAL_FRAME` mode) + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SleepFrames + + Number of frames to sleep for (if `SERIAL_FRAME` mode) + + Double + + Double + + + + + + + SleepMillis + + Number of milliseconds to sleep for (if `SERIAL_REALTIME` mode) + + Double + + Double + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sleep + + + + + + Send-OBSStreamCaption + OBSStreamCaption + Send + + Send-OBSStreamCaption : SendStreamCaption + + 0.2 + + + Sends CEA-608 caption text over the stream output. + Send-OBSStreamCaption calls the OBS WebSocket with a request of type SendStreamCaption. + + + + Send-OBSStreamCaption + + CaptionText + + Caption text + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + CaptionText + + Caption text + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#sendstreamcaption + + + + + + Send-OBSTriggerHotkeyByKeySequence + OBSTriggerHotkeyByKeySequence + Send + + Send-OBSTriggerHotkeyByKeySequence : TriggerHotkeyByKeySequence + + 0.2 + + + Triggers a hotkey using a sequence of keys. + Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. + Send-OBSTriggerHotkeyByKeySequence calls the OBS WebSocket with a request of type TriggerHotkeyByKeySequence. + + + + Send-OBSTriggerHotkeyByKeySequence + + KeyId + + The OBS key ID to use. See https://github.com/obsproject/obs-studio/blob/master/libobs/obs-hotkeys.h + + String + + String + + + + + + + KeyModifiers + + Object containing key modifiers to apply + + Psobject + + Psobject + + + + + + + KeyModifiersshift + + Press Shift + + Switch + + Switch + + + + + + + KeyModifierscontrol + + Press CTRL + + Switch + + Switch + + + + + + + KeyModifiersalt + + Press ALT + + Switch + + Switch + + + + + + + KeyModifierscommand + + Press CMD (Mac) + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + KeyId + + The OBS key ID to use. See https://github.com/obsproject/obs-studio/blob/master/libobs/obs-hotkeys.h + + String + + String + + + + + + + KeyModifiers + + Object containing key modifiers to apply + + Psobject + + Psobject + + + + + + + KeyModifiersalt + + Press ALT + + Switch + + Switch + + + + + + + KeyModifierscommand + + Press CMD (Mac) + + Switch + + Switch + + + + + + + KeyModifierscontrol + + Press CTRL + + Switch + + Switch + + + + + + + KeyModifiersshift + + Press Shift + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybykeysequence + + + + + + Send-OBSTriggerHotkeyByName + OBSTriggerHotkeyByName + Send + + Send-OBSTriggerHotkeyByName : TriggerHotkeyByName + + 0.2 + + + Triggers a hotkey using its name. See `GetHotkeyList`. + Note: Hotkey functionality in obs-websocket comes as-is, and we do not guarantee support if things are broken. In 9/10 usages of hotkey requests, there exists a better, more reliable method via other requests. + Send-OBSTriggerHotkeyByName calls the OBS WebSocket with a request of type TriggerHotkeyByName. + + + + Send-OBSTriggerHotkeyByName + + HotkeyName + + Name of the hotkey to trigger + + String + + String + + + + + + + ContextName + + Name of context of the hotkey to trigger + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + ContextName + + Name of context of the hotkey to trigger + + String + + String + + + + + + + HotkeyName + + Name of the hotkey to trigger + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerhotkeybyname + + + + + + Send-OBSTriggerMediaInputAction + OBSTriggerMediaInputAction + Send + + Send-OBSTriggerMediaInputAction : TriggerMediaInputAction + + 0.2 + + + Triggers an action on a media input. + Send-OBSTriggerMediaInputAction calls the OBS WebSocket with a request of type TriggerMediaInputAction. + + + + Send-OBSTriggerMediaInputAction + + InputName + + Name of the media input + + String + + String + + + + + + + InputUuid + + UUID of the media input + + String + + String + + + + + + + MediaAction + + Identifier of the `ObsMediaInputAction` enum + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the media input + + String + + String + + + + + + + InputUuid + + UUID of the media input + + String + + String + + + + + + + MediaAction + + Identifier of the `ObsMediaInputAction` enum + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggermediainputaction + + + + + + Send-OBSTriggerStudioModeTransition + OBSTriggerStudioModeTransition + Send + + Send-OBSTriggerStudioModeTransition : TriggerStudioModeTransition + + 0.2 + + + Triggers the current scene transition. Same functionality as the `Transition` button in studio mode. + Send-OBSTriggerStudioModeTransition calls the OBS WebSocket with a request of type TriggerStudioModeTransition. + + + + Send-OBSTriggerStudioModeTransition + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Send-OBSTriggerStudioModeTransition + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#triggerstudiomodetransition + + + + + + Set-OBS3DFilter + OBS3DFilter + Set + + Sets an OBS 3D Filter. + + 0.2 + + + Adds or Changes a 3D Filter on an OBS Input. + This requires the [3D Effect](https://github.com/exeldro/obs-3d-effect). + + + + Set-OBS3DFilter + + FieldOfView + + The Field of View + + Double + + Double + + + + + + + RotationX + + The Rotation along the X-axis + + Double + + Double + + + + + + + RotationY + + The Rotation along the Y-axis + + Double + + Double + + + + + + + RotationZ + + The Rotation along the Z-axis + + Double + + Double + + + + + + + PositionX + + The Position along the X-axis + + Double + + Double + + + + + + + PositionY + + The Position along the Y-axis + + Double + + Double + + + + + + + PositionZ + + The Position along the Z-axis + + Double + + Double + + + + + + + ScaleX + + The scale of the source along the X-axis + + Double + + Double + + + + + + + ScaleY + + The scale of the source along the Y-axis + + Double + + Double + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + + + + FieldOfView + + The Field of View + + Double + + Double + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + PositionX + + The Position along the X-axis + + Double + + Double + + + + + + + PositionY + + The Position along the Y-axis + + Double + + Double + + + + + + + PositionZ + + The Position along the Z-axis + + Double + + Double + + + + + + + RotationX + + The Rotation along the X-axis + + Double + + Double + + + + + + + RotationY + + The Rotation along the Y-axis + + Double + + Double + + + + + + + RotationZ + + The Rotation along the Z-axis + + Double + + Double + + + + + + + ScaleX + + The scale of the source along the X-axis + + Double + + Double + + + + + + + ScaleY + + The scale of the source along the Y-axis + + Double + + Double + + + + + + + + + + Set-OBSAudioOutputSource + OBSAudioOutputSource + Set + + Adds or sets an audio output source + + 0.2 + + + Adds or sets an audio output source in OBS. This captures the audio that is being sent to an output device. + + + + Set-OBSAudioOutputSource + + AudioDevice + + The name of the audio device. +This name or device ID of the audio device that should be captured. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, "AudioOutput$($AudioDevice)" will be the input source name. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + + + + AudioDevice + + The name of the audio device. +This name or device ID of the audio device that should be captured. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + Name + + The name of the input. +If no name is provided, "AudioOutput$($AudioDevice)" will be the input source name. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + + + + + This command currently only supports capturing default audio on Windows. +To add support for other operating systems, file an issue or open a pull request. + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Add-OBSAudioOutputSource + + + + + -------------------------- EXAMPLE 2 -------------------------- + + PS > + + Set-OBSAudioOutputSource -AudioDevice Speakers + + + + + + + + Set-OBSBrowserSource + OBSBrowserSource + Set + + Sets a browser source + + 0.2 + + + Adds or changes a browser source in OBS. + + + + Set-OBSBrowserSource + + Uri + + The uri or file path to display. +If the uri points to a local file, this will be preferred + + Uri + + Uri + + + + + + + Width + + The width of the browser source. +If none is provided, this will be the output width of the video settings. + + Int + + Int + + + + + + + Height + + The width of the browser source. +If none is provided, this will be the output height of the video settings. + + Int + + Int + + + + + + + CSS + + The css style used to render the browser page. + + String + + String + + + + + + + ShutdownWhenHidden + + If set, the browser source will shutdown when it is hidden + + Switch + + Switch + + + + + + + RestartWhenActived + + If set, the browser source will restart when it is activated. + + Switch + + Switch + + + + + + + RerouteAudio + + If set, audio from the browser source will be rerouted into OBS. + + Switch + + Switch + + + + + + + FramesPerSecond + + If provided, the browser source will render at a custom frame rate. + + Int + + Int + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + + + + CSS + + The css style used to render the browser page. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + FramesPerSecond + + If provided, the browser source will render at a custom frame rate. + + Int + + Int + + + + + + + Height + + The width of the browser source. +If none is provided, this will be the output height of the video settings. + + Int + + Int + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + RerouteAudio + + If set, audio from the browser source will be rerouted into OBS. + + Switch + + Switch + + + + + + + RestartWhenActived + + If set, the browser source will restart when it is activated. + + Switch + + Switch + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + ShutdownWhenHidden + + If set, the browser source will shutdown when it is hidden + + Switch + + Switch + + + + + + + Uri + + The uri or file path to display. +If the uri points to a local file, this will be preferred + + Uri + + Uri + + + + + + + Width + + The width of the browser source. +If none is provided, this will be the output width of the video settings. + + Int + + Int + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Set-OBSBrowserSource -Uri https://pssvg.start-automating.com/Examples/Stars.svg + + + + + + + + Set-OBSColorFilter + OBSColorFilter + Set + + Sets a color filter + + 0.2 + + + Adds or Changes a Color Correction Filter on an OBS Input. + This allows you to: + * Change Opacity on any source + * Correct gamma + * Spin the hue + * Saturate or Desaturate an image + * Change the contrast + * Brighten the image + * Multiply pixels by a color + * Add a color to all pixels + + + + Set-OBSColorFilter + + Opacity + + The opacity, as a number between 0 and 1. + + Double + + Double + + + + + + + Brightness + + The brightness, as a number between -1 and 1. + + Double + + Double + + + + + + + Contrast + + The constrast, as a number between -4 and 4. + + Double + + Double + + + + + + + Gamma + + The gamma correction, as a number between -3 and 3. + + Double + + Double + + + + + + + Saturation + + The saturation, as a number between -1 and 5. + + Double + + Double + + + + + + + Hue + + The change in hue, as represented in degrees around a color cicrle + + Double + + Double + + + + + + + MultiplyColor + + Multiply this color by all pixels within the source. + + String + + String + + + + + + + AddColor + + Add all this color to all pixels within the source. + + String + + String + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + + + + AddColor + + Add all this color to all pixels within the source. + + String + + String + + + + + + + Brightness + + The brightness, as a number between -1 and 1. + + Double + + Double + + + + + + + Contrast + + The constrast, as a number between -4 and 4. + + Double + + Double + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + Gamma + + The gamma correction, as a number between -3 and 3. + + Double + + Double + + + + + + + Hue + + The change in hue, as represented in degrees around a color cicrle + + Double + + Double + + + + + + + MultiplyColor + + Multiply this color by all pixels within the source. + + String + + String + + + + + + + Opacity + + The opacity, as a number between 0 and 1. + + Double + + Double + + + + + + + Saturation + + The saturation, as a number between -1 and 5. + + Double + + Double + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Show-OBS -Uri .\Assets\obs-powershell-animated-icon.svg | + Set-OBSColorFilter -Opacity .5 + + + + + + + + Set-OBSColorSource + OBSColorSource + Set + + Adds a color source + + 0.2 + + + Adds a color source to OBS. This displays a single 32-bit color (RGBA). + + + + Set-OBSColorSource + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, "Display $($Monitor + 1)" will be the input source name. + + String + + String + + + + + + + Color + + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + + + + Color + + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + Name + + The name of the input. +If no name is provided, "Display $($Monitor + 1)" will be the input source name. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + + + Add-OBSInput + + + + + Set-OBSInputSettings + + + + + + + + Set-OBSCurrentPreviewScene + OBSCurrentPreviewScene + Set + + Set-OBSCurrentPreviewScene : SetCurrentPreviewScene + + 0.2 + + + Sets the current preview scene. + Only available when studio mode is enabled. + Set-OBSCurrentPreviewScene calls the OBS WebSocket with a request of type SetCurrentPreviewScene. + + + + Set-OBSCurrentPreviewScene + + SceneName + + Scene name to set as the current preview scene + + String + + String + + + + + + + SceneUuid + + Scene UUID to set as the current preview scene + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Scene name to set as the current preview scene + + String + + String + + + + + + + SceneUuid + + Scene UUID to set as the current preview scene + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentpreviewscene + + + + + + Set-OBSCurrentProfile + OBSCurrentProfile + Set + + Set-OBSCurrentProfile : SetCurrentProfile + + 0.2 + + + Switches to a profile. + Set-OBSCurrentProfile calls the OBS WebSocket with a request of type SetCurrentProfile. + + + + Set-OBSCurrentProfile + + ProfileName + + Name of the profile to switch to + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + ProfileName + + Name of the profile to switch to + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprofile + + + + + + Set-OBSCurrentProgramScene + OBSCurrentProgramScene + Set + + Set-OBSCurrentProgramScene : SetCurrentProgramScene + + 0.2 + + + Sets the current program scene. + Set-OBSCurrentProgramScene calls the OBS WebSocket with a request of type SetCurrentProgramScene. + + + + Set-OBSCurrentProgramScene + + SceneName + + Scene name to set as the current program scene + + String + + String + + + + + + + SceneUuid + + Scene UUID to set as the current program scene + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Scene name to set as the current program scene + + String + + String + + + + + + + SceneUuid + + Scene UUID to set as the current program scene + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentprogramscene + + + + + + Set-OBSCurrentSceneCollection + OBSCurrentSceneCollection + Set + + Set-OBSCurrentSceneCollection : SetCurrentSceneCollection + + 0.2 + + + Switches to a scene collection. + Note: This will block until the collection has finished changing. + Set-OBSCurrentSceneCollection calls the OBS WebSocket with a request of type SetCurrentSceneCollection. + + + + Set-OBSCurrentSceneCollection + + SceneCollectionName + + Name of the scene collection to switch to + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneCollectionName + + Name of the scene collection to switch to + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenecollection + + + + + + Set-OBSCurrentSceneTransition + OBSCurrentSceneTransition + Set + + Set-OBSCurrentSceneTransition : SetCurrentSceneTransition + + 0.2 + + + Sets the current scene transition. + Small note: While the namespace of scene transitions is generally unique, that uniqueness is not a guarantee as it is with other resources like inputs. + Set-OBSCurrentSceneTransition calls the OBS WebSocket with a request of type SetCurrentSceneTransition. + + + + Set-OBSCurrentSceneTransition + + TransitionName + + Name of the transition to make active + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + TransitionName + + Name of the transition to make active + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransition + + + + + + Set-OBSCurrentSceneTransitionDuration + OBSCurrentSceneTransitionDuration + Set + + Set-OBSCurrentSceneTransitionDuration : SetCurrentSceneTransitionDuration + + 0.2 + + + Sets the duration of the current scene transition, if it is not fixed. + Set-OBSCurrentSceneTransitionDuration calls the OBS WebSocket with a request of type SetCurrentSceneTransitionDuration. + + + + Set-OBSCurrentSceneTransitionDuration + + TransitionDuration + + Duration in milliseconds + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + TransitionDuration + + Duration in milliseconds + + Double + + Double + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionduration + + + + + + Set-OBSCurrentSceneTransitionSettings + OBSCurrentSceneTransitionSettings + Set + + Set-OBSCurrentSceneTransitionSettings : SetCurrentSceneTransitionSettings + + 0.2 + + + Sets the settings of the current scene transition. + Set-OBSCurrentSceneTransitionSettings calls the OBS WebSocket with a request of type SetCurrentSceneTransitionSettings. + + + + Set-OBSCurrentSceneTransitionSettings + + TransitionSettings + + Settings object to apply to the transition. Can be `{}` + + Psobject + + Psobject + + + + + + + Overlay + + Whether to overlay over the current settings or replace them + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + Overlay + + Whether to overlay over the current settings or replace them + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + TransitionSettings + + Settings object to apply to the transition. Can be `{}` + + Psobject + + Psobject + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setcurrentscenetransitionsettings + + + + + + Set-OBSDisplaySource + OBSDisplaySource + Set + + Adds a display source + + 0.2 + + + Adds a display source to OBS. This captures the contents of the display. + + + + Set-OBSDisplaySource + + Monitor + + The monitor number. +This the number of the monitor you would like to capture. + + Int + + Int + + + + + + + CaptureCursor + + If set, will capture the cursor. +This will be set by default. +If explicitly set to false, the cursor will not be captured. + + Switch + + Switch + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, "Display $($Monitor + 1)" will be the input source name. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + + + + CaptureCursor + + If set, will capture the cursor. +This will be set by default. +If explicitly set to false, the cursor will not be captured. + + Switch + + Switch + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + Monitor + + The monitor number. +This the number of the monitor you would like to capture. + + Int + + Int + + + + + + + Name + + The name of the input. +If no name is provided, "Display $($Monitor + 1)" will be the input source name. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Add-OBSDisplaySource # Adds a display source of the primary monitor + + + + + -------------------------- EXAMPLE 2 -------------------------- + + PS > + + Add-OBSDisplaySource -Display 2 # Adds a display source of the second monitor + + + + + + + + Set-OBSEqualizerFilter + OBSEqualizerFilter + Set + + Sets a Equalizer filter. + + 0.2 + + + Adds or Changes a 3-band Equalizer Filter on an OBS Input. + + + + Set-OBSEqualizerFilter + + Low + + The change in low frequencies. + + Double + + Double + + + + + + + Mid + + The change in mid frequencies. + + Double + + Double + + + + + + + High + + The change in high frequencies. + + Double + + Double + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + High + + The change in high frequencies. + + Double + + Double + + + + + + + Low + + The change in low frequencies. + + Double + + Double + + + + + + + Mid + + The change in mid frequencies. + + Double + + Double + + + + + + + + + + Set-OBSGainFilter + OBSGainFilter + Set + + Sets a Gain filter. + + 0.2 + + + Adds or Changes a Gain Filter on an OBS Input. + This allows you to make the audio louder or softer. + + + + Set-OBSGainFilter + + Gain + + The Audio Gain, in decibels. + + Double + + Double + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + Gain + + The Audio Gain, in decibels. + + Double + + Double + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | + Set-OBSGainFilter -Gain 1.1 # Gains Audio by 1.1 decibels + + + + + + + + Set-OBSInputAudioBalance + OBSInputAudioBalance + Set + + Set-OBSInputAudioBalance : SetInputAudioBalance + + 0.2 + + + Sets the audio balance of an input. + Set-OBSInputAudioBalance calls the OBS WebSocket with a request of type SetInputAudioBalance. + + + + Set-OBSInputAudioBalance + + InputName + + Name of the input to set the audio balance of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the audio balance of + + String + + String + + + + + + + InputAudioBalance + + New audio balance value + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputAudioBalance + + New audio balance value + + Double + + Double + + + + + + + InputName + + Name of the input to set the audio balance of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the audio balance of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiobalance + + + + + + Set-OBSInputAudioMonitorType + OBSInputAudioMonitorType + Set + + Set-OBSInputAudioMonitorType : SetInputAudioMonitorType + + 0.2 + + + Sets the audio monitor type of an input. + Set-OBSInputAudioMonitorType calls the OBS WebSocket with a request of type SetInputAudioMonitorType. + + + + Set-OBSInputAudioMonitorType + + InputName + + Name of the input to set the audio monitor type of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the audio monitor type of + + String + + String + + + + + + + MonitorType + + Audio monitor type + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to set the audio monitor type of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the audio monitor type of + + String + + String + + + + + + + MonitorType + + Audio monitor type + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiomonitortype + + + + + + Set-OBSInputAudioSyncOffset + OBSInputAudioSyncOffset + Set + + Set-OBSInputAudioSyncOffset : SetInputAudioSyncOffset + + 0.2 + + + Sets the audio sync offset of an input. + Set-OBSInputAudioSyncOffset calls the OBS WebSocket with a request of type SetInputAudioSyncOffset. + + + + Set-OBSInputAudioSyncOffset + + InputName + + Name of the input to set the audio sync offset of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the audio sync offset of + + String + + String + + + + + + + InputAudioSyncOffset + + New audio sync offset in milliseconds + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputAudioSyncOffset + + New audio sync offset in milliseconds + + Double + + Double + + + + + + + InputName + + Name of the input to set the audio sync offset of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the audio sync offset of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiosyncoffset + + + + + + Set-OBSInputAudioTracks + OBSInputAudioTracks + Set + + Set-OBSInputAudioTracks : SetInputAudioTracks + + 0.2 + + + Sets the enable state of audio tracks of an input. + Set-OBSInputAudioTracks calls the OBS WebSocket with a request of type SetInputAudioTracks. + + + + Set-OBSInputAudioTracks + + InputName + + Name of the input + + String + + String + + + + + + + InputUuid + + UUID of the input + + String + + String + + + + + + + InputAudioTracks + + Track settings to apply + + Psobject + + Psobject + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputAudioTracks + + Track settings to apply + + Psobject + + Psobject + + + + + + + InputName + + Name of the input + + String + + String + + + + + + + InputUuid + + UUID of the input + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputaudiotracks + + + + + + Set-OBSInputMute + OBSInputMute + Set + + Set-OBSInputMute : SetInputMute + + 0.2 + + + Sets the audio mute state of an input. + Set-OBSInputMute calls the OBS WebSocket with a request of type SetInputMute. + + + + Set-OBSInputMute + + InputName + + Name of the input to set the mute state of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the mute state of + + String + + String + + + + + + + InputMuted + + Whether to mute the input or not + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputMuted + + Whether to mute the input or not + + Switch + + Switch + + + + + + + InputName + + Name of the input to set the mute state of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the mute state of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputmute + + + + + + Set-OBSInputName + OBSInputName + Set + + Set-OBSInputName : SetInputName + + 0.2 + + + Sets the name of an input (rename). + Set-OBSInputName calls the OBS WebSocket with a request of type SetInputName. + + + + Set-OBSInputName + + InputName + + Current input name + + String + + String + + + + + + + InputUuid + + Current input UUID + + String + + String + + + + + + + NewInputName + + New name for the input + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Current input name + + String + + String + + + + + + + InputUuid + + Current input UUID + + String + + String + + + + + + + NewInputName + + New name for the input + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputname + + + + + + Set-OBSInputSettings + OBSInputSettings + Set + + Set-OBSInputSettings : SetInputSettings + + 0.2 + + + Sets the settings of an input. + Set-OBSInputSettings calls the OBS WebSocket with a request of type SetInputSettings. + + + + Set-OBSInputSettings + + InputName + + Name of the input to set the settings of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the settings of + + String + + String + + + + + + + InputSettings + + Object of settings to apply + + Psobject + + Psobject + + + + + + + Overlay + + True == apply the settings on top of existing ones, False == reset the input to its defaults, then apply settings. + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to set the settings of + + String + + String + + + + + + + InputSettings + + Object of settings to apply + + Psobject + + Psobject + + + + + + + InputUuid + + UUID of the input to set the settings of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + Overlay + + True == apply the settings on top of existing ones, False == reset the input to its defaults, then apply settings. + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputsettings + + + + + + Set-OBSInputVolume + OBSInputVolume + Set + + Set-OBSInputVolume : SetInputVolume + + 0.2 + + + Sets the volume setting of an input. + Set-OBSInputVolume calls the OBS WebSocket with a request of type SetInputVolume. + + + + Set-OBSInputVolume + + InputName + + Name of the input to set the volume of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the volume of + + String + + String + + + + + + + InputVolumeMul + + Volume setting in mul + + Double + + Double + + + + + + + InputVolumeDb + + Volume setting in dB + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to set the volume of + + String + + String + + + + + + + InputUuid + + UUID of the input to set the volume of + + String + + String + + + + + + + InputVolumeDb + + Volume setting in dB + + Double + + Double + + + + + + + InputVolumeMul + + Volume setting in mul + + Double + + Double + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setinputvolume + + + + + + Set-OBSMarkdownSource + OBSMarkdownSource + Set + + Sets a markdown source + + 0.2 + + + Adds or changes a markdown source in OBS. + + + + Set-OBSMarkdownSource + + Markdown + + The markdown text, or the path to a markdown file + + String + + String + + + + + + + Width + + The width of the browser source. +If none is provided, this will be the output width of the video settings. + + Int + + Int + + + + + + + Height + + The width of the browser source. +If none is provided, this will be the output height of the video settings. + + Int + + Int + + + + + + + CSS + + The css style used to render the markdown. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + + + + CSS + + The css style used to render the markdown. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + Height + + The width of the browser source. +If none is provided, this will be the output height of the video settings. + + Int + + Int + + + + + + + Markdown + + The markdown text, or the path to a markdown file + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Width + + The width of the browser source. +If none is provided, this will be the output width of the video settings. + + Int + + Int + + + + + + + + + + Set-OBSMediaInputCursor + OBSMediaInputCursor + Set + + Set-OBSMediaInputCursor : SetMediaInputCursor + + 0.2 + + + Sets the cursor position of a media input. + This request does not perform bounds checking of the cursor position. + Set-OBSMediaInputCursor calls the OBS WebSocket with a request of type SetMediaInputCursor. + + + + Set-OBSMediaInputCursor + + InputName + + Name of the media input + + String + + String + + + + + + + InputUuid + + UUID of the media input + + String + + String + + + + + + + MediaCursor + + New cursor position to set + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the media input + + String + + String + + + + + + + InputUuid + + UUID of the media input + + String + + String + + + + + + + MediaCursor + + New cursor position to set + + Double + + Double + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setmediainputcursor + + + + + + Set-OBSMediaSource + OBSMediaSource + Set + + Adds a media source + + 0.2 + + + Adds a media source to OBS. + + + + Set-OBSMediaSource + + FilePath + + The path to the media file. + + String + + String + + + + + + + CloseWhenInactive + + If set, the source will close when it is inactive. +By default, this will be set to true. +To explicitly set it to false, use -CloseWhenInactive:$false + + Switch + + Switch + + + + + + + Loop + + If set, the source will automatically restart. + + Switch + + Switch + + + + + + + UseHardwareDecoding + + If set, will use hardware decoding, if available. + + Switch + + Switch + + + + + + + ClearOnMediaEnd + + If set, will clear the output on the end of the media. +If this is set to false, the media will freeze on the last frame. +This is set to true by default. +To explicitly set to false, use -ClearMediaEnd:$false + + Switch + + Switch + + + + + + + FFMpegOption + + Any FFMpeg demuxer options. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + FitToScreen + + If set, will fit the input to the screen. + + Switch + + Switch + + + + + + + + + + ClearOnMediaEnd + + If set, will clear the output on the end of the media. +If this is set to false, the media will freeze on the last frame. +This is set to true by default. +To explicitly set to false, use -ClearMediaEnd:$false + + Switch + + Switch + + + + + + + CloseWhenInactive + + If set, the source will close when it is inactive. +By default, this will be set to true. +To explicitly set it to false, use -CloseWhenInactive:$false + + Switch + + Switch + + + + + + + FFMpegOption + + Any FFMpeg demuxer options. + + String + + String + + + + + + + FilePath + + The path to the media file. + + String + + String + + + + + + + FitToScreen + + If set, will fit the input to the screen. + + Switch + + Switch + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + Loop + + If set, the source will automatically restart. + + Switch + + Switch + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + UseHardwareDecoding + + If set, will use hardware decoding, if available. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Set-OBSMediaSource -FilePath My.mp4 + + + + + + + Add-OBSInput + + + + + Set-OBSInputSettings + + + + + + + + Set-OBSOutputSettings + OBSOutputSettings + Set + + Set-OBSOutputSettings : SetOutputSettings + + 0.2 + + + Sets the settings of an output. + Set-OBSOutputSettings calls the OBS WebSocket with a request of type SetOutputSettings. + + + + Set-OBSOutputSettings + + OutputName + + Output name + + String + + String + + + + + + + OutputSettings + + Output settings + + Psobject + + Psobject + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + OutputName + + Output name + + String + + String + + + + + + + OutputSettings + + Output settings + + Psobject + + Psobject + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setoutputsettings + + + + + + Set-OBSPersistentData + OBSPersistentData + Set + + Set-OBSPersistentData : SetPersistentData + + 0.2 + + + Sets the value of a "slot" from the selected persistent data realm. + Set-OBSPersistentData calls the OBS WebSocket with a request of type SetPersistentData. + + + + Set-OBSPersistentData + + Realm + + The data realm to select. `OBS_WEBSOCKET_DATA_REALM_GLOBAL` or `OBS_WEBSOCKET_DATA_REALM_PROFILE` + + String + + String + + + + + + + SlotName + + The name of the slot to retrieve data from + + String + + String + + + + + + + SlotValue + + The value to apply to the slot + + Psobject + + Psobject + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + Realm + + The data realm to select. `OBS_WEBSOCKET_DATA_REALM_GLOBAL` or `OBS_WEBSOCKET_DATA_REALM_PROFILE` + + String + + String + + + + + + + SlotName + + The name of the slot to retrieve data from + + String + + String + + + + + + + SlotValue + + The value to apply to the slot + + Psobject + + Psobject + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setpersistentdata + + + + + + Set-OBSProfileParameter + OBSProfileParameter + Set + + Set-OBSProfileParameter : SetProfileParameter + + 0.2 + + + Sets the value of a parameter in the current profile's configuration. + Set-OBSProfileParameter calls the OBS WebSocket with a request of type SetProfileParameter. + + + + Set-OBSProfileParameter + + ParameterCategory + + Category of the parameter to set + + String + + String + + + + + + + ParameterName + + Name of the parameter to set + + String + + String + + + + + + + ParameterValue + + Value of the parameter to set. Use `null` to delete + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + ParameterCategory + + Category of the parameter to set + + String + + String + + + + + + + ParameterName + + Name of the parameter to set + + String + + String + + + + + + + ParameterValue + + Value of the parameter to set. Use `null` to delete + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setprofileparameter + + + + + + Set-OBSRecordDirectory + OBSRecordDirectory + Set + + Set-OBSRecordDirectory : SetRecordDirectory + + 0.2 + + + Sets the current directory that the record output writes files to. + Set-OBSRecordDirectory calls the OBS WebSocket with a request of type SetRecordDirectory. + + + + Set-OBSRecordDirectory + + RecordDirectory + + Output directory + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + RecordDirectory + + Output directory + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setrecorddirectory + + + + + + Set-OBSRenderDelayFilter + OBSRenderDelayFilter + Set + + Sets a RenderDelay filter. + + 0.2 + + + Adds or Changes a RenderDelay Filter on an OBS Input. + This changes the RenderDelay of an image. + + + + Set-OBSRenderDelayFilter + + RenderDelay + + The RenderDelay. + + Timespan + + Timespan + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + RenderDelay + + The RenderDelay. + + Timespan + + Timespan + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | + Set-OBSRenderDelayFilter -RenderDelay .75 + + + + + + + + Set-OBSScaleFilter + OBSScaleFilter + Set + + Sets a Scale filter. + + 0.2 + + + Adds or Changes a Scale Filter on an OBS Input. + This allows you to resize the image source. + + + + Set-OBSScaleFilter + + Resolution + + The Resolution. Can either width x height (e.g. 1920x1080) or an aspect ratio (16:9). + + String + + String + + + + + + + Sampling + + The sampling method. It will default to "lanczos". + + String + + String + + + + + + + KeepAspectRatio + + If set, will keep the aspect ratio when scaling. +This is only valid if the sampling method is set to "lanczos". + + Switch + + Switch + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + KeepAspectRatio + + If set, will keep the aspect ratio when scaling. +This is only valid if the sampling method is set to "lanczos". + + Switch + + Switch + + + + + + + Resolution + + The Resolution. Can either width x height (e.g. 1920x1080) or an aspect ratio (16:9). + + String + + String + + + + + + + Sampling + + The sampling method. It will default to "lanczos". + + String + + String + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | + Set-OBSScaleFilter -Resolution "16:9" + + + + + + + + Set-OBSSceneItemBlendMode + OBSSceneItemBlendMode + Set + + Set-OBSSceneItemBlendMode : SetSceneItemBlendMode + + 0.2 + + + Sets the blend mode of a scene item. + Scenes and Groups + Set-OBSSceneItemBlendMode calls the OBS WebSocket with a request of type SetSceneItemBlendMode. + + + + Set-OBSSceneItemBlendMode + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneItemBlendMode + + New blend mode + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemBlendMode + + New blend mode + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemblendmode + + + + + + Set-OBSSceneItemEnabled + OBSSceneItemEnabled + Set + + Set-OBSSceneItemEnabled : SetSceneItemEnabled + + 0.2 + + + Sets the enable state of a scene item. + Scenes and Groups + Set-OBSSceneItemEnabled calls the OBS WebSocket with a request of type SetSceneItemEnabled. + + + + Set-OBSSceneItemEnabled + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneItemEnabled + + New enable state of the scene item + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemEnabled + + New enable state of the scene item + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemenabled + + + + + + Set-OBSSceneItemIndex + OBSSceneItemIndex + Set + + Set-OBSSceneItemIndex : SetSceneItemIndex + + 0.2 + + + Sets the index position of a scene item in a scene. + Scenes and Groups + Set-OBSSceneItemIndex calls the OBS WebSocket with a request of type SetSceneItemIndex. + + + + Set-OBSSceneItemIndex + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneItemIndex + + New index position of the scene item + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneItemIndex + + New index position of the scene item + + Double + + Double + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemindex + + + + + + Set-OBSSceneItemLocked + OBSSceneItemLocked + Set + + Set-OBSSceneItemLocked : SetSceneItemLocked + + 0.2 + + + Sets the lock state of a scene item. + Scenes and Group + Set-OBSSceneItemLocked calls the OBS WebSocket with a request of type SetSceneItemLocked. + + + + Set-OBSSceneItemLocked + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneItemLocked + + New lock state of the scene item + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneItemLocked + + New lock state of the scene item + + Switch + + Switch + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemlocked + + + + + + Set-OBSSceneItemTransform + OBSSceneItemTransform + Set + + Set-OBSSceneItemTransform : SetSceneItemTransform + + 0.2 + + + Sets the transform and crop info of a scene item. + Set-OBSSceneItemTransform calls the OBS WebSocket with a request of type SetSceneItemTransform. + + + + Set-OBSSceneItemTransform + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneItemTransform + + Object containing scene item transform info to update + + Psobject + + Psobject + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneItemId + + Numeric ID of the scene item + + Double + + Double + + + + + + + SceneItemTransform + + Object containing scene item transform info to update + + Psobject + + Psobject + + + + + + + SceneName + + Name of the scene the item is in + + String + + String + + + + + + + SceneUuid + + UUID of the scene the item is in + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsceneitemtransform + + + + + + Set-OBSSceneName + OBSSceneName + Set + + Set-OBSSceneName : SetSceneName + + 0.2 + + + Sets the name of a scene (rename). + Set-OBSSceneName calls the OBS WebSocket with a request of type SetSceneName. + + + + Set-OBSSceneName + + SceneName + + Name of the scene to be renamed + + String + + String + + + + + + + SceneUuid + + UUID of the scene to be renamed + + String + + String + + + + + + + NewSceneName + + New name for the scene + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NewSceneName + + New name for the scene + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Name of the scene to be renamed + + String + + String + + + + + + + SceneUuid + + UUID of the scene to be renamed + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenename + + + + + + Set-OBSSceneSceneTransitionOverride + OBSSceneSceneTransitionOverride + Set + + Set-OBSSceneSceneTransitionOverride : SetSceneSceneTransitionOverride + + 0.2 + + + Sets the scene transition overridden for a scene. + Set-OBSSceneSceneTransitionOverride calls the OBS WebSocket with a request of type SetSceneSceneTransitionOverride. + + + + Set-OBSSceneSceneTransitionOverride + + SceneName + + Name of the scene + + String + + String + + + + + + + SceneUuid + + UUID of the scene + + String + + String + + + + + + + TransitionName + + Name of the scene transition to use as override. Specify `null` to remove + + String + + String + + + + + + + TransitionDuration + + Duration to use for any overridden transition. Specify `null` to remove + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SceneName + + Name of the scene + + String + + String + + + + + + + SceneUuid + + UUID of the scene + + String + + String + + + + + + + TransitionDuration + + Duration to use for any overridden transition. Specify `null` to remove + + Double + + Double + + + + + + + TransitionName + + Name of the scene transition to use as override. Specify `null` to remove + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setscenescenetransitionoverride + + + + + + Set-OBSScrollFilter + OBSScrollFilter + Set + + Sets a scroll filter. + + 0.2 + + + Adds or Changes a Scroll Filter on an OBS Input. + This allows you to scroll horizontally or vertically. + + + + Set-OBSScrollFilter + + HorizontalSpeed + + The horizontal scroll speed. + + Double + + Double + + + + + + + VerticalSpeed + + The vertical scroll speed. + + Double + + Double + + + + + + + NoLoop + + If set, will not loop + + Switch + + Switch + + + + + + + LimitWidth + + If provided, will limit the width. + + Double + + Double + + + + + + + LimitHeight + + If provided, will limit the height. + + Double + + Double + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + HorizontalSpeed + + The horizontal scroll speed. + + Double + + Double + + + + + + + LimitHeight + + If provided, will limit the height. + + Double + + Double + + + + + + + LimitWidth + + If provided, will limit the width. + + Double + + Double + + + + + + + NoLoop + + If set, will not loop + + Switch + + Switch + + + + + + + VerticalSpeed + + The vertical scroll speed. + + Double + + Double + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | + Set-OBSScrollFilter -HorizontalSpeed 100 -VerticalSpeed 100 + + + + + + + + Set-OBSShaderFilter + OBSShaderFilter + Set + + Sets a Shader filter. + + 0.2 + + + Adds or Changes a Shader Filter on an OBS Input. + This requires that the [OBS Shader Filter](https://github.com/exeldro/obs-shaderfilter) is installed. + + + + Set-OBSShaderFilter + + ShaderText + + The text of the shader + + String + + String + + + + + + + ShaderFile + + The file path to the shader, or the short file name of the shader. + + String + + String + + + + + + + ShaderSetting + + Any other settings for the shader. +To see what the name of a shader setting is, change it in the user interface and then get the input's filters. + + Psobject + + Psobject + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + ShaderFile + + The file path to the shader, or the short file name of the shader. + + String + + String + + + + + + + ShaderSetting + + Any other settings for the shader. +To see what the name of a shader setting is, change it in the user interface and then get the input's filters. + + Psobject + + Psobject + + + + + + + ShaderText + + The text of the shader + + String + + String + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | + Set-OBSShaderFilter -FilterName "FisheyeShader" -ShaderFile fisheye-xy -ShaderSetting @{ + center_x_percent=30 + center_y_percent=70 + } + + + + + -------------------------- EXAMPLE 2 -------------------------- + + PS > + + 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 3 -------------------------- + + PS > + + 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 + } + + + + + + + + Set-OBSSharpnessFilter + OBSSharpnessFilter + Set + + Sets a Sharpness filter. + + 0.2 + + + Adds or Changes a Sharpness Filter on an OBS Input. + This changes the sharpness of an image. + + + + Set-OBSSharpnessFilter + + Sharpness + + The Sharpness. + + Double + + Double + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + + + + Force + + If set, will remove a filter if one already exists. +If this is not provided and the filter already exists, the settings of the filter will be changed. + + Switch + + Switch + + + + + + + Sharpness + + The Sharpness. + + Double + + Double + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg | + Set-OBSSharpnessFilter -Sharpness .75 + + + + + + + + Set-OBSSoundCloudSource + OBSSoundCloudSource + Set + + Sets a Sound Cloud Source + + 0.2 + + + Adds or changes a Sound Cloud source OBS. + Sound Cloud Sources are Browser Sources that display a [SoundCloud Player Widget](https://developers.soundcloud.com/docs/api/html5-widget). + + + + Set-OBSSoundCloudSource + + Uri + + The uri to display. This must point to a SoundCloud URL. + + Uri + + Uri + + + + + + + NoAutoPlay + + If set, will not autoplay. + + Switch + + Switch + + + + + + + NoArtwork + + If set, will not display album artwork. + + Switch + + Switch + + + + + + + NoPlayCount + + If set, will not display play count. + + Switch + + Switch + + + + + + + NoUploaderInfo + + If set, will not display uploader info. + + Switch + + Switch + + + + + + + TrackNumber + + If provided, will start playing at a given track number. + + Int + + Int + + + + + + + ShowShare + + If set, will show a share link. + + Switch + + Switch + + + + + + + ShowDownload + + If set, will show a download link. + + Switch + + Switch + + + + + + + ShowBuy + + If set, will show a buy link. + + Switch + + Switch + + + + + + + Color + + The color used for the SoundCloud audio bars and buttons. + + String + + String + + + + + + + Width + + The width of the browser source. +If none is provided, this will be the output width of the video settings. + + Int + + Int + + + + + + + Height + + The width of the browser source. +If none is provided, this will be the output height of the video settings. + + Int + + Int + + + + + + + CSS + + The css style used to render the browser page. + + String + + String + + + + + + + ShutdownWhenHidden + + If set, the browser source will shutdown when it is hidden + + Switch + + Switch + + + + + + + RestartWhenActived + + If set, the browser source will restart when it is activated. + + Switch + + Switch + + + + + + + RerouteAudio + + If set, audio from the browser source will be rerouted into OBS. + + Switch + + Switch + + + + + + + FramesPerSecond + + If provided, the browser source will render at a custom frame rate. + + Int + + Int + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, then "SoundCloud" will be used. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + + + + Color + + The color used for the SoundCloud audio bars and buttons. + + String + + String + + + + + + + CSS + + The css style used to render the browser page. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + FramesPerSecond + + If provided, the browser source will render at a custom frame rate. + + Int + + Int + + + + + + + Height + + The width of the browser source. +If none is provided, this will be the output height of the video settings. + + Int + + Int + + + + + + + Name + + The name of the input. +If no name is provided, then "SoundCloud" will be used. + + String + + String + + + + + + + NoArtwork + + If set, will not display album artwork. + + Switch + + Switch + + + + + + + NoAutoPlay + + If set, will not autoplay. + + Switch + + Switch + + + + + + + NoPlayCount + + If set, will not display play count. + + Switch + + Switch + + + + + + + NoUploaderInfo + + If set, will not display uploader info. + + Switch + + Switch + + + + + + + RerouteAudio + + If set, audio from the browser source will be rerouted into OBS. + + Switch + + Switch + + + + + + + RestartWhenActived + + If set, the browser source will restart when it is activated. + + Switch + + Switch + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + ShowBuy + + If set, will show a buy link. + + Switch + + Switch + + + + + + + ShowDownload + + If set, will show a download link. + + Switch + + Switch + + + + + + + ShowShare + + If set, will show a share link. + + Switch + + Switch + + + + + + + ShutdownWhenHidden + + If set, the browser source will shutdown when it is hidden + + Switch + + Switch + + + + + + + TrackNumber + + If provided, will start playing at a given track number. + + Int + + Int + + + + + + + Uri + + The uri to display. This must point to a SoundCloud URL. + + Uri + + Uri + + + + + + + Width + + The width of the browser source. +If none is provided, this will be the output width of the video settings. + + Int + + Int + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Set-obssoundCloudSource -Uri https://soundcloud.com/outertone/sets/new-earth + + + + + + + + Set-OBSSourceFilterEnabled + OBSSourceFilterEnabled + Set + + Set-OBSSourceFilterEnabled : SetSourceFilterEnabled + + 0.2 + + + Sets the enable state of a source filter. + Set-OBSSourceFilterEnabled calls the OBS WebSocket with a request of type SetSourceFilterEnabled. + + + + Set-OBSSourceFilterEnabled + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + FilterName + + Name of the filter + + String + + String + + + + + + + FilterEnabled + + New enable state of the filter + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + FilterEnabled + + New enable state of the filter + + Switch + + Switch + + + + + + + FilterName + + Name of the filter + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterenabled + + + + + + Set-OBSSourceFilterIndex + OBSSourceFilterIndex + Set + + Set-OBSSourceFilterIndex : SetSourceFilterIndex + + 0.2 + + + Sets the index position of a filter on a source. + Set-OBSSourceFilterIndex calls the OBS WebSocket with a request of type SetSourceFilterIndex. + + + + Set-OBSSourceFilterIndex + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + FilterName + + Name of the filter + + String + + String + + + + + + + FilterIndex + + New index position of the filter + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + FilterIndex + + New index position of the filter + + Double + + Double + + + + + + + FilterName + + Name of the filter + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefilterindex + + + + + + Set-OBSSourceFilterName + OBSSourceFilterName + Set + + Set-OBSSourceFilterName : SetSourceFilterName + + 0.2 + + + Sets the name of a source filter (rename). + Set-OBSSourceFilterName calls the OBS WebSocket with a request of type SetSourceFilterName. + + + + Set-OBSSourceFilterName + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + FilterName + + Current name of the filter + + String + + String + + + + + + + NewFilterName + + New name for the filter + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + FilterName + + Current name of the filter + + String + + String + + + + + + + NewFilterName + + New name for the filter + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltername + + + + + + Set-OBSSourceFilterSettings + OBSSourceFilterSettings + Set + + Set-OBSSourceFilterSettings : SetSourceFilterSettings + + 0.2 + + + Sets the settings of a source filter. + Set-OBSSourceFilterSettings calls the OBS WebSocket with a request of type SetSourceFilterSettings. + + + + Set-OBSSourceFilterSettings + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + FilterName + + Name of the filter to set the settings of + + String + + String + + + + + + + FilterSettings + + Object of settings to apply + + Psobject + + Psobject + + + + + + + Overlay + + True == apply the settings on top of existing ones, False == reset the input to its defaults, then apply settings. + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + FilterName + + Name of the filter to set the settings of + + String + + String + + + + + + + FilterSettings + + Object of settings to apply + + Psobject + + Psobject + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + Overlay + + True == apply the settings on top of existing ones, False == reset the input to its defaults, then apply settings. + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + SourceName + + Name of the source the filter is on + + String + + String + + + + + + + SourceUuid + + UUID of the source the filter is on + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setsourcefiltersettings + + + + + + Set-OBSStreamServiceSettings + OBSStreamServiceSettings + Set + + Set-OBSStreamServiceSettings : SetStreamServiceSettings + + 0.2 + + + Sets the current stream service settings (stream destination). + Note: Simple RTMP settings can be set with type `rtmp_custom` and the settings fields `server` and `key`. + Set-OBSStreamServiceSettings calls the OBS WebSocket with a request of type SetStreamServiceSettings. + + + + Set-OBSStreamServiceSettings + + StreamServiceType + + Type of stream service to apply. Example: `rtmp_common` or `rtmp_custom` + + String + + String + + + + + + + StreamServiceSettings + + Settings to apply to the service + + Psobject + + Psobject + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + StreamServiceSettings + + Settings to apply to the service + + Psobject + + Psobject + + + + + + + StreamServiceType + + Type of stream service to apply. Example: `rtmp_common` or `rtmp_custom` + + String + + String + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstreamservicesettings + + + + + + Set-OBSStudioModeEnabled + OBSStudioModeEnabled + Set + + Set-OBSStudioModeEnabled : SetStudioModeEnabled + + 0.2 + + + Enables or disables studio mode + Set-OBSStudioModeEnabled calls the OBS WebSocket with a request of type SetStudioModeEnabled. + + + + Set-OBSStudioModeEnabled + + StudioModeEnabled + + True == Enabled, False == Disabled + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + StudioModeEnabled + + True == Enabled, False == Disabled + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setstudiomodeenabled + + + + + + Set-OBSSwitchSource + OBSSwitchSource + Set + + Adds a VLC playlist source + + 0.2 + + + Adds or sets VLC playlist sources to OBS. + VLC must be installed for this to work. + + + + Set-OBSSwitchSource + + SourceList + + The path to the media file. + + System.String[] + + System.String[] + + + + + + + Select + + What to select in the playlist. +If a number is provided, this will select an index. +If a string is provided, this will select the whole name or last part of a name, accepting wildcards. + + System.Object + + System.Object + + + + + + + Loop + + If set, the list of sources will loop. + + Switch + + Switch + + + + + + + TimeSwitch + + If set, will switch between sources. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + + Switch + + Switch + + + + + + + Interval + + The interval between sources + + Timespan + + Timespan + + + + + + + Duration + + The duration between sources that are switching at a time. + + Timespan + + Timespan + + + + + + + TimeSwitchTo + + The item that will be switched in a TimeSwitch, after -Duration and -Interval. + + String + + String + + + + + + + MediaStateSwitch + + If set, will switch on the underlying source's media state events. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + + Switch + + Switch + + + + + + + MediaStateChange + + The change in media state that should trigger a switch + + System.Object + + System.Object + + + + + + + MediaSwitchTo + + When the source switcher is trigger by media end, this determines the next source that will be switched to. + + String + + String + + + + + + + TransitionName + + The name of the transition between sources. + + String + + String + + + + + + + TransitionProperty + + The properties sent to the transition. +Notice: this current requires confirmation in the UI. + + Psobject + + Psobject + + + + + + + ShowTransition + + The name of the transition used to show a source. + + String + + String + + + + + + + ShowTransitionProperty + + The properties sent to the show transition. +Notice: this current requires confirmation in the UI. + + Psobject + + Psobject + + + + + + + HideTransition + + The transition used to hide a source. + + String + + String + + + + + + + HideTransitionProperty + + The properties sent to the hide transition. +Notice: this current requires confirmation in the UI. + + Psobject + + Psobject + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + FitToScreen + + If set, will fit the input to the screen. + + Switch + + Switch + + + + + + + + + + Duration + + The duration between sources that are switching at a time. + + Timespan + + Timespan + + + + + + + FitToScreen + + If set, will fit the input to the screen. + + Switch + + Switch + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + HideTransition + + The transition used to hide a source. + + String + + String + + + + + + + HideTransitionProperty + + The properties sent to the hide transition. +Notice: this current requires confirmation in the UI. + + Psobject + + Psobject + + + + + + + Interval + + The interval between sources + + Timespan + + Timespan + + + + + + + Loop + + If set, the list of sources will loop. + + Switch + + Switch + + + + + + + MediaStateChange + + The change in media state that should trigger a switch + + System.Object + + System.Object + + + + + + + MediaStateSwitch + + If set, will switch on the underlying source's media state events. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + + Switch + + Switch + + + + + + + MediaSwitchTo + + When the source switcher is trigger by media end, this determines the next source that will be switched to. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Select + + What to select in the playlist. +If a number is provided, this will select an index. +If a string is provided, this will select the whole name or last part of a name, accepting wildcards. + + System.Object + + System.Object + + + + + + + ShowTransition + + The name of the transition used to show a source. + + String + + String + + + + + + + ShowTransitionProperty + + The properties sent to the show transition. +Notice: this current requires confirmation in the UI. + + Psobject + + Psobject + + + + + + + SourceList + + The path to the media file. + + System.String[] + + System.String[] + + + + + + + TimeSwitch + + If set, will switch between sources. +Sources will be displayed for a -Duration. +No source wil be displayed for an -Interval. + + Switch + + Switch + + + + + + + TimeSwitchTo + + The item that will be switched in a TimeSwitch, after -Duration and -Interval. + + String + + String + + + + + + + TransitionName + + The name of the transition between sources. + + String + + String + + + + + + + TransitionProperty + + The properties sent to the transition. +Notice: this current requires confirmation in the UI. + + Psobject + + Psobject + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory + + + + + + + Add-OBSInput + + + + + Set-OBSInputSettings + + + + + + + + Set-OBSTBarPosition + OBSTBarPosition + Set + + Set-OBSTBarPosition : SetTBarPosition + + 0.2 + + + Sets the position of the TBar. + **Very important note**: This will be deprecated and replaced in a future version of obs-websocket. + Set-OBSTBarPosition calls the OBS WebSocket with a request of type SetTBarPosition. + + + + Set-OBSTBarPosition + + Position + + New position + + Double + + Double + + + + + + + Release + + Whether to release the TBar. Only set `false` if you know that you will be sending another position update + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + Position + + New position + + Double + + Double + + + + + + + Release + + Whether to release the TBar. Only set `false` if you know that you will be sending another position update + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#settbarposition + + + + + + Set-OBSVideoSettings + OBSVideoSettings + Set + + Set-OBSVideoSettings : SetVideoSettings + + 0.2 + + + Sets the current video settings. + Note: Fields must be specified in pairs. For example, you cannot set only `baseWidth` without needing to specify `baseHeight`. + Set-OBSVideoSettings calls the OBS WebSocket with a request of type SetVideoSettings. + + + + Set-OBSVideoSettings + + FpsNumerator + + Numerator of the fractional FPS value + + Double + + Double + + + + + + + FpsDenominator + + Denominator of the fractional FPS value + + Double + + Double + + + + + + + BaseWidth + + Width of the base (canvas) resolution in pixels + + Double + + Double + + + + + + + BaseHeight + + Height of the base (canvas) resolution in pixels + + Double + + Double + + + + + + + OutputWidth + + Width of the output resolution in pixels + + Double + + Double + + + + + + + OutputHeight + + Height of the output resolution in pixels + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + BaseHeight + + Height of the base (canvas) resolution in pixels + + Double + + Double + + + + + + + BaseWidth + + Width of the base (canvas) resolution in pixels + + Double + + Double + + + + + + + FpsDenominator + + Denominator of the fractional FPS value + + Double + + Double + + + + + + + FpsNumerator + + Numerator of the fractional FPS value + + Double + + Double + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + OutputHeight + + Height of the output resolution in pixels + + Double + + Double + + + + + + + OutputWidth + + Width of the output resolution in pixels + + Double + + Double + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#setvideosettings + + + + + + Set-OBSVLCSource + OBSVLCSource + Set + + Adds a VLC playlist source + + 0.2 + + + Adds or sets VLC playlist sources to OBS. + VLC must be installed for this to work. + + + + Set-OBSVLCSource + + FilePath + + The path to the media file. + + System.String[] + + System.String[] + + + + + + + Select + + What to select in the playlist. +If a number is provided, this will select an index. +If a string is provided, this will select the whole name or last part of a name, accepting wildcards. +If an `[IO.FileInfo]` is provided, this will be the exact file. + + System.Object + + System.Object + + + + + + + Shuffle + + If set, will shuffle the playlist + + Switch + + Switch + + + + + + + Loop + + If set, the playlist will loop. + + Switch + + Switch + + + + + + + Subtitle + + If set, will show subtitles, if available. + + Switch + + Switch + + + + + + + AudioTrack + + The selected audio track number. + + Int + + Int + + + + + + + SubtitleTrack + + The selected subtitle track number. + + Int + + Int + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + FitToScreen + + If set, will fit the input to the screen. + + Switch + + Switch + + + + + + + + + + AudioTrack + + The selected audio track number. + + Int + + Int + + + + + + + FilePath + + The path to the media file. + + System.String[] + + System.String[] + + + + + + + FitToScreen + + If set, will fit the input to the screen. + + Switch + + Switch + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + Loop + + If set, the playlist will loop. + + Switch + + Switch + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Select + + What to select in the playlist. +If a number is provided, this will select an index. +If a string is provided, this will select the whole name or last part of a name, accepting wildcards. +If an `[IO.FileInfo]` is provided, this will be the exact file. + + System.Object + + System.Object + + + + + + + Shuffle + + If set, will shuffle the playlist + + Switch + + Switch + + + + + + + Subtitle + + If set, will show subtitles, if available. + + Switch + + Switch + + + + + + + SubtitleTrack + + The selected subtitle track number. + + Int + + Int + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Set-OBSVLCSource -FilePath .\*.mp3 # Creates a playlist of all MP3s in the current directory + + + + + + + Add-OBSInput + + + + + Set-OBSInputSettings + + + + + + + + Set-OBSWaveformSource + OBSWaveformSource + Set + + OBS Waveform Source + + 0.2 + + + Gets, Sets, or Adds a waveform source in OBS. + Waveform sources require the [Waveform Plugin](https://obsproject.com/forum/resources/waveform.1423/) + + + + Set-OBSWaveformSource + + Width + + The width of the browser source. +If none is provided, this will be the output width of the video settings. + + Int + + Int + + + + + + + Height + + The width of the browser source. +If none is provided, this will be the output height of the video settings. + + Int + + Int + + + + + + + AudioSource + + The audio source for the waveform. + + String + + String + + + + + + + DisplayMode + + The display mode for the waveform. + + String + + String + + + + + + + RenderMode + + The render mode for the waveform. + + String + + String + + + + + + + WindowMode + + The windowing mode for the waveform. +This is the mathematical function used to determine the current "window" of audio data. + + String + + String + + + + + + + Color + + The color used for the waveform. + + Psobject + + Psobject + + + + + + + CrestColor + + The crest color used for the waveform. +This will be ignored if the render mode is not "gradient". + + Psobject + + Psobject + + + + + + + ChannelMode + + The channel mode for the waveform. +This can be either mono or stereo. + + String + + String + + + + + + + ChannelSpacing + + The number of pixels between each channel in stereo mode + + Int + + Int + + + + + + + RadialLayout + + If set, will use a radial layout for the waveform +Radial layouts will ignore the desired height of the source and instead create a square. + + Switch + + Switch + + + + + + + InvertRadialDirection + + If set, will invert the direction for a radial waveform. + + Switch + + Switch + + + + + + + NoramlizeVolume + + If set, will normalize the volume displayed in the waveform. + + Switch + + Switch + + + + + + + AutoFftSize + + If set, will automatically declare an FFTSize + + Switch + + Switch + + + + + + + FastPeak + + If set, will attempt to make audio peaks render faster. + + Switch + + Switch + + + + + + + BarWidth + + The width of the waveform bar. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + + Int + + Int + + + + + + + BarGap + + The gap between waveform bars. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + + Int + + Int + + + + + + + StepWidth + + The width of waveform bar step. +This is only valid when -DisplayMode is 'stepped_bars' + + Int + + Int + + + + + + + StepGap + + The gap between waveform bar steps. +This is only valid when -DisplayMode is 'stepped_bars' + + Int + + Int + + + + + + + LowCutoff + + The low-frequency cutoff of the waveform. + + Int + + Int + + + + + + + HighCutoff + + The high-frequency cutoff of the waveform. + + Int + + Int + + + + + + + Floor + + The floor of the waveform. + + Int + + Int + + + + + + + Ceiling + + The ceiling of the waveform. + + Int + + Int + + + + + + + Slope + + + Double + + Double + + + + + + + RollOffOctave + + + Double + + Double + + + + + + + RollOffRate + + + Double + + Double + + + + + + + GradientRatio + + + Double + + Double + + + + + + + Deadzone + + + Double + + Double + + + + + + + TemporalSmoothing + + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + + + + AudioSource + + The audio source for the waveform. + + String + + String + + + + + + + AutoFftSize + + If set, will automatically declare an FFTSize + + Switch + + Switch + + + + + + + BarGap + + The gap between waveform bars. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + + Int + + Int + + + + + + + BarWidth + + The width of the waveform bar. +This is only valid when -DisplayMode is 'bars' or 'stepped_bars' + + Int + + Int + + + + + + + Ceiling + + The ceiling of the waveform. + + Int + + Int + + + + + + + ChannelMode + + The channel mode for the waveform. +This can be either mono or stereo. + + String + + String + + + + + + + ChannelSpacing + + The number of pixels between each channel in stereo mode + + Int + + Int + + + + + + + Color + + The color used for the waveform. + + Psobject + + Psobject + + + + + + + CrestColor + + The crest color used for the waveform. +This will be ignored if the render mode is not "gradient". + + Psobject + + Psobject + + + + + + + Deadzone + + + Double + + Double + + + + + + + DisplayMode + + The display mode for the waveform. + + String + + String + + + + + + + FastPeak + + If set, will attempt to make audio peaks render faster. + + Switch + + Switch + + + + + + + Floor + + The floor of the waveform. + + Int + + Int + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + GradientRatio + + + Double + + Double + + + + + + + Height + + The width of the browser source. +If none is provided, this will be the output height of the video settings. + + Int + + Int + + + + + + + HighCutoff + + The high-frequency cutoff of the waveform. + + Int + + Int + + + + + + + InvertRadialDirection + + If set, will invert the direction for a radial waveform. + + Switch + + Switch + + + + + + + LowCutoff + + The low-frequency cutoff of the waveform. + + Int + + Int + + + + + + + Name + + The name of the input. +If no name is provided, the last segment of the URI or file path will be the input name. + + String + + String + + + + + + + NoramlizeVolume + + If set, will normalize the volume displayed in the waveform. + + Switch + + Switch + + + + + + + RadialLayout + + If set, will use a radial layout for the waveform +Radial layouts will ignore the desired height of the source and instead create a square. + + Switch + + Switch + + + + + + + RenderMode + + The render mode for the waveform. + + String + + String + + + + + + + RollOffOctave + + + Double + + Double + + + + + + + RollOffRate + + + Double + + Double + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Slope + + + Double + + Double + + + + + + + StepGap + + The gap between waveform bar steps. +This is only valid when -DisplayMode is 'stepped_bars' + + Int + + Int + + + + + + + StepWidth + + The width of waveform bar step. +This is only valid when -DisplayMode is 'stepped_bars' + + Int + + Int + + + + + + + TemporalSmoothing + + + String + + String + + + + + + + Width + + The width of the browser source. +If none is provided, this will be the output width of the video settings. + + Int + + Int + + + + + + + WindowMode + + The windowing mode for the waveform. +This is the mathematical function used to determine the current "window" of audio data. + + String + + String + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Add-OBSWaveformSource -Name "SpeakerWaveform" + + + + + + + + Set-OBSWindowSource + OBSWindowSource + Set + + Adds or sets a window capture source + + 0.2 + + + Adds or sets a windows capture source in OBS. This captures the contents of a window. + + + + Set-OBSWindowSource + + WindowTitle + + The monitor number. +This the number of the monitor you would like to capture. + + String + + String + + + + + + + CaptureMethod + + The number of the capture method. By default, automatic (0). + + Int + + Int + + + + + + + CapturePriority + + The capture priority. + + String + + String + + + + + + + CaptureCursor + + If set, will capture the cursor. +This will be set by default. +If explicitly set to false, the cursor will not be captured. + + Switch + + Switch + + + + + + + ClientArea + + If set, will capture the client area. +This will be set by default. + + Switch + + Switch + + + + + + + ForceSDR + + If set, will force SDR. + + Switch + + Switch + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Name + + The name of the input. +If no name is provided, "Display $($Monitor + 1)" will be the input source name. + + String + + String + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + + + + CaptureCursor + + If set, will capture the cursor. +This will be set by default. +If explicitly set to false, the cursor will not be captured. + + Switch + + Switch + + + + + + + CaptureMethod + + The number of the capture method. By default, automatic (0). + + Int + + Int + + + + + + + CapturePriority + + The capture priority. + + String + + String + + + + + + + ClientArea + + If set, will capture the client area. +This will be set by default. + + Switch + + Switch + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + ForceSDR + + If set, will force SDR. + + Switch + + Switch + + + + + + + Name + + The name of the input. +If no name is provided, "Display $($Monitor + 1)" will be the input source name. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + WindowTitle + + The monitor number. +This the number of the monitor you would like to capture. + + String + + String + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Get-Process -id $PID | Set-OBSWindowCaptureSource -Name CurrentWindow + + + + + + + + Show-OBS + OBS + Show + + Shows content in OBS + + 0.2 + + + Shows content in Open Broadcasting Studio + + + + Show-OBS + + FilePath + + The path or URI to show in OBS. + + String + + String + + + + + + + Name + + The name of the source in OBS. +If this is not provided, it will be derived from the -FilePath. + + String + + String + + + + + + + RootPath + + A root path. +If not provided, this will be the root of the -FilePath (if it is a filepath). +If the file path was a URI, the root path will be ignored. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + Opacity + + The opacity to use for the input. +If not provided, will default to 2/3rds. +Will only be used when showing a browser source with a -FilePath + + Double + + Double + + + + + + + SourceParameter + + Any parameters to pass to the source command. + + System.Collections.IDictionary + + System.Collections.IDictionary + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + FitToScreen + + If set, will make the input become the size of the screen. + + Switch + + Switch + + + + + + + + + + FilePath + + The path or URI to show in OBS. + + String + + String + + + + + + + FitToScreen + + If set, will make the input become the size of the screen. + + Switch + + Switch + + + + + + + Force + + If set, will check if the source exists in the scene before creating it and removing any existing sources found. +If not set, you will get an error if a source with the same name exists. + + Switch + + Switch + + + + + + + Name + + The name of the source in OBS. +If this is not provided, it will be derived from the -FilePath. + + String + + String + + + + + + + Opacity + + The opacity to use for the input. +If not provided, will default to 2/3rds. +Will only be used when showing a browser source with a -FilePath + + Double + + Double + + + + + + + RootPath + + A root path. +If not provided, this will be the root of the -FilePath (if it is a filepath). +If the file path was a URI, the root path will be ignored. + + String + + String + + + + + + + Scene + + The name of the scene. +If no scene name is provided, the current program scene will be used. + + String + + String + + + + + + + SourceParameter + + Any parameters to pass to the source command. + + System.Collections.IDictionary + + System.Collections.IDictionary + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + '<svg viewBox="0 0 1 1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"> + + <polygon points="0 0 0 1 1 1 1 0" fill="blue" /> +</svg>' | Set-Content .\BlueRect.svg +Show-OBS -FilePath .\BlueRect.svg + + + + + -------------------------- EXAMPLE 2 -------------------------- + + PS > + + Show-OBS -FilePath *excited* -RootPath $home\Pictures\Gif + + + + + + + + Start-OBSEffect + OBSEffect + Start + + Starts obs-powershell effects. + + 0.2 + + + Starts an effect in OBS PowerShell. + An effect is either a series of messages or a command that can produce a series of messages. + + + + Start-OBSEffect + + EffectName + + The name of the effect. + + System.String[] + + System.String[] + + + + + + + Duration + + The duration of the effect. +If provided, all effects should use this duration. +If not provided, each effect should use it's own duration. + + Timespan + + Timespan + + + + + + + EffectParameter + + The parameters passed to the effect. + + System.Collections.IDictionary + + System.Collections.IDictionary + + + + + + + EffectArgument + + The arguments passed to the effect. + + System.Management.Automation.PSObject[] + + System.Management.Automation.PSObject[] + + + + + + + Step + + If provided, will step thru running + + Int + + Int + + + + + + + SceneItemID + + The SceneItemID. If this is provided, the effect will be given a target. + + Int + + Int + + + + + + + SceneName + + The SceneName. If this is provided with a -SceneItemID or -SourceName, the effect will be given a target. + + String + + String + + + + + + + FilterName + + The Filter Name. If this is provided with a -SourceName, the effect will be given a target. + + String + + String + + + + + + + SourceName + + The Source Name. If this is provided with a -FitlerName -or -SceneName, the effect will be given a target. + + String + + String + + + + + + + Loop + + If set, will loop the effect. + + Switch + + Switch + + + + + + + LoopCount + + If provided, will loop the effect a number of times. + + Int + + Int + + + + + + + Bounce + + If set, will bounce the effect (flip it / reverse it) + + Switch + + Switch + + + + + + + Reverse + + If set, will reverse an effect. + + Switch + + Switch + + + + + + + + + + Bounce + + If set, will bounce the effect (flip it / reverse it) + + Switch + + Switch + + + + + + + Duration + + The duration of the effect. +If provided, all effects should use this duration. +If not provided, each effect should use it's own duration. + + Timespan + + Timespan + + + + + + + EffectArgument + + The arguments passed to the effect. + + System.Management.Automation.PSObject[] + + System.Management.Automation.PSObject[] + + + + + + + EffectName + + The name of the effect. + + System.String[] + + System.String[] + + + + + + + EffectParameter + + The parameters passed to the effect. + + System.Collections.IDictionary + + System.Collections.IDictionary + + + + + + + FilterName + + The Filter Name. If this is provided with a -SourceName, the effect will be given a target. + + String + + String + + + + + + + Loop + + If set, will loop the effect. + + Switch + + Switch + + + + + + + LoopCount + + If provided, will loop the effect a number of times. + + Int + + Int + + + + + + + Reverse + + If set, will reverse an effect. + + Switch + + Switch + + + + + + + SceneItemID + + The SceneItemID. If this is provided, the effect will be given a target. + + Int + + Int + + + + + + + SceneName + + The SceneName. If this is provided with a -SceneItemID or -SourceName, the effect will be given a target. + + String + + String + + + + + + + SourceName + + The Source Name. If this is provided with a -FitlerName -or -SceneName, the effect will be given a target. + + String + + String + + + + + + + Step + + If provided, will step thru running + + Int + + Int + + + + + + + + + Get-OBSEffect + + + + + + + + Start-OBSOutput + OBSOutput + Start + + Start-OBSOutput : StartOutput + + 0.2 + + + Starts an output. + Start-OBSOutput calls the OBS WebSocket with a request of type StartOutput. + + + + Start-OBSOutput + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startoutput + + + + + + Start-OBSRecord + OBSRecord + Start + + Start-OBSRecord : StartRecord + + 0.2 + + + Starts the record output. + Start-OBSRecord calls the OBS WebSocket with a request of type StartRecord. + + + + Start-OBSRecord + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Start-OBSRecord + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startrecord + + + + + + Start-OBSReplayBuffer + OBSReplayBuffer + Start + + Start-OBSReplayBuffer : StartReplayBuffer + + 0.2 + + + Starts the replay buffer output. + Start-OBSReplayBuffer calls the OBS WebSocket with a request of type StartReplayBuffer. + + + + Start-OBSReplayBuffer + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Start-OBSReplayBuffer + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startreplaybuffer + + + + + + Start-OBSStream + OBSStream + Start + + Start-OBSStream : StartStream + + 0.2 + + + Starts the stream output. + Start-OBSStream calls the OBS WebSocket with a request of type StartStream. + + + + Start-OBSStream + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Start-OBSStream + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startstream + + + + + + Start-OBSVirtualCam + OBSVirtualCam + Start + + Start-OBSVirtualCam : StartVirtualCam + + 0.2 + + + Starts the virtualcam output. + Start-OBSVirtualCam calls the OBS WebSocket with a request of type StartVirtualCam. + + + + Start-OBSVirtualCam + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Start-OBSVirtualCam + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#startvirtualcam + + + + + + Stop-OBSEffect + OBSEffect + Stop + + Stops obs-powershell effects. + + 0.2 + + + Stops an effect in OBS PowerShell. + A running effect is a series of messages, and the obs-websocket does not let you cancel a message. + However, OBS effects can be bounced or running in a loop. + If these effects are stopped, they will not continue to loop or bounce. + + + + Stop-OBSEffect + + EffectName + + The name of the effect. + + String + + String + + + + + + + + + + EffectName + + The name of the effect. + + String + + String + + + + + + + + + Get-OBSEffect + + + + + Start-OBSEffect + + + + + + + + Stop-OBSOutput + OBSOutput + Stop + + Stop-OBSOutput : StopOutput + + 0.2 + + + Stops an output. + Stop-OBSOutput calls the OBS WebSocket with a request of type StopOutput. + + + + Stop-OBSOutput + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopoutput + + + + + + Stop-OBSRecord + OBSRecord + Stop + + Stop-OBSRecord : StopRecord + + 0.2 + + + Stops the record output. + Stop-OBSRecord calls the OBS WebSocket with a request of type StopRecord. + + + + Stop-OBSRecord + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Stop-OBSRecord + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stoprecord + + + + + + Stop-OBSReplayBuffer + OBSReplayBuffer + Stop + + Stop-OBSReplayBuffer : StopReplayBuffer + + 0.2 + + + Stops the replay buffer output. + Stop-OBSReplayBuffer calls the OBS WebSocket with a request of type StopReplayBuffer. + + + + Stop-OBSReplayBuffer + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Stop-OBSReplayBuffer + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopreplaybuffer + + + + + + Stop-OBSStream + OBSStream + Stop + + Stop-OBSStream : StopStream + + 0.2 + + + Stops the stream output. + Stop-OBSStream calls the OBS WebSocket with a request of type StopStream. + + + + Stop-OBSStream + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Stop-OBSStream + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopstream + + + + + + Stop-OBSVirtualCam + OBSVirtualCam + Stop + + Stop-OBSVirtualCam : StopVirtualCam + + 0.2 + + + Stops the virtualcam output. + Stop-OBSVirtualCam calls the OBS WebSocket with a request of type StopVirtualCam. + + + + Stop-OBSVirtualCam + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Stop-OBSVirtualCam + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#stopvirtualcam + + + + + + Switch-OBSInputMute + OBSInputMute + Switch + + Switch-OBSInputMute : ToggleInputMute + + 0.2 + + + Toggles the audio mute state of an input. + Switch-OBSInputMute calls the OBS WebSocket with a request of type ToggleInputMute. + + + + Switch-OBSInputMute + + InputName + + Name of the input to toggle the mute state of + + String + + String + + + + + + + InputUuid + + UUID of the input to toggle the mute state of + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + InputName + + Name of the input to toggle the mute state of + + String + + String + + + + + + + InputUuid + + UUID of the input to toggle the mute state of + + String + + String + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleinputmute + + + + + + Switch-OBSOutput + OBSOutput + Switch + + Switch-OBSOutput : ToggleOutput + + 0.2 + + + Toggles the status of an output. + Switch-OBSOutput calls the OBS WebSocket with a request of type ToggleOutput. + + + + Switch-OBSOutput + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + OutputName + + Output name + + String + + String + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#toggleoutput + + + + + + Switch-OBSRecord + OBSRecord + Switch + + Switch-OBSRecord : ToggleRecord + + 0.2 + + + Toggles the status of the record output. + Switch-OBSRecord calls the OBS WebSocket with a request of type ToggleRecord. + + + + Switch-OBSRecord + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Switch-OBSRecord + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecord + + + + + + Switch-OBSRecordPause + OBSRecordPause + Switch + + Switch-OBSRecordPause : ToggleRecordPause + + 0.2 + + + Toggles pause on the record output. + Switch-OBSRecordPause calls the OBS WebSocket with a request of type ToggleRecordPause. + + + + Switch-OBSRecordPause + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Switch-OBSRecordPause + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglerecordpause + + + + + + Switch-OBSReplayBuffer + OBSReplayBuffer + Switch + + Switch-OBSReplayBuffer : ToggleReplayBuffer + + 0.2 + + + Toggles the state of the replay buffer output. + Switch-OBSReplayBuffer calls the OBS WebSocket with a request of type ToggleReplayBuffer. + + + + Switch-OBSReplayBuffer + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Switch-OBSReplayBuffer + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglereplaybuffer + + + + + + Switch-OBSStream + OBSStream + Switch + + Switch-OBSStream : ToggleStream + + 0.2 + + + Toggles the status of the stream output. + Switch-OBSStream calls the OBS WebSocket with a request of type ToggleStream. + + + + Switch-OBSStream + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Switch-OBSStream + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglestream + + + + + + Switch-OBSVirtualCam + OBSVirtualCam + Switch + + Switch-OBSVirtualCam : ToggleVirtualCam + + 0.2 + + + Toggles the state of the virtualcam output. + Switch-OBSVirtualCam calls the OBS WebSocket with a request of type ToggleVirtualCam. + + + + Switch-OBSVirtualCam + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + + + + NoResponse + + If set, will not attempt to receive a response from OBS. +This can increase performance, and also silently ignore critical errors + + Switch + + Switch + + + + + + + PassThru + + If set, will return the information that would otherwise be sent to OBS. + + Switch + + Switch + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Switch-OBSVirtualCam + + + + + + + + + https://github.com/obsproject/obs-websocket/blob/master/docs/generated/protocol.md#togglevirtualcam + + + + + + Watch-OBS + OBS + Watch + + Watches OBS + + 0.2 + + + Watches the OBS websocket for events. + + + + Watch-OBS + + WebSocketURI + + The OBS websocket URL. If not provided, this will default to loopback on port 4455. + + Uri + + Uri + + + + + + + WebSocketToken + + A randomly generated password used to connect to OBS. +You can see the websocket password in Tools -> obs-websocket settings -> show connect info + + String + + String + + + + + + + BufferSize + + The size of the buffer to use when receiving messages from the websocket. + + Int + + Int + + + + + + + + + + BufferSize + + The size of the buffer to use when receiving messages from the websocket. + + Int + + Int + + + + + + + WebSocketToken + + A randomly generated password used to connect to OBS. +You can see the websocket password in Tools -> obs-websocket settings -> show connect info + + String + + String + + + + + + + WebSocketURI + + The OBS websocket URL. If not provided, this will default to loopback on port 4455. + + Uri + + Uri + + + + + + + + + -------------------------- EXAMPLE 1 -------------------------- + + PS > + + Watch-OBS -WebSocketToken 12345 # Obviously, replace this with your password. + + + + + -------------------------- EXAMPLE 2 -------------------------- + + PS > + + Watch-OBS # If you turn off authentication on OBS + + + + + + + Connect-OBS + + + + + Receive-OBS + + + + + + diff --git a/obs-powershell.format.ps1xml b/obs-powershell.format.ps1xml index 473517f1d..8d1bfeae5 100644 --- a/obs-powershell.format.ps1xml +++ b/obs-powershell.format.ps1xml @@ -1,5 +1,5 @@ - + @@ -247,7 +247,7 @@ - OBS.GetSourceFilterList.ResponseOBS.GetSourceFilter.Response + OBS.GetSourceFilterList.Response OBS.GetSourceFilterList.Response OBS.GetSourceFilter.Response @@ -985,7 +985,7 @@ } elseif ($canUseANSI) { # For ANSI, - '' + $esc + ']8m;;' + $Link + $esc + '\' + '' + $esc + ']8;;' + $Link + $esc + '\' } } @@ -1142,6 +1142,7 @@ ) begin { + if (-not $Depth) { $depth = $FormatEnumerationLimit } $toYaml = { param( [Parameter(ValueFromPipeline,Position=0)]$Object, diff --git a/obs-powershell.ps.psd1 b/obs-powershell.ps.psd1 index 585d82acc..b8a65d8c8 100644 --- a/obs-powershell.ps.psd1 +++ b/obs-powershell.ps.psd1 @@ -1,5 +1,5 @@ @{ - ModuleVersion = '0.1.9' + ModuleVersion = '0.2' RootModule = 'obs-powershell.psm1' Description = 'Script your streams' Guid = '1417123e-a932-439f-9b68-a7313cf1e170' @@ -7,8 +7,7 @@ CompanyName = 'Start-Automating' Copyright = '2022-2023 Start-Automating' FormatsToProcess = 'obs-powershell.format.ps1xml' - TypesToProcess = 'obs-powershell.types.ps1xml' - RequiredModules = 'ThreadJob' + TypesToProcess = 'obs-powershell.types.ps1xml' PowerShellVersion = '7.0' PrivateData = @{ PSData = @{ @@ -16,152 +15,74 @@ ProjectURI = 'https://github.com/StartAutomating/obs-powershell' LicenseURI = 'https://github.com/StartAutomating/obs-powershell/blob/main/LICENSE' ReleaseNotes = @' -## obs-powershell 0.1.9: - -* New Filters! - * @exeldro makes some excellent obs plugins - * obs-powershell now supports a couple of them: - * Set-OBS3DFilter (#137) - Transform an object in 3D! - * Set-OBSShaderFilter (#134) - Apply _any_ PixelShader! -* New Effects! - * LeftToRight (#125) / RightToLeft (#126) - * TopToBottom (#127) / BottomToTop (#128) - * ZoomIn (#129) / ZoomOut (#130) -* Effect Fixes - * Start-OBSEffect - Adding -LoopCount (#133) - * FadeIn/FadeOut no longer conflict (#119) (thanks @I-Am-Jakoby)! - ---- - -## obs-powershell 0.1.8: - -* Added Sponsorship, Please support obs-powershell (#78) -* Added OBS-PowerShell Effects (#109) - * Effect Commands - * Get-OBSEffect - * Import-OBSEffect - * Start-OBSEffect - * Stop-OBSEffect - * Remove-OBSEffect - * ColorLoop (#113) - * FadeIn (#112) - * FadeOut (#114) (thanks @I-Am-Jakoby !) -* Adding Commands for Filtering - * Set/Add-OBSGainFilter (#94) - * Set/Add-OBSColorFilter (#92) - * Set/Add-OBSScrollFilter (#93) - * Set/Add-OBSSharpnessFilter (#95) - * Set/Add-OBSRenderDelayFilter (#96) - * Set/Add-OBSEqualizerFilter (#97) -* New Easy Sources - * Set/Add-OBSAudioOutputSource (#110) - * Set/Add-OBSWindowSource (#104) - * Set/Add-OBSVLCSource (#102) -* Scene Items Can Now Do A Lot More - * Animate allows for multiple steps and is more careful (#75 and #73) - * Move, Scale, Rotate are written using animate (#80, #81, #89) -* Extending Inputs (#99) -* Autogenerating help for extended types, thanks to a new version of [HelpOut](https://github.com/StartAutomating/HelpOut) -* Improving Performance and Stability of Send/Receive/Watch-OBS (#77, #90, #86, #106, #107) - - -* Also, new logo (#76) +> Like It? [Star It](https://github.com/StartAutomating/obs-powershell) +> Love It? [Support It](https://github.com/sponsors/StartAutomating) + +## obs-powershell 0.2: + +* So Many Shaders! +* @exeldro makes some excellent obs plugins + * Every PixelShader from [obs-shaderfilter](https://github.com/exeldro/obs-shaderfilter) has an auto-generated function: + * As of this build, there are 142 Shader functions! + * Flip Shader ( #200 ) + * Zoom XY Shader ( #199 ) + * RGBA Percent Shader ( #198 ) + * Reflect Shader ( #197 ) + * Shader Commands now support -Force +* Drastically improved start time on Windows (#214) +* OBS Sources: + * New Sources: + * OBSSoundCloudSource ( #179 ) + * OBSSwitchSource (#142) + * OBSMarkdownSource (#143) + * OBSWaveformSource (#141) + * All existing sources are now implemented in a `Get`, and aliased to `Set`,`Add` + * Making Set also Get-OBSWindowSource (#152) + * Making Set also Get-OBSVLCSource (#151) + * Making Set also Get-OBSMediaSource (#150) + * Making Set also Get-OBSColorSource (#148) + * Making Set also Get-OBSBrowserSource (#147) + * Making Set also Get-OBSAudioOutputSource (#146) +* New Effects: + * Zoom In / Out Effect ( #164 ) + * Start-OBSEffect - Adding -Reverse (Fixes #121) +* Exporting `$obs` (#157, #158, #159) and drastically expanding pseudo types +* Pseudo Types + * GetCurrentProgramScene.ToString() ( Fixes #202, Fixes #166 ) + * OBS.Beat ( #195 ) + * OBS.Beat.Timer + * OBS.Beat.TapBPM ( #191) + * Stopping OBS.Beat.Timer on Unload + * OBS.Beat.get_Sine ( #192 ) + * OBS.Beat.get_Cosine ( #193 ) + * OBS.Beat.Angle ( #194 ) + * OBS.Beat.Duration ( #189 ) + * OBS.Beat.BeatCount ( #190 ) + * OBS.Beat.BeatStart ( #188 ) + * OBS.Beat.BPM ( #187 ) + * $obs.Beat ( #186 ) + * OBS.Input + * OBS.Input.Disable/EnableAllFilter(s) ( #183 ) + * OBS.SceneItem.Animate Permissiveness ( #182 ) + * OBS.Filter.Disable PassThru support ( #181 ) + * OBS.Statistics ( #178 ) + * OBS.Input ( #174 ) + * OBS.Filter ( #175 ) + * OBS.SceneItem ( #173 ) + * OBS.GetSceneItemList.Response.Stretch() ( #172 ) + * OBS.GetSceneItemList.Response.Center() ( #171 ) + * OBS.GetInputList .SourceName alias ( #170 ) + * Adding .SceneItem to OBS.Inputs (Fixes #154) +* Minor Fixes: + * Watch-OBS -BufferSize: Defaulting to 64kb ( Fixes #212, Fixes #213 ) + * Fixing -Scene parameter defaults ( Fixes #210 ) + * Updating Build Conditions + * obs-powershell now mounts itself ( #180 ) + * obs-powershell supporting module profiles (#155) --- -## obs-powershell 0.1.7: - -* New Commands: - * Show-OBS (Fixes #66) - * Hide-OBS (Fixes #67) - * Remove-OBS (Fixes #68) - -* Adding -Force to Add-OBS*Source commands (Fixes #69) -* Add-OBS*Source Commands: Supporting -SceneItemEnabled (Fixes #70) -* Add-OBSMediaSource, adding -FitToScreen (Fixes #71) - ---- - -## obs-powershell 0.1.6: - -* Adding OBS.SceneItem .Scale (Fixes #64) -* OBS.SceneItem .FitToScreen, adjusting .Scale (Fixes #63) -* Add-OBSMediaSource: Fixing -InputSettings / -SceneItemEnabled (Fixes #62) - ---- - -## obs-powershell 0.1.5: - -* Adding OBS.SceneItem .Animate (Fixes #59) - - ---- - -## obs-powershell 0.1.4: - -* Adding Add-OBSColorSource (Fixes #51) -* Save-OBSSourceScreenShot: - * Attaching .InputName, .SourceName, .ImageWidth, .ImageHeight to output (Fixes #50) - * Now returns a file (Fixes #49) -* -Path parameters now attempt to resolve to an absolute path (Fixes #48) -* All scene items can now: - * Blend() / get .BlendMode (Fixes #53) - * FitToScreen() (Fixes #46) - * Crop() (Fixes #57) - * Rotate() (Fixes #35) -* Color Sources can now .SetColor (Fixes #55) - ---- - -## obs-powershell 0.1.3: - -* Requiring ThreadJob Module (Thanks @nyanhp!) (Fixes #36) -* Fixing Add-OBSBrowserSource (Fixes #34) -* Improving Batch Processing Capabilities (Fixes #38) -* Requiring PowerShell Version 7 - ---- - -## obs-powershell 0.1.2: - -* New Commands - * Add-OBSBrowserSource (Fixes #24) - * Add-OBSDisplaySource (Fixes #25) - * Add-OBSMediaSource (Fixes #28) - * Clear-OBSScene (Fixes #27) -* New Methods - * OBS.GetSceneListResponse: - * .Remove()/.Delete() (Fixes #26) - * .Lock()/.Unlock() (Fixes #32) -* General Improvements - * Standardizing Parameter Naming (Fixes #30) - * Using GUIDs for RequestIDs (Fixes #29) - * Updated logo (Fixes #23) - ---- - -## obs-powershell 0.1.1: - -* Connect-OBS now caches connections (Fixes #18) -* Adding new core commands: - * Watch-OBS (Fixes #19) - * Receive-OBS (Fixes #20) - * Send-OBS (Fixes #21) -* All commands now support -PassThru (Fixes #16) -* All commands now increment requests correctly (Fixes #15) -* Improved formatting: - * Get-OBSScene (Fixes #14) - * Get-OBSSceneItem (Fixes #17) - ---- - -## obs-powershell 0.1: - -Initial Release of obs-powershell - -* Connect-OBS/Disconnect-OBS let you connect and disconnect. -* Commands exist for every request in the websocket. -* OBS Events are broadcast to the the runspace. +Previous release notes available in the [CHANGELOG](https://github.com/StartAutomating/obs-powershell/blob/main/CHANGELOG.md) '@ } } diff --git a/obs-powershell.ps.psm1 b/obs-powershell.ps.psm1 index 31e708b91..3c18952c8 100644 --- a/obs-powershell.ps.psm1 +++ b/obs-powershell.ps.psm1 @@ -1,10 +1,32 @@ -[Include('*-*.ps1')]$PSScriptRoot +param() + +if ((-not (Test-Path '.git')) -or $args -match 'production') { + . $PSScriptRoot/allcommands.ps1 +} else { + $CommandsPath = (Join-Path $PSScriptRoot "Commands") + [Include('*-*.ps1')]$CommandsPath +} + + $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = { Get-OBSEffect | Stop-OBSEffect + if (${obs-powershell}.Beat.Timer) { + ${obs-powershell}.Beat.Timer.Stop() + Get-EventSubscriber | Where-Object SourceObject -eq ${obs-powershell}.Beat.Timer | Unregister-Event + } Disconnect-OBS } +$myModule = $MyInvocation.MyCommand.ScriptBlock.Module +$NewDriveSplat = @{PSProvider='FileSystem';ErrorAction='Ignore';Scope='Global'} +New-PSDrive -Name $myModule.Name -Root $PSScriptRoot -Description "$MyModule" @NewDriveSplat + +if ($home) { + New-PSDrive -Name "my-$($MyModule.Name)" -Root (Join-Path $home ".$($myModule.Name)") -Description "My $MyModule" @NewDriveSplat +} + +#region obs-powershell startup foreach ($noun in 'Streaming','Recording') { foreach ($verb in 'Start', 'Stop') { Set-Alias "$verb-$noun" "$verb-OBS$($noun -replace 'ing')" @@ -13,4 +35,18 @@ foreach ($noun in 'Streaming','Recording') { Connect-OBS -$MyInvocation.MyCommand.ScriptBlock.Module | Import-OBSEffect \ No newline at end of file +$script:OBS = ${script:OBS-PowerShell} = $MyInvocation.MyCommand.ScriptBlock.Module + +$script:OBS | Import-OBSEffect + +$script:OBS.pstypenames.insert(0,'obs.powershell') + +$ModuleProfilePath = $Profile | Split-Path | Join-Path -ChildPath "$($script:OBS.Name).profile.ps1" +$script:variablesToExport = @('obs','obs-powershell') +if (Test-Path $ModuleProfilePath) { + . $ModuleProfilePath +} + +#endregion obs-powershell startup + +Export-ModuleMember -Function * -Variable $script:variablesToExport -Alias * \ No newline at end of file diff --git a/obs-powershell.psd1 b/obs-powershell.psd1 index 6c45395ac..27d5c2b00 100644 --- a/obs-powershell.psd1 +++ b/obs-powershell.psd1 @@ -1,5 +1,5 @@ @{ - ModuleVersion = '0.1.9' + ModuleVersion = '0.2' RootModule = 'obs-powershell.psm1' Description = 'Script your streams' Guid = '1417123e-a932-439f-9b68-a7313cf1e170' @@ -7,8 +7,7 @@ CompanyName = 'Start-Automating' Copyright = '2022-2023 Start-Automating' FormatsToProcess = 'obs-powershell.format.ps1xml' - TypesToProcess = 'obs-powershell.types.ps1xml' - RequiredModules = 'ThreadJob' + TypesToProcess = 'obs-powershell.types.ps1xml' PowerShellVersion = '7.0' PrivateData = @{ PSData = @{ @@ -16,152 +15,74 @@ ProjectURI = 'https://github.com/StartAutomating/obs-powershell' LicenseURI = 'https://github.com/StartAutomating/obs-powershell/blob/main/LICENSE' ReleaseNotes = @' -## obs-powershell 0.1.9: - -* New Filters! - * @exeldro makes some excellent obs plugins - * obs-powershell now supports a couple of them: - * Set-OBS3DFilter (#137) - Transform an object in 3D! - * Set-OBSShaderFilter (#134) - Apply _any_ PixelShader! -* New Effects! - * LeftToRight (#125) / RightToLeft (#126) - * TopToBottom (#127) / BottomToTop (#128) - * ZoomIn (#129) / ZoomOut (#130) -* Effect Fixes - * Start-OBSEffect - Adding -LoopCount (#133) - * FadeIn/FadeOut no longer conflict (#119) (thanks @I-Am-Jakoby)! - ---- - -## obs-powershell 0.1.8: - -* Added Sponsorship, Please support obs-powershell (#78) -* Added OBS-PowerShell Effects (#109) - * Effect Commands - * Get-OBSEffect - * Import-OBSEffect - * Start-OBSEffect - * Stop-OBSEffect - * Remove-OBSEffect - * ColorLoop (#113) - * FadeIn (#112) - * FadeOut (#114) (thanks @I-Am-Jakoby !) -* Adding Commands for Filtering - * Set/Add-OBSGainFilter (#94) - * Set/Add-OBSColorFilter (#92) - * Set/Add-OBSScrollFilter (#93) - * Set/Add-OBSSharpnessFilter (#95) - * Set/Add-OBSRenderDelayFilter (#96) - * Set/Add-OBSEqualizerFilter (#97) -* New Easy Sources - * Set/Add-OBSAudioOutputSource (#110) - * Set/Add-OBSWindowSource (#104) - * Set/Add-OBSVLCSource (#102) -* Scene Items Can Now Do A Lot More - * Animate allows for multiple steps and is more careful (#75 and #73) - * Move, Scale, Rotate are written using animate (#80, #81, #89) -* Extending Inputs (#99) -* Autogenerating help for extended types, thanks to a new version of [HelpOut](https://github.com/StartAutomating/HelpOut) -* Improving Performance and Stability of Send/Receive/Watch-OBS (#77, #90, #86, #106, #107) - - -* Also, new logo (#76) - ---- - -## obs-powershell 0.1.7: - -* New Commands: - * Show-OBS (Fixes #66) - * Hide-OBS (Fixes #67) - * Remove-OBS (Fixes #68) - -* Adding -Force to Add-OBS*Source commands (Fixes #69) -* Add-OBS*Source Commands: Supporting -SceneItemEnabled (Fixes #70) -* Add-OBSMediaSource, adding -FitToScreen (Fixes #71) - ---- - -## obs-powershell 0.1.6: - -* Adding OBS.SceneItem .Scale (Fixes #64) -* OBS.SceneItem .FitToScreen, adjusting .Scale (Fixes #63) -* Add-OBSMediaSource: Fixing -InputSettings / -SceneItemEnabled (Fixes #62) +> Like It? [Star It](https://github.com/StartAutomating/obs-powershell) +> Love It? [Support It](https://github.com/sponsors/StartAutomating) + +## obs-powershell 0.2: + +* So Many Shaders! +* @exeldro makes some excellent obs plugins + * Every PixelShader from [obs-shaderfilter](https://github.com/exeldro/obs-shaderfilter) has an auto-generated function: + * As of this build, there are 142 Shader functions! + * Flip Shader ( #200 ) + * Zoom XY Shader ( #199 ) + * RGBA Percent Shader ( #198 ) + * Reflect Shader ( #197 ) + * Shader Commands now support -Force +* Drastically improved start time on Windows (#214) +* OBS Sources: + * New Sources: + * OBSSoundCloudSource ( #179 ) + * OBSSwitchSource (#142) + * OBSMarkdownSource (#143) + * OBSWaveformSource (#141) + * All existing sources are now implemented in a `Get`, and aliased to `Set`,`Add` + * Making Set also Get-OBSWindowSource (#152) + * Making Set also Get-OBSVLCSource (#151) + * Making Set also Get-OBSMediaSource (#150) + * Making Set also Get-OBSColorSource (#148) + * Making Set also Get-OBSBrowserSource (#147) + * Making Set also Get-OBSAudioOutputSource (#146) +* New Effects: + * Zoom In / Out Effect ( #164 ) + * Start-OBSEffect - Adding -Reverse (Fixes #121) +* Exporting `$obs` (#157, #158, #159) and drastically expanding pseudo types +* Pseudo Types + * GetCurrentProgramScene.ToString() ( Fixes #202, Fixes #166 ) + * OBS.Beat ( #195 ) + * OBS.Beat.Timer + * OBS.Beat.TapBPM ( #191) + * Stopping OBS.Beat.Timer on Unload + * OBS.Beat.get_Sine ( #192 ) + * OBS.Beat.get_Cosine ( #193 ) + * OBS.Beat.Angle ( #194 ) + * OBS.Beat.Duration ( #189 ) + * OBS.Beat.BeatCount ( #190 ) + * OBS.Beat.BeatStart ( #188 ) + * OBS.Beat.BPM ( #187 ) + * $obs.Beat ( #186 ) + * OBS.Input + * OBS.Input.Disable/EnableAllFilter(s) ( #183 ) + * OBS.SceneItem.Animate Permissiveness ( #182 ) + * OBS.Filter.Disable PassThru support ( #181 ) + * OBS.Statistics ( #178 ) + * OBS.Input ( #174 ) + * OBS.Filter ( #175 ) + * OBS.SceneItem ( #173 ) + * OBS.GetSceneItemList.Response.Stretch() ( #172 ) + * OBS.GetSceneItemList.Response.Center() ( #171 ) + * OBS.GetInputList .SourceName alias ( #170 ) + * Adding .SceneItem to OBS.Inputs (Fixes #154) +* Minor Fixes: + * Watch-OBS -BufferSize: Defaulting to 64kb ( Fixes #212, Fixes #213 ) + * Fixing -Scene parameter defaults ( Fixes #210 ) + * Updating Build Conditions + * obs-powershell now mounts itself ( #180 ) + * obs-powershell supporting module profiles (#155) --- -## obs-powershell 0.1.5: - -* Adding OBS.SceneItem .Animate (Fixes #59) - - ---- - -## obs-powershell 0.1.4: - -* Adding Add-OBSColorSource (Fixes #51) -* Save-OBSSourceScreenShot: - * Attaching .InputName, .SourceName, .ImageWidth, .ImageHeight to output (Fixes #50) - * Now returns a file (Fixes #49) -* -Path parameters now attempt to resolve to an absolute path (Fixes #48) -* All scene items can now: - * Blend() / get .BlendMode (Fixes #53) - * FitToScreen() (Fixes #46) - * Crop() (Fixes #57) - * Rotate() (Fixes #35) -* Color Sources can now .SetColor (Fixes #55) - ---- - -## obs-powershell 0.1.3: - -* Requiring ThreadJob Module (Thanks @nyanhp!) (Fixes #36) -* Fixing Add-OBSBrowserSource (Fixes #34) -* Improving Batch Processing Capabilities (Fixes #38) -* Requiring PowerShell Version 7 - ---- - -## obs-powershell 0.1.2: - -* New Commands - * Add-OBSBrowserSource (Fixes #24) - * Add-OBSDisplaySource (Fixes #25) - * Add-OBSMediaSource (Fixes #28) - * Clear-OBSScene (Fixes #27) -* New Methods - * OBS.GetSceneListResponse: - * .Remove()/.Delete() (Fixes #26) - * .Lock()/.Unlock() (Fixes #32) -* General Improvements - * Standardizing Parameter Naming (Fixes #30) - * Using GUIDs for RequestIDs (Fixes #29) - * Updated logo (Fixes #23) - ---- - -## obs-powershell 0.1.1: - -* Connect-OBS now caches connections (Fixes #18) -* Adding new core commands: - * Watch-OBS (Fixes #19) - * Receive-OBS (Fixes #20) - * Send-OBS (Fixes #21) -* All commands now support -PassThru (Fixes #16) -* All commands now increment requests correctly (Fixes #15) -* Improved formatting: - * Get-OBSScene (Fixes #14) - * Get-OBSSceneItem (Fixes #17) - ---- - -## obs-powershell 0.1: - -Initial Release of obs-powershell - -* Connect-OBS/Disconnect-OBS let you connect and disconnect. -* Commands exist for every request in the websocket. -* OBS Events are broadcast to the the runspace. +Previous release notes available in the [CHANGELOG](https://github.com/StartAutomating/obs-powershell/blob/main/CHANGELOG.md) '@ } } @@ -175,6 +96,158 @@ Initial Release of obs-powershell 'Send-OBS', 'Show-OBS', 'Watch-OBS', +'Set-OBSAudioOutputSource', +'Set-OBSBrowserSource', +'Set-OBSColorSource', +'Set-OBSDisplaySource', +'Set-OBSMarkdownSource', +'Set-OBSMediaSource', +'Set-OBSSoundCloudSource', +'Set-OBSSwitchSource', +'Set-OBSVLCSource', +'Set-OBSWaveformSource', +'Set-OBSWindowSource', +'Get-OBS3dSwapTransitionShader', +'Get-OBSAddShader', +'Get-OBSAlphaBorderShader', +'Get-OBSAlphaGamingBentCameraShader', +'Get-OBSAnimatedPathShader', +'Get-OBSAnimatedTextureShader', +'Get-OBSAsciiShader', +'Get-OBSAspectRatioShader', +'Get-OBSBackgroundRemovalShader', +'Get-OBSBlendOpacityShader', +'Get-OBSBlinkShader', +'Get-OBSBloomShader', +'Get-OBSBorderShader', +'Get-OBSBoxBlurShader', +'Get-OBSBulgePinchShader', +'Get-OBSBurnShader', +'Get-OBSCartoonShader', +'Get-OBSCellShadedShader', +'Get-OBSChromaticAberrationShader', +'Get-OBSChromaUVDistortionShader', +'Get-OBSCircleMaskFilterShader', +'Get-OBSClockAnalogShader', +'Get-OBSClockDigitalLedShader', +'Get-OBSClockDigitalNixieShader', +'Get-OBSColorDepthShader', +'Get-OBSColorGradeFilterShader', +'Get-OBSCornerPinShader', +'Get-OBSCrtCurvatureShader', +'Get-OBSCurveShader', +'Get-OBSCutRectPerCornerShader', +'Get-OBSCylinderShader', +'Get-OBSDarkenShader', +'Get-OBSDeadPixelFixerShader', +'Get-OBSDensitySatHueShader', +'Get-OBSDiffuseTransitionShader', +'Get-OBSDigitalRainShader', +'Get-OBSDivideRotateShader', +'Get-OBSDoodleShader', +'Get-OBSDrawingsShader', +'Get-OBSDropShadowShader', +'Get-OBSDrunkShader', +'Get-OBSDynamicMaskShader', +'Get-OBSEdgeDetectionShader', +'Get-OBSEmbersShader', +'Get-OBSEmbossColorShader', +'Get-OBSEmbossShader', +'Get-OBSExeldroBentCameraShader', +'Get-OBSFadeTransitionShader', +'Get-OBSFillColorGradientShader', +'Get-OBSFillColorLinearShader', +'Get-OBSFillColorRadialDegreesShader', +'Get-OBSFillColorRadialPercentageShader', +'Get-OBSFilterTemplateShader', +'Get-OBSFire3Shader', +'Get-OBSFireShader', +'Get-OBSFireworks2Shader', +'Get-OBSFireworksShader', +'Get-OBSFisheyeShader', +'Get-OBSFisheyeXyShader', +'Get-OBSFlipShader', +'Get-OBSFrostedGlassShader', +'Get-OBSGammaCorrectionShader', +'Get-OBSGaussianBlurAdvancedShader', +'Get-OBSGaussianBlurShader', +'Get-OBSGaussianBlurSimpleShader', +'Get-OBSGaussianExampleShader', +'Get-OBSGaussianSimpleShader', +'Get-OBSGbCameraShader', +'Get-OBSGlassShader', +'Get-OBSGlitchAnalogShader', +'Get-OBSGlitchShader', +'Get-OBSGlowShader', +'Get-OBSGradientShader', +'Get-OBSHalftoneShader', +'Get-OBSHeatWaveSimpleShader', +'Get-OBSHexagonShader', +'Get-OBSHslHsvSaturationShader', +'Get-OBSHueRotatonShader', +'Get-OBSIntensityScopeShader', +'Get-OBSInvertLumaShader', +'Get-OBSLuminance2Shader', +'Get-OBSLuminanceAlphaShader', +'Get-OBSLuminanceShader', +'Get-OBSMatrixShader', +'Get-OBSMultiplyShader', +'Get-OBSNightSkyShader', +'Get-OBSOpacityShader', +'Get-OBSPagePeelShader', +'Get-OBSPagePeelTransitionShader', +'Get-OBSPerlinNoiseShader', +'Get-OBSPieChartShader', +'Get-OBSPixelationShader', +'Get-OBSPixelationTransitionShader', +'Get-OBSPolarShader', +'Get-OBSPulseShader', +'Get-OBSRainbowShader', +'Get-OBSRainWindowShader', +'Get-OBSRectangularDropShadowShader', +'Get-OBSReflectShader', +'Get-OBSRemovePartialPixelsShader', +'Get-OBSRepeatShader', +'Get-OBSRepeatTextureShader', +'Get-OBSRGBAPercentShader', +'Get-OBSRgbColorWheelShader', +'Get-OBSRgbSplitShader', +'Get-OBSRgbvisibilityShader', +'Get-OBSRGSSAAShader', +'Get-OBSRippleShader', +'Get-OBSRotatingSourceShader', +'Get-OBSRotatoeShader', +'Get-OBSRoundedRect2Shader', +'Get-OBSRoundedRectPerCornerShader', +'Get-OBSRoundedRectPerSideShader', +'Get-OBSRoundedRectShader', +'Get-OBSRoundedStrokeGradientShader', +'Get-OBSRoundedStrokeShader', +'Get-OBSScanLineShader', +'Get-OBSSeascapeShader', +'Get-OBSSeasickShader', +'Get-OBSSelectiveColorShader', +'Get-OBSShakeShader', +'Get-OBSShineShader', +'Get-OBSSimpleGradientShader', +'Get-OBSSimplexNoiseShader', +'Get-OBSSmartDenoiseShader', +'Get-OBSSpecularShineShader', +'Get-OBSSpotlightShader', +'Get-OBSSwirlShader', +'Get-OBSTetraShader', +'Get-OBSThermalShader', +'Get-OBSTvCrtSubpixelShader', +'Get-OBSTwistShader', +'Get-OBSTwoPassDropShadowShader', +'Get-OBSVCRShader', +'Get-OBSVHSShader', +'Get-OBSVignettingShader', +'Get-OBSVoronoiPixelationShader', +'Get-OBSZigZagShader', +'Get-OBSZoomBlurShader', +'Get-OBSZoomShader', +'Get-OBSZoomXYShader', 'Set-OBS3DFilter', 'Set-OBSColorFilter', 'Set-OBSEqualizerFilter', @@ -229,12 +302,14 @@ Initial Release of obs-powershell 'Get-OBSSceneItemId', 'Get-OBSSceneItemIndex', 'Get-OBSSceneItemLocked', +'Get-OBSSceneItemSource', 'Get-OBSSceneItemTransform', 'Get-OBSSceneSceneTransitionOverride', 'Get-OBSSceneTransition', 'Get-OBSSourceActive', 'Get-OBSSourceFilter', 'Get-OBSSourceFilterDefaultSettings', +'Get-OBSSourceFilterKind', 'Get-OBSSourceFilterList', 'Get-OBSSourceScreenshot', 'Get-OBSSpecialInputs', @@ -322,13 +397,6 @@ Initial Release of obs-powershell 'Switch-OBSReplayBuffer', 'Switch-OBSStream', 'Switch-OBSVirtualCam', -'Set-OBSAudioOutputSource', -'Set-OBSBrowserSource', -'Set-OBSColorSource', -'Set-OBSDisplaySource', -'Set-OBSMediaSource', -'Set-OBSVLCSource', -'Set-OBSWindowSource', 'Get-OBSEffect', 'Import-OBSEffect', 'Remove-OBSEffect', diff --git a/obs-powershell.psm1 b/obs-powershell.psm1 index a2e9956b8..237dfc667 100644 --- a/obs-powershell.psm1 +++ b/obs-powershell.psm1 @@ -1,19 +1,41 @@ -:ToIncludeFiles foreach ($file in (Get-ChildItem -Path "$PSScriptRoot" -Filter "*-*.ps1" -Recurse)) { - if ($file.Extension -ne '.ps1') { continue } # Skip if the extension is not .ps1 - foreach ($exclusion in '\.[^\.]+\.ps1$') { - if (-not $exclusion) { continue } - if ($file.Name -match $exclusion) { - continue ToIncludeFiles # Skip excluded files - } - } - . $file.FullName +param() + +if ((-not (Test-Path '.git')) -or $args -match 'production') { + . $PSScriptRoot/allcommands.ps1 +} else { + $CommandsPath = (Join-Path $PSScriptRoot "Commands") + :ToIncludeFiles foreach ($file in (Get-ChildItem -Path "$CommandsPath" -Filter "*-*.ps1" -Recurse)) { + if ($file.Extension -ne '.ps1') { continue } # Skip if the extension is not .ps1 + foreach ($exclusion in '\.[^\.]+\.ps1$') { + if (-not $exclusion) { continue } + if ($file.Name -match $exclusion) { + continue ToIncludeFiles # Skip excluded files + } + } + . $file.FullName + } } + + $MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = { Get-OBSEffect | Stop-OBSEffect + if (${obs-powershell}.Beat.Timer) { + ${obs-powershell}.Beat.Timer.Stop() + Get-EventSubscriber | Where-Object SourceObject -eq ${obs-powershell}.Beat.Timer | Unregister-Event + } Disconnect-OBS } +$myModule = $MyInvocation.MyCommand.ScriptBlock.Module +$NewDriveSplat = @{PSProvider='FileSystem';ErrorAction='Ignore';Scope='Global'} +New-PSDrive -Name $myModule.Name -Root $PSScriptRoot -Description "$MyModule" @NewDriveSplat + +if ($home) { + New-PSDrive -Name "my-$($MyModule.Name)" -Root (Join-Path $home ".$($myModule.Name)") -Description "My $MyModule" @NewDriveSplat +} + +#region obs-powershell startup foreach ($noun in 'Streaming','Recording') { foreach ($verb in 'Start', 'Stop') { Set-Alias "$verb-$noun" "$verb-OBS$($noun -replace 'ing')" @@ -22,4 +44,18 @@ foreach ($noun in 'Streaming','Recording') { Connect-OBS -$MyInvocation.MyCommand.ScriptBlock.Module | Import-OBSEffect +$script:OBS = ${script:OBS-PowerShell} = $MyInvocation.MyCommand.ScriptBlock.Module + +$script:OBS | Import-OBSEffect + +$script:OBS.pstypenames.insert(0,'obs.powershell') + +$ModuleProfilePath = $Profile | Split-Path | Join-Path -ChildPath "$($script:OBS.Name).profile.ps1" +$script:variablesToExport = @('obs','obs-powershell') +if (Test-Path $ModuleProfilePath) { + . $ModuleProfilePath +} + +#endregion obs-powershell startup + +Export-ModuleMember -Function * -Variable $script:variablesToExport -Alias * diff --git a/obs-powershell.types.ps1xml b/obs-powershell.types.ps1xml index 22c4c8a2f..a472d0edb 100644 --- a/obs-powershell.types.ps1xml +++ b/obs-powershell.types.ps1xml @@ -1,108 +1,303 @@ - + - OBS.GetInputList.Response + OBS.Beat - Mute + TapBPM - - Next - - - - Pause - - + + + + Cosine + + <# +.SYNOPSIS + Gets the Beat Cosine +.DESCRIPTION + Gets the Cosine of the BeatCount. + + Since this starts at 1, this would be at its highest value during the top of the beat. +#> +[Math]::Cos($this.BeatCount * ([Math]::PI/2)) + + + + Duration + + <# +.SYNOPSIS + Gets the Duration +.DESCRIPTION + Gets the Duration of a Beat +.OUTPUTS + [TimeSpan] +#> +if ($this.'.BPM') { + [Timespan]::FromMilliseconds((60 * 1000) / $this.'.BPM') +} + + + + <# +.SYNOPSIS + Gets the Duration +.DESCRIPTION + Gets the Duration of a Beat +.OUTPUTS + [TimeSpan] +#> +param( +# The new duration. +[timespan] +$Duration +) + +$this.BPM = ( 60000 / $Duration.TotalMilliseconds ) + + + + + + Sine + + <# +.SYNOPSIS + Gets the Beat Sine +.DESCRIPTION + Gets the Sine of the BeatCount. + + Since this starts at 0, this would be at its highest value during the middle of the beat. +#> +[Math]::Cos($this.BeatCount * [Math]::PI/2) + + + + Timer + + <# +.SYNOPSIS + Gets the Beat Timer +.DESCRIPTION + Gets the Timer object that should elapse every beat. + + This can be used to Register-ObjectEvent to run on a beat. +#> +return $this.'.Timer' + + + + <# +.SYNOPSIS + Sets the Beat Timer +.DESCRIPTION + Sets the Beat Timer. + + If no timer exists, one is created. Otherwise, the interval is updated. +.OUTPUTS + [TimeSpan] +#> +param( +# The new timer interval. +[timespan] +$Interval +) + +if (-not $this.'.Timer') { + $this | Add-Member NoteProperty '.Timer' ([Timers.Timer]::new($Interval.TotalMilliseconds)) -Force +} else { + $this.'.Timer'.Interval = $Interval.TotalMilliseconds +} + + + + + + + + + OBS.GetSourceFilterList.Response + - Play + Disable - Previous + Enable @@ -110,1060 +305,889 @@ $this | Send-OBSTriggerMediaInputAction -MediaAction "OBS_WEBSOCKET_MEDIA_INPUT_ - Restart + Set + + Enabled + + return $this.filterEnabled + + + + Index + + return $this.filterIndex + + + + Kind + + return $this.filterKind + + + + Settings + + ,$this.filterSettings + + + + + + OBS.GetSourceFilter.Response + - Stop + Disable - Unmute + Enable - - CurrentTime - + + Remove + + + + Set + + + + Enabled + + return $this.filterEnabled + - Filters + Index - <# -.SYNOPSIS - Gets an input's filters -.DESCRIPTION - Gets the filters related to an OBS input. -.EXAMPLE - $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg - $obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 - $obsPowerShellIcon.Input.Filters -.LINK - Get-OBSSourceFilterList -#> -Get-OBSSourceFilterList -SourceName $this.InputName + return $this.filterIndex - MonitorType + Kind - $this | Get-OBSInputAudioMonitorType + return $this.filterKind - - param( -[string] -$MonitorType -) -$validValues = "Monitor", "MonitorAndOutput", "None","Off","OBS_MONITORING_TYPE_MONITOR_ONLY","OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT","OBS_MONITORING_TYPE_MONITOR_ONLY" - -if ($MonitorType -notin $validValues) { - throw "Invalid Value: '$MonitorType' is not in '$($validValues -join "','")'" -} - -$realMonitorType = if ($MonitorType -like 'obs*') { - $MonitorType.ToUpper() -} elseif ($MonitorType -eq 'Monitor') { - "OBS_MONITORING_TYPE_MONITOR_ONLY" -} elseif ($MonitorType -eq 'MonitorAndOutput') { - "OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT" -} else { - "OBS_MONITORING_TYPE_NONE" -} - -$this | Set-OBSInputAudioMonitorType -MonitorType $realMonitorType - Settings - <# -.SYNOPSIS - Gets an input's settings -.DESCRIPTION - Gets the current settings for an OBS input. -.EXAMPLE - $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg - $obsPowerShellIcon.Input.Settings -.LINK - Get-OBSInputSettings -#> -(Get-OBSInputSettings -InputName $this.InputName).inputSettings + ,$this.filterSettings - + + + + + OBS.Filter + + + Disable + + + + Enable + + + + Remove + + + + Set + + + + Enabled + + return $this.filterEnabled + - - - - OBS.GetSceneItemList.Response + + Index + + return $this.filterIndex + + + + Kind + + return $this.filterKind + + + + Settings + + ,$this.filterSettings + + + + + + OBS.GetCurrentProgramScene.Response + + + ToString + + + + + + OBS.GetInputList.Response - Hide - Disable + DisableAllFilters + DisableAllFilter - Show - Enable + EnableAllFilters + EnableAllFilter + + + SourceName + inputName - Animate + DisableAllFilter + + + EnableAllFilter + + + + Mute + + + + Next + + + + Pause + + + + Play + - - - Blend - - - - Crop - + + + Previous + - Delete + Remove - Disable + Restart - Enable + Stop - FitToScreen + Unmute - - - Lock - - - Move - - - - Remove - - - - Rotate - - - - Scale - - - - SetZIndex - - - - Unlock - - - - BlendMode - - $this.sceneItemBlendMode -replace '^OBS_BLEND_' - - - - - Enabled - - return $this.sceneItemEnabled - - + if ($arg -is [bool]) { + $PassThru = $true + } +} +$this | Set-OBSMediaInputCursor -MediaCursor $mediaCursor -PassThru:$PassThru + Filters <# .SYNOPSIS - Gets a Scene Item's filters + Gets an input's filters .DESCRIPTION Gets the filters related to an OBS input. .EXAMPLE $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg $obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 - $obsPowerShellIcon.Filters + $obsPowerShellIcon.Input.Filters .LINK Get-OBSSourceFilterList #> -Get-OBSSourceFilterList -SourceName $this.SourceName +Get-OBSSourceFilterList -SourceName $this.InputName - ImageHeight + MonitorType - $this.sceneItemTransform.sourceHeight - + $this | Get-OBSInputAudioMonitorType + + param( +[string] +$MonitorType +) +$validValues = "Monitor", "MonitorAndOutput", "None","Off","OBS_MONITORING_TYPE_MONITOR_ONLY","OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT","OBS_MONITORING_TYPE_MONITOR_ONLY" + +if ($MonitorType -notin $validValues) { + throw "Invalid Value: '$MonitorType' is not in '$($validValues -join "','")'" +} + +$realMonitorType = if ($MonitorType -like 'obs*') { + $MonitorType.ToUpper() +} elseif ($MonitorType -eq 'Monitor') { + "OBS_MONITORING_TYPE_MONITOR_ONLY" +} elseif ($MonitorType -eq 'MonitorAndOutput') { + "OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT" +} else { + "OBS_MONITORING_TYPE_NONE" +} + +$this | Set-OBSInputAudioMonitorType -MonitorType $realMonitorType + - ImageWidth + SceneItem - $this.sceneItemTransform.sourceWidth - + <# +.SYNOPSIS + Gets an input's scene items +.DESCRIPTION + Gets the scene items associated with an input. +#> +Get-obsscene | + Select-Object -ExpandProperty Scenes | + Get-OBSSceneItem | + Where-Object SourceName -EQ $this.InputName | + Where-Object InputKind -EQ $this.InputKind - Input + Settings <# .SYNOPSIS - Gets a Scene Item's Input + Gets an input's settings .DESCRIPTION - Gets the OBS Input related to the current scene item. - - This value is cached upon first request, as it will never change as long as the source item exists. + Gets the current settings for an OBS input. .EXAMPLE - $stars = Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg - $stars.Input + $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg + $obsPowerShellIcon.Input.Settings +.LINK + Get-OBSInputSettings #> -if (-not $this.'.Input') { - $this | Add-Member NoteProperty '.Input' ( - $this | Get-OBSInput | Where-Object InputName -eq $this.SourceName - ) -Force -} - -$this.'.Input' - +(Get-OBSInputSettings -InputName $this.InputName).inputSettings + + <# +.SYNOPSIS + Sets an input's settings +.DESCRIPTION + Changes the settings for an OBS input. +.LINK + Set-OBSInputSettings +#> +param() +Set-OBSInputSettings -InputName $this.InputName -InputSettings $args[0] + - Layer + Status - return $this.sceneItemIndex - + <# +.SYNOPSIS + Gets an input's status +.DESCRIPTION + Gets the media status of an OBS input. +.LINK + Get-OBSMediaInputStatus +#> +param() +$this | Get-OBSMediaInputStatus - ZIndex + Volume - $indexInfo = $this | Get-OBSSceneItemIndex -if ($indexInfo.SceneItemIndex) { - $indexInfo.SceneItemIndex -} -elseif ($indexInfo -is [int]) { - $indexInfo -} + <# +.SYNOPSIS + Gets an input's volume +.DESCRIPTION + Gets an OBS input's volume mulitplier +.LINK + Get-OBSInputVolume +#> +($this | Get-OBSInputVolume).inputVolumeMul + + <# +.SYNOPSIS + Sets an input's volume +.DESCRIPTION + Sets an OBS input's volume mulitplier. + + This is normally between 0 (no sound) and 1 (normal levels). + + A source can be made up to 20 times the original volume. +.LINK + Set-OBSInputVolume +#> +param( +[double] +$Multiple +) + +# If multiple is less than zero, clamp it to avoid errors +if ($Multiple -lt 0) { $Multiple = 0} +# If multiple is greater than 20, claim it to avoid errors (and check your hearing) +if ($Multiple -gt 20) { $Multiple = 20} + +$this | Set-OBSInputVolume -InputVolumeMul $Multiple + - OBS.GetSourceFilterList.Response + OBS.Input + + DisableAllFilters + DisableAllFilter + + + EnableAllFilters + EnableAllFilter + + + SourceName + inputName + - Disable + DisableAllFilter - Enable + EnableAllFilter + + + Mute + - Remove + Next - Set + Pause - - Enabled - - return $this.filterEnabled - - - - Index - - return $this.filterIndex - - - - Kind - - return $this.filterKind - - - - Settings - - ,$this.filterSettings - - - - - - OBS.GetSourceFilter.Response - - Disable + Play - Enable + Previous @@ -1171,63 +1195,266 @@ if (-not $PassThru) { - Set + Restart - - Enabled + + Stop + + + + Unmute + + + + CurrentTime - return $this.filterEnabled + <# +.SYNOPSIS + Gets an input's current time +.DESCRIPTION + Gets an input's current time, if applicable +.LINK + Get-OBSMediaInputStatus +#> +param() + +$mediaCursor = ($this | Get-OBSMediaInputStatus).mediaCursor -as [double] +if (-not $mediaCursor) { $mediaCursor = [double]0} +[timespan]::FromMilliseconds($mediaCursor) + + <# +.SYNOPSIS + Sets an input's current time +.DESCRIPTION + Sets an input's current time. +.LINK + Send-OBSMediaInputCursor +#> +param() + +$mediaCursor = 0 + +$PassThru = $false +foreach ($arg in $args) { + if ($arg -is [double]) { + $mediaCursor = $arg + } + elseif ($arg -as [timespan]) { + $mediaCursor = $arg -as [timespan].TotalMilliseconds + } + if ($arg -is [bool]) { + $PassThru = $true + } +} +$this | Set-OBSMediaInputCursor -MediaCursor $mediaCursor -PassThru:$PassThru + - Index + Filters - return $this.filterIndex + <# +.SYNOPSIS + Gets an input's filters +.DESCRIPTION + Gets the filters related to an OBS input. +.EXAMPLE + $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg + $obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 + $obsPowerShellIcon.Input.Filters +.LINK + Get-OBSSourceFilterList +#> +Get-OBSSourceFilterList -SourceName $this.InputName - Kind + MonitorType - return $this.filterKind + $this | Get-OBSInputAudioMonitorType + + + param( +[string] +$MonitorType +) +$validValues = "Monitor", "MonitorAndOutput", "None","Off","OBS_MONITORING_TYPE_MONITOR_ONLY","OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT","OBS_MONITORING_TYPE_MONITOR_ONLY" + +if ($MonitorType -notin $validValues) { + throw "Invalid Value: '$MonitorType' is not in '$($validValues -join "','")'" +} + +$realMonitorType = if ($MonitorType -like 'obs*') { + $MonitorType.ToUpper() +} elseif ($MonitorType -eq 'Monitor') { + "OBS_MONITORING_TYPE_MONITOR_ONLY" +} elseif ($MonitorType -eq 'MonitorAndOutput') { + "OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT" +} else { + "OBS_MONITORING_TYPE_NONE" +} + +$this | Set-OBSInputAudioMonitorType -MonitorType $realMonitorType + + + + SceneItem + + <# +.SYNOPSIS + Gets an input's scene items +.DESCRIPTION + Gets the scene items associated with an input. +#> +Get-obsscene | + Select-Object -ExpandProperty Scenes | + Get-OBSSceneItem | + Where-Object SourceName -EQ $this.InputName | + Where-Object InputKind -EQ $this.InputKind Settings - ,$this.filterSettings + <# +.SYNOPSIS + Gets an input's settings +.DESCRIPTION + Gets the current settings for an OBS input. +.EXAMPLE + $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg + $obsPowerShellIcon.Input.Settings +.LINK + Get-OBSInputSettings +#> +(Get-OBSInputSettings -InputName $this.InputName).inputSettings + + + <# +.SYNOPSIS + Sets an input's settings +.DESCRIPTION + Changes the settings for an OBS input. +.LINK + Set-OBSInputSettings +#> +param() +Set-OBSInputSettings -InputName $this.InputName -InputSettings $args[0] + + + + Status + + <# +.SYNOPSIS + Gets an input's status +.DESCRIPTION + Gets the media status of an OBS input. +.LINK + Get-OBSMediaInputStatus +#> +param() +$this | Get-OBSMediaInputStatus + + + + Volume + + <# +.SYNOPSIS + Gets an input's volume +.DESCRIPTION + Gets an OBS input's volume mulitplier +.LINK + Get-OBSInputVolume +#> +($this | Get-OBSInputVolume).inputVolumeMul + + <# +.SYNOPSIS + Sets an input's volume +.DESCRIPTION + Sets an OBS input's volume mulitplier. + + This is normally between 0 (no sound) and 1 (normal levels). + + A source can be made up to 20 times the original volume. +.LINK + Set-OBSInputVolume +#> +param( +[double] +$Multiple +) + +# If multiple is less than zero, clamp it to avoid errors +if ($Multiple -lt 0) { $Multiple = 0} +# If multiple is greater than 20, claim it to avoid errors (and check your hearing) +if ($Multiple -gt 20) { $Multiple = 20} + +$this | Set-OBSInputVolume -InputVolumeMul $Multiple + @@ -1237,7 +1464,13 @@ $this | SetColor + + + Step + + + + Stop + + + + Changes + + <# +.SYNOPSIS + Gets the Effect's Changes +.DESCRIPTION + Gets the changes the effect will make, without a timespan. +#> +,@(if ($this.Messages) { + + foreach ($msg in $this.Messages) { + if ($msg.RequestType -eq 'Sleep') { + continue + } + $msg + } +}) + + + + Duration + + <# +.SYNOPSIS + Gets an Effect's Duration +.DESCRIPTION + Gets the total time the effect will sleep. +#> + +$totalMS = [double]0 +foreach ($msg in $this.Messages) { + if ($msg.RequestType -eq 'Sleep') { + $totalMS += $msg.RequestData.sleepMillis + } +} +[timespan]::FromMilliseconds($totalMS) + + + + EffectType + + <# +.SYNOPSIS + Gets an obs-powershell effect's type +.DESCRIPTION + Gets the type of an obs-powershell effect. + + Current can be either 'Command' or 'Messages' +#> +if ($this.pstypenames -like 'OBS.PowerShell.Effect.Command*') { + 'Command' +} else { + 'Messages' +} + + + + Index + + <# +.SYNOPSIS + Gets the index of the effect +.DESCRIPTION + Gets the current index of the effect. This is only used for to .Step thru an effect. +#> +if (-not $this.'.Index') { + Add-Member -MemberType NoteProperty -Name '.Index' -Value 0 -InputObject $this -Force +} + +$this.'.Index' + + + + + <# +.SYNOPSIS + Updates the Effect's Index +.DESCRIPTION + Updates an effect's index. This is only used to .Step() +#> +Add-Member -MemberType NoteProperty -Name '.Index' -Value ($args[0] -as [int]) -InputObject $this -Force + + + + + + + Reversed + + <# +.SYNOPSIS + Gets if an effect is reversed. +.DESCRIPTION + Gets if an effect is currently set to Reverse. + + Whenever reverse is set, effect messages will be reversed before being sent. +#> +if (-not $this.'.Reversed') { + $this | Add-Member NoteProperty '.Reversed' $false -Force +} + +$this.'.Reversed' + + + <# +.SYNOPSIS + Sets if an effect should be reversed. +.DESCRIPTION + Sets if an effect should be played in reverse. +#> +$this | Add-Member NoteProperty '.Reversed' ($args[0] -as [bool]) -Force + + + + + + + OBS.Powershell.Effect.Command + + + EffectName + + <# +.SYNOPSIS + Gets the Effect Name +.DESCRIPTION + Gets the name of an Effect. +#> +$obsEffectsPattern = [Regex]::new(' +(?> + ^OBS.(?>fx|effects?)\p{P} + | + [\p{P}-[-]]OBS\.(?>fx|effects?)$ + | + \p{P}OBS.(?>fx|effects?)\.(?>ps1|json) +) +','IgnoreCase,IgnorePatternWhitespace') + +$this.Name -replace $obsEffectsPattern + + + + + + OBS.GetSceneItemList.Response + + + Hide + Disable + + + Show + Enable + + + Animate + + + + Blend + + + + Center + + + + Crop + + + + Delete + + + + Disable + + + + Enable + + + + FitToScreen + + + + Lock + + + + Move + + + + Remove + + + + Rotate + + + + Scale + + + + SetZIndex + + + + Stretch + + + + Unlock + + + + BlendMode + + $this.sceneItemBlendMode -replace '^OBS_BLEND_' + + + + + Enabled + + return $this.sceneItemEnabled + + + + + Filters + + <# +.SYNOPSIS + Gets a Scene Item's filters +.DESCRIPTION + Gets the filters related to an OBS input. +.EXAMPLE + $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg + $obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 + $obsPowerShellIcon.Filters +.LINK + Get-OBSSourceFilterList +#> +Get-OBSSourceFilterList -SourceName $this.SourceName + + + + ImageHeight + + $this.sceneItemTransform.sourceHeight + + + + + ImageWidth + + $this.sceneItemTransform.sourceWidth + + + + + Input + + <# +.SYNOPSIS + Gets a Scene Item's Input +.DESCRIPTION + Gets the OBS Input related to the current scene item. + + This value is cached upon first request, as it will never change as long as the source item exists. +.EXAMPLE + $stars = Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg + $stars.Input +#> +if (-not $this.'.Input') { + $this | Add-Member NoteProperty '.Input' ( + $this | Get-OBSInput | Where-Object InputName -eq $this.SourceName + ) -Force +} + +$this.'.Input' + + + + + Layer + + return $this.sceneItemIndex + + + + + ZIndex + + $indexInfo = $this | Get-OBSSceneItemIndex +if ($indexInfo.SceneItemIndex) { + $indexInfo.SceneItemIndex +} +elseif ($indexInfo -is [int]) { + $indexInfo +} + + + + + + OBS.GetSceneItemId.Response + + + Hide + Disable + + + Show + Enable + + + Animate + + + + Blend + + + + Center + + + + Crop + + + + Delete + + + + Disable + + + + Enable + + + + FitToScreen + + + + Lock + + + + Move + + + + Remove + + + + Rotate + + + + Scale + + + + SetZIndex + + + + Stretch + + + + Unlock + + + + BlendMode + + $this.sceneItemBlendMode -replace '^OBS_BLEND_' + + + + + Enabled + + return $this.sceneItemEnabled + + + + + Filters + + <# +.SYNOPSIS + Gets a Scene Item's filters +.DESCRIPTION + Gets the filters related to an OBS input. +.EXAMPLE + $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg + $obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 + $obsPowerShellIcon.Filters +.LINK + Get-OBSSourceFilterList +#> +Get-OBSSourceFilterList -SourceName $this.SourceName + + + + ImageHeight + + $this.sceneItemTransform.sourceHeight + + + + + ImageWidth + + $this.sceneItemTransform.sourceWidth + + + + + Input + + <# +.SYNOPSIS + Gets a Scene Item's Input +.DESCRIPTION + Gets the OBS Input related to the current scene item. + + This value is cached upon first request, as it will never change as long as the source item exists. +.EXAMPLE + $stars = Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg + $stars.Input +#> +if (-not $this.'.Input') { + $this | Add-Member NoteProperty '.Input' ( + $this | Get-OBSInput | Where-Object InputName -eq $this.SourceName + ) -Force +} + +$this.'.Input' + + + + + Layer + + return $this.sceneItemIndex + + + + + ZIndex + + $indexInfo = $this | Get-OBSSceneItemIndex +if ($indexInfo.SceneItemIndex) { + $indexInfo.SceneItemIndex +} +elseif ($indexInfo -is [int]) { + $indexInfo +} + + + + + + OBS.SceneItem + + + Hide + Disable + + + Show + Enable + + + Animate + + + + Blend + + + + Center + + + + Crop + + + + Delete + + + + Disable + + + + Enable + + + + FitToScreen + + + + Lock + + + + Move + + + + Remove + + + + Rotate + + + + Scale + - Step + SetZIndex + + + + Stretch - Stop + Unlock - Changes + BlendMode - <# -.SYNOPSIS - Gets the Effect's Changes -.DESCRIPTION - Gets the changes the effect will make, without a timespan. -#> -,@(if ($this.Messages) { - - foreach ($msg in $this.Messages) { - if ($msg.RequestType -eq 'Sleep') { - continue - } - $msg - } -}) + $this.sceneItemBlendMode -replace '^OBS_BLEND_' + - Duration + Enabled - <# -.SYNOPSIS - Gets an Effect's Duration -.DESCRIPTION - Gets the total time the effect will sleep. -#> + return $this.sceneItemEnabled -$totalMS = [double]0 -foreach ($msg in $this.Messages) { - if ($msg.RequestType -eq 'Sleep') { - $totalMS += $msg.RequestData.sleepMillis - } -} -[timespan]::FromMilliseconds($totalMS) - EffectType + Filters <# .SYNOPSIS - Gets an obs-powershell effect's type + Gets a Scene Item's filters .DESCRIPTION - Gets the type of an obs-powershell effect. - - Current can be either 'Command' or 'Messages' + Gets the filters related to an OBS input. +.EXAMPLE + $obsPowerShellIcon = Show-OBS -Uri https://obs-powershell.start-automating.com/Assets/obs-powershell-animated-icon.svg + $obsPowerShellIcon | Set-OBSColorFilter -Opacity .5 + $obsPowerShellIcon.Filters +.LINK + Get-OBSSourceFilterList #> -if ($this.pstypenames -like 'OBS.PowerShell.Effect.Command*') { - 'Command' -} else { - 'Messages' -} +Get-OBSSourceFilterList -SourceName $this.SourceName - Index + ImageHeight - <# -.SYNOPSIS - Gets the index of the effect -.DESCRIPTION - Gets the current index of the effect. This is only used for to .Step thru an effect. -#> -if (-not $this.'.Index') { - Add-Member -MemberType NoteProperty -Name '.Index' -Value 0 -InputObject $this -Force -} - -$this.'.Index' - + $this.sceneItemTransform.sourceHeight - - <# -.SYNOPSIS - Updates the Effect's Index -.DESCRIPTION - Updates an effect's index. This is only used to .Step() -#> -Add-Member -MemberType NoteProperty -Name '.Index' -Value ($args[0] -as [int]) -InputObject $this -Force - - + + + ImageWidth + + $this.sceneItemTransform.sourceWidth - + - Reversed + Input <# .SYNOPSIS - Gets if an effect is reversed. + Gets a Scene Item's Input .DESCRIPTION - Gets if an effect is currently set to Reverse. + Gets the OBS Input related to the current scene item. - Whenever reverse is set, effect messages will be reversed before being sent. + This value is cached upon first request, as it will never change as long as the source item exists. +.EXAMPLE + $stars = Show-OBS -Uri https://pssvg.start-automating.com/Examples/Stars.svg + $stars.Input #> -if (-not $this.'.Reversed') { - $this | Add-Member NoteProperty '.Reversed' $false -Force +if (-not $this.'.Input') { + $this | Add-Member NoteProperty '.Input' ( + $this | Get-OBSInput | Where-Object InputName -eq $this.SourceName + ) -Force } -$this.'.Reversed' - - - <# -.SYNOPSIS - Sets if an effect should be reversed. -.DESCRIPTION - Sets if an effect should be played in reverse. -#> -$this | Add-Member NoteProperty '.Reversed' ($args[0] -as [bool]) -Force +$this.'.Input' - + - - - - OBS.Powershell.Effect.Command - - EffectName + Layer - $obsEffectsPattern = [Regex]::new(' -(?> - ^OBS.(?>fx|effects?)\p{P} - | - [\p{P}-[-]]OBS\.(?>fx|effects?)$ - | - \p{P}OBS.(?>fx|effects?)\.(?>ps1|json) -) -','IgnoreCase,IgnorePatternWhitespace') + return $this.sceneItemIndex -$this.Name -replace $obsEffectsPattern + + + + ZIndex + + $indexInfo = $this | Get-OBSSceneItemIndex +if ($indexInfo.SceneItemIndex) { + $indexInfo.SceneItemIndex +} +elseif ($indexInfo -is [int]) { + $indexInfo +}