Imported Upstream version 0.14.2+dfsg1
This commit is contained in:
parent
fb3990e9e5
commit
41a01dbf05
529 changed files with 25112 additions and 2336 deletions
|
|
@ -2,8 +2,11 @@ project(obs-transitions)
|
|||
|
||||
set(obs-transitions_SOURCES
|
||||
obs-transitions.c
|
||||
transition-slide.c
|
||||
transition-swipe.c
|
||||
transition-fade.c
|
||||
transition-cut.c
|
||||
transition-fade-to-color.c
|
||||
)
|
||||
|
||||
add_library(obs-transitions MODULE
|
||||
|
|
|
|||
37
plugins/obs-transitions/data/fade_to_color_transition.effect
Normal file
37
plugins/obs-transitions/data/fade_to_color_transition.effect
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
uniform float4x4 ViewProj;
|
||||
uniform texture2d tex;
|
||||
uniform float swp;
|
||||
uniform float4 color;
|
||||
|
||||
sampler_state textureSampler {
|
||||
Filter = Linear;
|
||||
AddressU = Clamp;
|
||||
AddressV = Clamp;
|
||||
};
|
||||
|
||||
struct VertData {
|
||||
float4 pos : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
|
||||
VertData VSDefault(VertData v_in)
|
||||
{
|
||||
VertData vert_out;
|
||||
vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj);
|
||||
vert_out.uv = v_in.uv;
|
||||
return vert_out;
|
||||
}
|
||||
|
||||
float4 PSFadeToColor(VertData v_in) : TARGET
|
||||
{
|
||||
return lerp(tex.Sample(textureSampler, v_in.uv), color, swp);
|
||||
}
|
||||
|
||||
technique FadeToColor
|
||||
{
|
||||
pass
|
||||
{
|
||||
vertex_shader = VSDefault(v_in);
|
||||
pixel_shader = PSFadeToColor(v_in);
|
||||
}
|
||||
}
|
||||
10
plugins/obs-transitions/data/locale/ar-SA.ini
Normal file
10
plugins/obs-transitions/data/locale/ar-SA.ini
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
FadeTransition="تلاشي"
|
||||
CutTransition="قطع"
|
||||
FadeToColorTransition="تلاشي إلى لون"
|
||||
Direction="الإتجاه"
|
||||
Direction.Left="يسار"
|
||||
Direction.Right="يمين"
|
||||
Direction.Up="أعلى"
|
||||
Direction.Down="أسفل"
|
||||
Color="اللون"
|
||||
|
||||
14
plugins/obs-transitions/data/locale/ca-ES.ini
Normal file
14
plugins/obs-transitions/data/locale/ca-ES.ini
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
FadeTransition="Esvair"
|
||||
CutTransition="Talla"
|
||||
SwipeTransition="Lliscar"
|
||||
SlideTransition="Lliscar"
|
||||
FadeToColorTransition="Esvair a Color"
|
||||
Direction="Direcció"
|
||||
Direction.Left="Esquerra"
|
||||
Direction.Right="Dreta"
|
||||
Direction.Up="Amunt"
|
||||
Direction.Down="Avall"
|
||||
SwipeIn="Lliscament"
|
||||
Color="Color"
|
||||
SwitchPoint="Punt de Color màxim (percentatge)"
|
||||
|
||||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Slábnutí"
|
||||
CutTransition="Střih"
|
||||
SwipeTransition="Tažení"
|
||||
SlideTransition="Sklouznutí"
|
||||
FadeToColorTransition="Barevný přechod"
|
||||
Direction="Směr"
|
||||
Direction.Left="Vlevo"
|
||||
Direction.Right="Vpravo"
|
||||
Direction.Up="Nahoru"
|
||||
Direction.Down="Dolů"
|
||||
SwipeIn="Vtáhnout"
|
||||
Color="Barva"
|
||||
SwitchPoint="Špičkový bod barvy (%)"
|
||||
|
||||
|
|
|
|||
14
plugins/obs-transitions/data/locale/da-DK.ini
Normal file
14
plugins/obs-transitions/data/locale/da-DK.ini
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
FadeTransition="Overgang"
|
||||
CutTransition="Klip"
|
||||
SwipeTransition="Swipe"
|
||||
SlideTransition="Glide"
|
||||
FadeToColorTransition="Fade til farve"
|
||||
Direction="Retning"
|
||||
Direction.Left="Venstre"
|
||||
Direction.Right="Højre"
|
||||
Direction.Up="Op"
|
||||
Direction.Down="Ned"
|
||||
SwipeIn="Swipe ind"
|
||||
Color="Farve"
|
||||
SwitchPoint="Farvepeakpunkt (procent)"
|
||||
|
||||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Überblenden"
|
||||
CutTransition="Schnitt"
|
||||
SwipeTransition="Swipe"
|
||||
SlideTransition="Slide"
|
||||
FadeToColorTransition="Fade to Color"
|
||||
Direction="Richtung"
|
||||
Direction.Left="Links"
|
||||
Direction.Right="Rechts"
|
||||
Direction.Up="Hoch"
|
||||
Direction.Down="Runter"
|
||||
SwipeIn="Swipe In"
|
||||
Color="Farbe"
|
||||
SwitchPoint="Peakfarbpunkt (Prozent)"
|
||||
|
||||
|
|
|
|||
3
plugins/obs-transitions/data/locale/el-GR.ini
Normal file
3
plugins/obs-transitions/data/locale/el-GR.ini
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
FadeTransition="Ξεθώριασμα"
|
||||
CutTransition="Αποκοπή"
|
||||
|
||||
|
|
@ -1,2 +1,13 @@
|
|||
FadeTransition="Fade"
|
||||
CutTransition="Cut"
|
||||
SwipeTransition="Swipe"
|
||||
SlideTransition="Slide"
|
||||
FadeToColorTransition="Fade to Color"
|
||||
Direction="Direction"
|
||||
Direction.Left="Left"
|
||||
Direction.Right="Right"
|
||||
Direction.Up="Up"
|
||||
Direction.Down="Down"
|
||||
SwipeIn="Swipe In"
|
||||
Color="Color"
|
||||
SwitchPoint="Peak Color Point (percentage)"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Desvanecimiento"
|
||||
CutTransition="Corte"
|
||||
SwipeTransition="Deslizar"
|
||||
SlideTransition="Deslizar"
|
||||
FadeToColorTransition="Desvanecer a Color"
|
||||
Direction="Dirección"
|
||||
Direction.Left="Izquierda"
|
||||
Direction.Right="Derecha"
|
||||
Direction.Up="Arriba"
|
||||
Direction.Down="Abajo"
|
||||
SwipeIn="Deslizamiento"
|
||||
Color="Color"
|
||||
SwitchPoint="Punto de Color máximo (porcentaje)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Hutsaldu"
|
||||
CutTransition="Moztu"
|
||||
FadeTransition="Iraungi"
|
||||
CutTransition="Etena"
|
||||
SwipeTransition="Korritu"
|
||||
SlideTransition="Irristatu"
|
||||
FadeToColorTransition="Iraungi kolorera"
|
||||
Direction="Norabidea"
|
||||
Direction.Left="Ezker"
|
||||
Direction.Right="Eskuin"
|
||||
Direction.Up="Gora"
|
||||
Direction.Down="Behera"
|
||||
SwipeIn="Korritu bertan"
|
||||
Color="Kolorea"
|
||||
SwitchPoint="Kolorearen gailur puntua (ehunekoa)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Häivytä"
|
||||
CutTransition="Leikkaa"
|
||||
SwipeTransition="Pyyhkäise"
|
||||
SlideTransition="Liu'uta"
|
||||
FadeToColorTransition="Häivytä väriin"
|
||||
Direction="Suunta"
|
||||
Direction.Left="Vasemmalta"
|
||||
Direction.Right="Oikealta"
|
||||
Direction.Up="Ylhäältä"
|
||||
Direction.Down="Alhaalta"
|
||||
SwipeIn="Pyyhkäise yli"
|
||||
Color="Väri"
|
||||
SwitchPoint="Korkein väripiste (prosentti)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Fondu"
|
||||
CutTransition="Coupure"
|
||||
SwipeTransition="Balayage"
|
||||
SlideTransition="Glissement"
|
||||
FadeToColorTransition="Fondu avec couleur"
|
||||
Direction="Direction"
|
||||
Direction.Left="Gauche"
|
||||
Direction.Right="Droite"
|
||||
Direction.Up="Haut"
|
||||
Direction.Down="Bas"
|
||||
SwipeIn="Recouvrement"
|
||||
Color="Couleur"
|
||||
SwitchPoint="Point de couleur maximal (pourcentage)"
|
||||
|
||||
|
|
|
|||
8
plugins/obs-transitions/data/locale/gl-ES.ini
Normal file
8
plugins/obs-transitions/data/locale/gl-ES.ini
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
CutTransition="Cortar"
|
||||
Direction="Dirección"
|
||||
Direction.Left="Esquerda"
|
||||
Direction.Right="Dereita"
|
||||
Direction.Up="Arriba"
|
||||
Direction.Down="Abaixo"
|
||||
Color="Cor"
|
||||
|
||||
14
plugins/obs-transitions/data/locale/he-IL.ini
Normal file
14
plugins/obs-transitions/data/locale/he-IL.ini
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
FadeTransition="עמעום"
|
||||
CutTransition="חתוך"
|
||||
SwipeTransition="החלקה"
|
||||
SlideTransition="הסט"
|
||||
FadeToColorTransition="עמם לצבע"
|
||||
Direction="כיוון"
|
||||
Direction.Left="שמאל"
|
||||
Direction.Right="ימין"
|
||||
Direction.Up="למעלה"
|
||||
Direction.Down="למטה"
|
||||
SwipeIn="החלקה פנימה"
|
||||
Color="צבע"
|
||||
SwitchPoint="נקודת שיא צבע (באחוזים)"
|
||||
|
||||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Zatamnjenje"
|
||||
CutTransition="Sečenje"
|
||||
SwipeTransition="Prevlačenje"
|
||||
SlideTransition="Klizanje"
|
||||
FadeToColorTransition="Iščezavanje u boju"
|
||||
Direction="Pravac"
|
||||
Direction.Left="Levo"
|
||||
Direction.Right="Desno"
|
||||
Direction.Up="Gore"
|
||||
Direction.Down="Dole"
|
||||
SwipeIn="Uvlačenje"
|
||||
Color="Boja"
|
||||
SwitchPoint="Tačka vrhunca boje (procenat)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Áttűnés"
|
||||
CutTransition="Kivágás"
|
||||
SwipeTransition="Lapozás"
|
||||
SlideTransition="Csúsztatás"
|
||||
FadeToColorTransition="Színes áttűnés"
|
||||
Direction="Irány"
|
||||
Direction.Left="Bal"
|
||||
Direction.Right="Jobb"
|
||||
Direction.Up="Fel"
|
||||
Direction.Down="Le"
|
||||
SwipeIn="Belapozás"
|
||||
Color="Szín"
|
||||
SwitchPoint="Színpont csúcs (százalék)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="フェード"
|
||||
CutTransition="カット"
|
||||
SwipeTransition="スワイプ"
|
||||
SlideTransition="スライド"
|
||||
FadeToColorTransition="カラーにフェード"
|
||||
Direction="方向"
|
||||
Direction.Left="左"
|
||||
Direction.Right="右"
|
||||
Direction.Up="上"
|
||||
Direction.Down="下"
|
||||
SwipeIn="スワイプイン"
|
||||
Color="色"
|
||||
SwitchPoint="ピークカラーポイント (割合)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="서서히 사라지기"
|
||||
CutTransition="자르기"
|
||||
SwipeTransition="밀어내기"
|
||||
SlideTransition="슬라이드"
|
||||
FadeToColorTransition="특정 색상으로 서서히 사라지기"
|
||||
Direction="방향"
|
||||
Direction.Left="왼쪽"
|
||||
Direction.Right="오른쪽"
|
||||
Direction.Up="위쪽"
|
||||
Direction.Down="아래쪽"
|
||||
SwipeIn="덮기"
|
||||
Color="색상"
|
||||
SwitchPoint="최고조 색상 지점 (백분율)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Vervagen"
|
||||
CutTransition="Knippen"
|
||||
SwipeTransition="Swipe"
|
||||
SlideTransition="Slide"
|
||||
FadeToColorTransition="Vervagen naar Kleur"
|
||||
Direction="Richting"
|
||||
Direction.Left="Links"
|
||||
Direction.Right="Rechts"
|
||||
Direction.Up="Omhoog"
|
||||
Direction.Down="Omlaag"
|
||||
SwipeIn="Naar binnen vegen"
|
||||
Color="Kleur"
|
||||
SwitchPoint="Wisselpunt (percentage)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Zanikanie"
|
||||
CutTransition="Cięcie"
|
||||
SwipeTransition="Przesunięcie"
|
||||
SlideTransition="Slajd"
|
||||
FadeToColorTransition="Zanikanie do koloru"
|
||||
Direction="Kierunek"
|
||||
Direction.Left="W lewo"
|
||||
Direction.Right="W prawo"
|
||||
Direction.Up="W górę"
|
||||
Direction.Down="W dół"
|
||||
SwipeIn="Przesuwaj do środka"
|
||||
Color="Kolor"
|
||||
SwitchPoint="Punkt szczytowy koloru (procent)"
|
||||
|
||||
|
|
|
|||
13
plugins/obs-transitions/data/locale/pt-BR.ini
Normal file
13
plugins/obs-transitions/data/locale/pt-BR.ini
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
FadeTransition="Esmaecer"
|
||||
CutTransition="Cortar"
|
||||
SlideTransition="Deslizar"
|
||||
FadeToColorTransition="Esmaecer para a Cor"
|
||||
Direction="Direção"
|
||||
Direction.Left="Esquerda"
|
||||
Direction.Right="Direita"
|
||||
Direction.Up="Cima"
|
||||
Direction.Down="Baixo"
|
||||
SwipeIn="Deslizar para"
|
||||
Color="Cor"
|
||||
SwitchPoint="Ponto de Pico de Cor (porcentagem)"
|
||||
|
||||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Diminuează"
|
||||
CutTransition="Taie"
|
||||
FadeTransition="Estompare"
|
||||
CutTransition="Tăiere"
|
||||
SwipeTransition="Glisare"
|
||||
SlideTransition="Gliseaza"
|
||||
FadeToColorTransition="Estompare prin culoare"
|
||||
Direction="Direcție"
|
||||
Direction.Left="Stânga"
|
||||
Direction.Right="Dreapta"
|
||||
Direction.Up="Sus"
|
||||
Direction.Down="Jos"
|
||||
SwipeIn="Glisați înauntru"
|
||||
Color="Culoare"
|
||||
SwitchPoint="Punctul de vârf al culorii (procent)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,2 +1,14 @@
|
|||
FadeTransition="Затухание"
|
||||
CutTransition="Обрезать"
|
||||
SwipeTransition="Перемещение"
|
||||
SlideTransition="Сдвиг"
|
||||
FadeToColorTransition="Затухание в цвет"
|
||||
Direction="Направление"
|
||||
Direction.Left="Влево"
|
||||
Direction.Right="Вправо"
|
||||
Direction.Up="Вверх"
|
||||
Direction.Down="Вниз"
|
||||
SwipeIn="Перемещение внутрь"
|
||||
Color="Цвет"
|
||||
SwitchPoint="Точка цветового пика (в процентах)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Zatamnjenje"
|
||||
CutTransition="Sečenje"
|
||||
SwipeTransition="Prevlačenje"
|
||||
SlideTransition="Klizanje"
|
||||
FadeToColorTransition="Iščezavanje u boju"
|
||||
Direction="Pravac"
|
||||
Direction.Left="Levo"
|
||||
Direction.Right="Desno"
|
||||
Direction.Up="Gore"
|
||||
Direction.Down="Dole"
|
||||
SwipeIn="Uvlačenje"
|
||||
Color="Boja"
|
||||
SwitchPoint="Tačka vrhunca boje (procenat)"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="Затамњење"
|
||||
CutTransition="Сечење"
|
||||
SwipeTransition="Превлачење"
|
||||
SlideTransition="Клизање"
|
||||
FadeToColorTransition="Ишчезавање у боју"
|
||||
Direction="Правац"
|
||||
Direction.Left="Лево"
|
||||
Direction.Right="Десно"
|
||||
Direction.Up="Горе"
|
||||
Direction.Down="Доле"
|
||||
SwipeIn="Увлачење"
|
||||
Color="Боја"
|
||||
SwitchPoint="Тачка врхунца боје (проценат)"
|
||||
|
||||
|
|
|
|||
13
plugins/obs-transitions/data/locale/sv-SE.ini
Normal file
13
plugins/obs-transitions/data/locale/sv-SE.ini
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
FadeTransition="Tona"
|
||||
CutTransition="Klipp"
|
||||
SwipeTransition="Svep"
|
||||
SlideTransition="Glid"
|
||||
FadeToColorTransition="Tona till färg"
|
||||
Direction="Riktning"
|
||||
Direction.Left="Vänster"
|
||||
Direction.Right="Höger"
|
||||
Direction.Up="Upp"
|
||||
Direction.Down="Ned"
|
||||
SwipeIn="Svep in"
|
||||
Color="Färg"
|
||||
|
||||
|
|
@ -1,3 +1,11 @@
|
|||
FadeTransition="Soldur"
|
||||
CutTransition="Kes"
|
||||
SwipeTransition="Kaydır"
|
||||
SlideTransition="Kaydır"
|
||||
Direction="Yönlendir"
|
||||
Direction.Left="Sol"
|
||||
Direction.Right="Sağ"
|
||||
Direction.Up="Yukarı"
|
||||
Direction.Down="Aşağı"
|
||||
Color="Renk"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,14 @@
|
|||
FadeTransition="淡出"
|
||||
CutTransition="剪切"
|
||||
SwipeTransition="滑动"
|
||||
SlideTransition="滑动"
|
||||
FadeToColorTransition="色彩淡入淡出"
|
||||
Direction="方向"
|
||||
Direction.Left="左"
|
||||
Direction.Right="右"
|
||||
Direction.Up="上"
|
||||
Direction.Down="下"
|
||||
SwipeIn="向上滑动"
|
||||
Color="色彩"
|
||||
SwitchPoint="峰值颜色点(百分比)"
|
||||
|
||||
|
|
|
|||
7
plugins/obs-transitions/data/locale/zh-TW.ini
Normal file
7
plugins/obs-transitions/data/locale/zh-TW.ini
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
Direction="方向:"
|
||||
Direction.Left="左"
|
||||
Direction.Right="右"
|
||||
Direction.Up="上:"
|
||||
Direction.Down="下"
|
||||
Color="顏色"
|
||||
|
||||
45
plugins/obs-transitions/data/slide_transition.effect
Normal file
45
plugins/obs-transitions/data/slide_transition.effect
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
uniform float4x4 ViewProj;
|
||||
uniform texture2d tex_a;
|
||||
uniform texture2d tex_b;
|
||||
uniform float2 tex_a_dir;
|
||||
uniform float2 tex_b_dir;
|
||||
|
||||
|
||||
sampler_state textureSampler {
|
||||
Filter = Linear;
|
||||
AddressU = Clamp;
|
||||
AddressV = Clamp;
|
||||
};
|
||||
|
||||
struct VertData {
|
||||
float4 pos : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
|
||||
VertData VSDefault(VertData v_in)
|
||||
{
|
||||
VertData vert_out;
|
||||
vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj);
|
||||
vert_out.uv = v_in.uv;
|
||||
return vert_out;
|
||||
}
|
||||
|
||||
float4 PSSlide(VertData v_in) : TARGET
|
||||
{
|
||||
float2 tex_a_uv = v_in.uv + tex_a_dir;
|
||||
float2 tex_b_uv = v_in.uv - tex_b_dir;
|
||||
|
||||
return (tex_a_uv.x - saturate(tex_a_uv.x) != 0.0) ||
|
||||
(tex_a_uv.y - saturate(tex_a_uv.y) != 0.0)
|
||||
? tex_b.Sample(textureSampler, tex_b_uv)
|
||||
: tex_a.Sample(textureSampler, tex_a_uv);
|
||||
}
|
||||
|
||||
technique Slide
|
||||
{
|
||||
pass
|
||||
{
|
||||
vertex_shader = VSDefault(v_in);
|
||||
pixel_shader = PSSlide(v_in);
|
||||
}
|
||||
}
|
||||
42
plugins/obs-transitions/data/swipe_transition.effect
Normal file
42
plugins/obs-transitions/data/swipe_transition.effect
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
uniform float4x4 ViewProj;
|
||||
uniform texture2d tex_a;
|
||||
uniform texture2d tex_b;
|
||||
uniform float2 swipe_val;
|
||||
|
||||
sampler_state textureSampler {
|
||||
Filter = Linear;
|
||||
AddressU = Clamp;
|
||||
AddressV = Clamp;
|
||||
};
|
||||
|
||||
struct VertData {
|
||||
float4 pos : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
|
||||
VertData VSDefault(VertData v_in)
|
||||
{
|
||||
VertData vert_out;
|
||||
vert_out.pos = mul(float4(v_in.pos.xyz, 1.0), ViewProj);
|
||||
vert_out.uv = v_in.uv;
|
||||
return vert_out;
|
||||
}
|
||||
|
||||
float4 PSSwipe(VertData v_in) : TARGET
|
||||
{
|
||||
float2 swipe_uv = v_in.uv + swipe_val;
|
||||
|
||||
return (swipe_uv.x - saturate(swipe_uv.x) != 0.0) ||
|
||||
(swipe_uv.y - saturate(swipe_uv.y) != 0.0)
|
||||
? tex_b.Sample(textureSampler, v_in.uv)
|
||||
: tex_a.Sample(textureSampler, swipe_uv);
|
||||
}
|
||||
|
||||
technique Swipe
|
||||
{
|
||||
pass
|
||||
{
|
||||
vertex_shader = VSDefault(v_in);
|
||||
pixel_shader = PSSwipe(v_in);
|
||||
}
|
||||
}
|
||||
11
plugins/obs-transitions/easings.h
Normal file
11
plugins/obs-transitions/easings.h
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
#pragma once
|
||||
|
||||
static inline float cubic_ease_in_out(float t)
|
||||
{
|
||||
if (t < 0.5f) {
|
||||
return 4.0f * t * t * t;
|
||||
} else {
|
||||
float temp = (2.0f * t - 2.0f);
|
||||
return (t - 1.0f) * temp * temp + 1.0f;
|
||||
}
|
||||
}
|
||||
|
|
@ -6,10 +6,16 @@ OBS_MODULE_USE_DEFAULT_LOCALE("obs-transitions", "en-US")
|
|||
|
||||
extern struct obs_source_info cut_transition;
|
||||
extern struct obs_source_info fade_transition;
|
||||
extern struct obs_source_info swipe_transition;
|
||||
extern struct obs_source_info slide_transition;
|
||||
extern struct obs_source_info fade_to_color_transition;
|
||||
|
||||
bool obs_module_load(void)
|
||||
{
|
||||
obs_register_source(&cut_transition);
|
||||
obs_register_source(&fade_transition);
|
||||
obs_register_source(&swipe_transition);
|
||||
obs_register_source(&slide_transition);
|
||||
obs_register_source(&fade_to_color_transition);
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
178
plugins/obs-transitions/transition-fade-to-color.c
Normal file
178
plugins/obs-transitions/transition-fade-to-color.c
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
#include <obs-module.h>
|
||||
|
||||
#define S_COLOR "color"
|
||||
#define S_SWITCH_POINT "switch_point"
|
||||
|
||||
#define S_COLOR_TEXT obs_module_text("Color")
|
||||
#define S_SWITCH_POINT_TEXT obs_module_text("SwitchPoint")
|
||||
|
||||
struct fade_to_color_info {
|
||||
obs_source_t *source;
|
||||
|
||||
gs_effect_t *effect;
|
||||
gs_eparam_t *ep_tex;
|
||||
gs_eparam_t *ep_swp;
|
||||
gs_eparam_t *ep_color;
|
||||
|
||||
struct vec4 color;
|
||||
float switch_point;
|
||||
};
|
||||
|
||||
static inline float lerp(float a, float b, float x)
|
||||
{
|
||||
return (1.0f - x) * a + x * b;
|
||||
}
|
||||
|
||||
static inline float clamp(float x, float min, float max)
|
||||
{
|
||||
if (x < min)
|
||||
return min;
|
||||
else if (x > max)
|
||||
return max;
|
||||
return x;
|
||||
}
|
||||
|
||||
static inline float smoothstep(float min, float max, float x)
|
||||
{
|
||||
x = clamp((x - min) / (max - min), 0.0f, 1.0f);
|
||||
return x*x*(3 - 2 * x);
|
||||
}
|
||||
|
||||
static const char *fade_to_color_get_name(void *type_data)
|
||||
{
|
||||
UNUSED_PARAMETER(type_data);
|
||||
return obs_module_text("FadeToColorTransition");
|
||||
}
|
||||
|
||||
static void fade_to_color_update(void *data, obs_data_t *settings)
|
||||
{
|
||||
struct fade_to_color_info *fade_to_color = data;
|
||||
uint32_t color = (uint32_t)obs_data_get_int(settings, S_COLOR);
|
||||
uint32_t swp = (uint32_t)obs_data_get_int(settings, S_SWITCH_POINT);
|
||||
|
||||
color |= 0xFF000000;
|
||||
|
||||
vec4_from_rgba(&fade_to_color->color, color);
|
||||
|
||||
fade_to_color->switch_point = (float)swp / 100.0f;
|
||||
}
|
||||
|
||||
static void *fade_to_color_create(obs_data_t *settings, obs_source_t *source)
|
||||
{
|
||||
struct fade_to_color_info *fade_to_color;
|
||||
char *file = obs_module_file("fade_to_color_transition.effect");
|
||||
gs_effect_t *effect;
|
||||
|
||||
obs_enter_graphics();
|
||||
effect = gs_effect_create_from_file(file, NULL);
|
||||
obs_leave_graphics();
|
||||
|
||||
bfree(file);
|
||||
|
||||
if (!effect) {
|
||||
blog(LOG_ERROR, "Could not find fade_to_color_transition.effect");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
fade_to_color = bzalloc(sizeof(struct fade_to_color_info));
|
||||
|
||||
fade_to_color->source = source;
|
||||
fade_to_color->effect = effect;
|
||||
|
||||
fade_to_color->ep_tex = gs_effect_get_param_by_name(effect, "tex");
|
||||
fade_to_color->ep_swp = gs_effect_get_param_by_name(effect, "swp");
|
||||
fade_to_color->ep_color = gs_effect_get_param_by_name(effect, "color");
|
||||
|
||||
obs_source_update(source, settings);
|
||||
|
||||
return fade_to_color;
|
||||
}
|
||||
|
||||
static void fade_to_color_destroy(void *data)
|
||||
{
|
||||
struct fade_to_color_info *fade_to_color = data;
|
||||
bfree(fade_to_color);
|
||||
}
|
||||
|
||||
static void fade_to_color_callback(void *data, gs_texture_t *a, gs_texture_t *b,
|
||||
float t, uint32_t cx, uint32_t cy)
|
||||
{
|
||||
struct fade_to_color_info *fade_to_color = data;
|
||||
|
||||
float sa = smoothstep(0.0f, fade_to_color->switch_point, t);
|
||||
float sb = smoothstep(fade_to_color->switch_point, 1.0f, t);
|
||||
|
||||
float swp = t < fade_to_color->switch_point ? sa : 1.0f - sb;
|
||||
|
||||
gs_effect_set_texture(fade_to_color->ep_tex,
|
||||
t < fade_to_color->switch_point ? a : b);
|
||||
gs_effect_set_float(fade_to_color->ep_swp, swp);
|
||||
gs_effect_set_vec4(fade_to_color->ep_color, &fade_to_color->color);
|
||||
|
||||
while (gs_effect_loop(fade_to_color->effect, "FadeToColor"))
|
||||
gs_draw_sprite(NULL, 0, cx, cy);
|
||||
}
|
||||
|
||||
static void fade_to_color_video_render(void *data, gs_effect_t *effect)
|
||||
{
|
||||
struct fade_to_color_info *fade_to_color = data;
|
||||
obs_transition_video_render(fade_to_color->source,
|
||||
fade_to_color_callback);
|
||||
UNUSED_PARAMETER(effect);
|
||||
}
|
||||
|
||||
static float mix_a(void *data, float t)
|
||||
{
|
||||
struct fade_to_color_info *fade_to_color = data;
|
||||
float sp = fade_to_color->switch_point;
|
||||
|
||||
return lerp(1.0f - t , 0.0f, smoothstep(0.0f, sp, t));
|
||||
}
|
||||
|
||||
static float mix_b(void *data, float t)
|
||||
{
|
||||
struct fade_to_color_info *fade_to_color = data;
|
||||
float sp = fade_to_color->switch_point;
|
||||
|
||||
return lerp(0.0f, t, smoothstep(sp, 1.0f, t));
|
||||
}
|
||||
|
||||
static bool fade_to_color_audio_render(void *data, uint64_t *ts_out,
|
||||
struct obs_source_audio_mix *audio, uint32_t mixers,
|
||||
size_t channels, size_t sample_rate)
|
||||
{
|
||||
struct fade_to_color_info *fade_to_color = data;
|
||||
return obs_transition_audio_render(fade_to_color->source, ts_out,
|
||||
audio, mixers, channels, sample_rate, mix_a, mix_b);
|
||||
}
|
||||
|
||||
static obs_properties_t *fade_to_color_properties(void *data)
|
||||
{
|
||||
obs_properties_t *props = obs_properties_create();
|
||||
|
||||
obs_properties_add_color(props, S_COLOR, S_COLOR_TEXT);
|
||||
obs_properties_add_int_slider(props, S_SWITCH_POINT,
|
||||
S_SWITCH_POINT_TEXT, 0, 100, 1);
|
||||
|
||||
UNUSED_PARAMETER(data);
|
||||
return props;
|
||||
}
|
||||
|
||||
static void fade_to_color_defaults(obs_data_t *settings)
|
||||
{
|
||||
obs_data_set_default_int(settings, S_COLOR, 0xFF000000);
|
||||
obs_data_set_default_int(settings, S_SWITCH_POINT, 50);
|
||||
}
|
||||
|
||||
struct obs_source_info fade_to_color_transition = {
|
||||
.id = "fade_to_color_transition",
|
||||
.type = OBS_SOURCE_TYPE_TRANSITION,
|
||||
.get_name = fade_to_color_get_name,
|
||||
.create = fade_to_color_create,
|
||||
.destroy = fade_to_color_destroy,
|
||||
.update = fade_to_color_update,
|
||||
.video_render = fade_to_color_video_render,
|
||||
.audio_render = fade_to_color_audio_render,
|
||||
.get_properties = fade_to_color_properties,
|
||||
.get_defaults = fade_to_color_defaults
|
||||
};
|
||||
165
plugins/obs-transitions/transition-slide.c
Normal file
165
plugins/obs-transitions/transition-slide.c
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
#include <obs-module.h>
|
||||
#include <graphics/vec2.h>
|
||||
#include "easings.h"
|
||||
|
||||
#define S_DIRECTION "direction"
|
||||
|
||||
struct slide_info {
|
||||
obs_source_t *source;
|
||||
|
||||
gs_effect_t *effect;
|
||||
gs_eparam_t *a_param;
|
||||
gs_eparam_t *b_param;
|
||||
gs_eparam_t *tex_a_dir_param;
|
||||
gs_eparam_t *tex_b_dir_param;
|
||||
|
||||
struct vec2 dir;
|
||||
bool slide_in;
|
||||
};
|
||||
|
||||
static const char *slide_get_name(void *type_data)
|
||||
{
|
||||
UNUSED_PARAMETER(type_data);
|
||||
return obs_module_text("SlideTransition");
|
||||
}
|
||||
|
||||
static void slide_update(void *data, obs_data_t *settings)
|
||||
{
|
||||
struct slide_info *slide = data;
|
||||
const char *dir = obs_data_get_string(settings, S_DIRECTION);
|
||||
|
||||
if (strcmp(dir, "right") == 0)
|
||||
slide->dir = (struct vec2){ -1.0f, 0.0f };
|
||||
else if (strcmp(dir, "up") == 0)
|
||||
slide->dir = (struct vec2){ 0.0f, 1.0f };
|
||||
else if (strcmp(dir, "down") == 0)
|
||||
slide->dir = (struct vec2){ 0.0f, -1.0f };
|
||||
else /* left */
|
||||
slide->dir = (struct vec2){ 1.0f, 0.0f };
|
||||
}
|
||||
|
||||
void *slide_create(obs_data_t *settings, obs_source_t *source)
|
||||
{
|
||||
struct slide_info *slide;
|
||||
gs_effect_t *effect;
|
||||
|
||||
char *file = obs_module_file("slide_transition.effect");
|
||||
|
||||
obs_enter_graphics();
|
||||
effect = gs_effect_create_from_file(file, NULL);
|
||||
obs_leave_graphics();
|
||||
|
||||
bfree(file);
|
||||
|
||||
if (!effect) {
|
||||
blog(LOG_ERROR, "Could not find slide_transition.effect");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
slide = bzalloc(sizeof(*slide));
|
||||
|
||||
slide->source = source;
|
||||
slide->effect = effect;
|
||||
|
||||
slide->a_param = gs_effect_get_param_by_name(effect, "tex_a");
|
||||
slide->b_param = gs_effect_get_param_by_name(effect, "tex_b");
|
||||
|
||||
slide->tex_a_dir_param =
|
||||
gs_effect_get_param_by_name(effect, "tex_a_dir");
|
||||
slide->tex_b_dir_param =
|
||||
gs_effect_get_param_by_name(effect, "tex_b_dir");
|
||||
|
||||
obs_source_update(source, settings);
|
||||
|
||||
return slide;
|
||||
}
|
||||
|
||||
void slide_destroy(void *data)
|
||||
{
|
||||
struct slide_info *slide = data;
|
||||
bfree(slide);
|
||||
}
|
||||
|
||||
static void slide_callback(void *data, gs_texture_t *a, gs_texture_t *b,
|
||||
float t, uint32_t cx, uint32_t cy)
|
||||
{
|
||||
struct slide_info *slide = data;
|
||||
|
||||
struct vec2 tex_a_dir = slide->dir;
|
||||
struct vec2 tex_b_dir = slide->dir;
|
||||
|
||||
t = cubic_ease_in_out(t);
|
||||
|
||||
vec2_mulf(&tex_a_dir, &tex_a_dir, t);
|
||||
vec2_mulf(&tex_b_dir, &tex_b_dir, 1.0f - t);
|
||||
|
||||
gs_effect_set_texture(slide->a_param, a);
|
||||
gs_effect_set_texture(slide->b_param, b);
|
||||
|
||||
gs_effect_set_vec2(slide->tex_a_dir_param, &tex_a_dir);
|
||||
gs_effect_set_vec2(slide->tex_b_dir_param, &tex_b_dir);
|
||||
|
||||
while (gs_effect_loop(slide->effect, "Slide"))
|
||||
gs_draw_sprite(NULL, 0, cx, cy);
|
||||
}
|
||||
|
||||
void slide_video_render(void *data, gs_effect_t *effect)
|
||||
{
|
||||
struct slide_info *slide = data;
|
||||
obs_transition_video_render(slide->source, slide_callback);
|
||||
UNUSED_PARAMETER(effect);
|
||||
}
|
||||
|
||||
static float mix_a(void *data, float t)
|
||||
{
|
||||
UNUSED_PARAMETER(data);
|
||||
return 1.0f - cubic_ease_in_out(t);
|
||||
}
|
||||
|
||||
static float mix_b(void *data, float t)
|
||||
{
|
||||
UNUSED_PARAMETER(data);
|
||||
return cubic_ease_in_out(t);
|
||||
}
|
||||
|
||||
bool slide_audio_render(void *data, uint64_t *ts_out,
|
||||
struct obs_source_audio_mix *audio, uint32_t mixers,
|
||||
size_t channels, size_t sample_rate)
|
||||
{
|
||||
struct slide_info *slide = data;
|
||||
return obs_transition_audio_render(slide->source, ts_out,
|
||||
audio, mixers, channels, sample_rate, mix_a, mix_b);
|
||||
}
|
||||
|
||||
static obs_properties_t *slide_properties(void *data)
|
||||
{
|
||||
obs_properties_t *ppts = obs_properties_create();
|
||||
obs_property_t *p;
|
||||
|
||||
p = obs_properties_add_list(ppts, S_DIRECTION,
|
||||
obs_module_text("Direction"), OBS_COMBO_TYPE_LIST,
|
||||
OBS_COMBO_FORMAT_STRING);
|
||||
obs_property_list_add_string(p, obs_module_text("Direction.Left"),
|
||||
"left");
|
||||
obs_property_list_add_string(p, obs_module_text("Direction.Right"),
|
||||
"right");
|
||||
obs_property_list_add_string(p, obs_module_text("Direction.Up"),
|
||||
"up");
|
||||
obs_property_list_add_string(p, obs_module_text("Direction.Down"),
|
||||
"down");
|
||||
|
||||
UNUSED_PARAMETER(data);
|
||||
return ppts;
|
||||
}
|
||||
|
||||
struct obs_source_info slide_transition = {
|
||||
.id = "slide_transition",
|
||||
.type = OBS_SOURCE_TYPE_TRANSITION,
|
||||
.get_name = slide_get_name,
|
||||
.create = slide_create,
|
||||
.destroy = slide_destroy,
|
||||
.update = slide_update,
|
||||
.video_render = slide_video_render,
|
||||
.audio_render = slide_audio_render,
|
||||
.get_properties = slide_properties
|
||||
};
|
||||
160
plugins/obs-transitions/transition-swipe.c
Normal file
160
plugins/obs-transitions/transition-swipe.c
Normal file
|
|
@ -0,0 +1,160 @@
|
|||
#include <obs-module.h>
|
||||
#include <graphics/vec2.h>
|
||||
#include "easings.h"
|
||||
|
||||
struct swipe_info {
|
||||
obs_source_t *source;
|
||||
|
||||
gs_effect_t *effect;
|
||||
gs_eparam_t *a_param;
|
||||
gs_eparam_t *b_param;
|
||||
gs_eparam_t *swipe_param;
|
||||
|
||||
struct vec2 dir;
|
||||
bool swipe_in;
|
||||
};
|
||||
|
||||
#define S_DIRECTION "direction"
|
||||
#define S_SWIPE_IN "swipe_in"
|
||||
|
||||
static const char *swipe_get_name(void *type_data)
|
||||
{
|
||||
UNUSED_PARAMETER(type_data);
|
||||
return obs_module_text("SwipeTransition");
|
||||
}
|
||||
|
||||
static void *swipe_create(obs_data_t *settings, obs_source_t *source)
|
||||
{
|
||||
struct swipe_info *swipe;
|
||||
char *file = obs_module_file("swipe_transition.effect");
|
||||
gs_effect_t *effect;
|
||||
|
||||
obs_enter_graphics();
|
||||
effect = gs_effect_create_from_file(file, NULL);
|
||||
obs_leave_graphics();
|
||||
bfree(file);
|
||||
|
||||
if (!effect) {
|
||||
blog(LOG_ERROR, "Could not find swipe_transition.effect");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
swipe = bmalloc(sizeof(*swipe));
|
||||
swipe->source = source;
|
||||
swipe->effect = effect;
|
||||
swipe->a_param = gs_effect_get_param_by_name(effect, "tex_a");
|
||||
swipe->b_param = gs_effect_get_param_by_name(effect, "tex_b");
|
||||
swipe->swipe_param = gs_effect_get_param_by_name(effect, "swipe_val");
|
||||
|
||||
obs_source_update(source, settings);
|
||||
|
||||
UNUSED_PARAMETER(settings);
|
||||
return swipe;
|
||||
}
|
||||
|
||||
static void swipe_destroy(void *data)
|
||||
{
|
||||
struct swipe_info *swipe = data;
|
||||
bfree(swipe);
|
||||
}
|
||||
|
||||
static void swipe_update(void *data, obs_data_t *settings)
|
||||
{
|
||||
struct swipe_info *swipe = data;
|
||||
const char *dir = obs_data_get_string(settings, S_DIRECTION);
|
||||
|
||||
swipe->swipe_in = obs_data_get_bool(settings, S_SWIPE_IN);
|
||||
|
||||
if (strcmp(dir, "right") == 0)
|
||||
swipe->dir = (struct vec2){-1.0f, 0.0f};
|
||||
else if (strcmp(dir, "up") == 0)
|
||||
swipe->dir = (struct vec2){0.0f, 1.0f};
|
||||
else if (strcmp(dir, "down") == 0)
|
||||
swipe->dir = (struct vec2){0.0f, -1.0f};
|
||||
else /* left */
|
||||
swipe->dir = (struct vec2){1.0f, 0.0f};
|
||||
}
|
||||
|
||||
static void swipe_callback(void *data, gs_texture_t *a, gs_texture_t *b,
|
||||
float t, uint32_t cx, uint32_t cy)
|
||||
{
|
||||
struct swipe_info *swipe = data;
|
||||
struct vec2 swipe_val = swipe->dir;
|
||||
|
||||
if (swipe->swipe_in)
|
||||
vec2_neg(&swipe_val, &swipe_val);
|
||||
|
||||
t = cubic_ease_in_out(t);
|
||||
|
||||
vec2_mulf(&swipe_val, &swipe_val, swipe->swipe_in ? 1.0f - t : t);
|
||||
|
||||
gs_effect_set_texture(swipe->a_param, swipe->swipe_in ? b : a);
|
||||
gs_effect_set_texture(swipe->b_param, swipe->swipe_in ? a : b);
|
||||
gs_effect_set_vec2(swipe->swipe_param, &swipe_val);
|
||||
|
||||
while (gs_effect_loop(swipe->effect, "Swipe"))
|
||||
gs_draw_sprite(NULL, 0, cx, cy);
|
||||
}
|
||||
|
||||
static void swipe_video_render(void *data, gs_effect_t *effect)
|
||||
{
|
||||
struct swipe_info *swipe = data;
|
||||
obs_transition_video_render(swipe->source, swipe_callback);
|
||||
UNUSED_PARAMETER(effect);
|
||||
}
|
||||
|
||||
static float mix_a(void *data, float t)
|
||||
{
|
||||
UNUSED_PARAMETER(data);
|
||||
return 1.0f - cubic_ease_in_out(t);
|
||||
}
|
||||
|
||||
static float mix_b(void *data, float t)
|
||||
{
|
||||
UNUSED_PARAMETER(data);
|
||||
return cubic_ease_in_out(t);
|
||||
}
|
||||
|
||||
static bool swipe_audio_render(void *data, uint64_t *ts_out,
|
||||
struct obs_source_audio_mix *audio, uint32_t mixers,
|
||||
size_t channels, size_t sample_rate)
|
||||
{
|
||||
struct swipe_info *swipe = data;
|
||||
return obs_transition_audio_render(swipe->source, ts_out,
|
||||
audio, mixers, channels, sample_rate, mix_a, mix_b);
|
||||
}
|
||||
|
||||
static obs_properties_t *swipe_properties(void *data)
|
||||
{
|
||||
obs_properties_t *ppts = obs_properties_create();
|
||||
obs_property_t *p;
|
||||
|
||||
p = obs_properties_add_list(ppts, S_DIRECTION,
|
||||
obs_module_text("Direction"), OBS_COMBO_TYPE_LIST,
|
||||
OBS_COMBO_FORMAT_STRING);
|
||||
obs_property_list_add_string(p, obs_module_text("Direction.Left"),
|
||||
"left");
|
||||
obs_property_list_add_string(p, obs_module_text("Direction.Right"),
|
||||
"right");
|
||||
obs_property_list_add_string(p, obs_module_text("Direction.Up"),
|
||||
"up");
|
||||
obs_property_list_add_string(p, obs_module_text("Direction.Down"),
|
||||
"down");
|
||||
|
||||
obs_properties_add_bool(ppts, S_SWIPE_IN, obs_module_text("SwipeIn"));
|
||||
|
||||
UNUSED_PARAMETER(data);
|
||||
return ppts;
|
||||
}
|
||||
|
||||
struct obs_source_info swipe_transition = {
|
||||
.id = "swipe_transition",
|
||||
.type = OBS_SOURCE_TYPE_TRANSITION,
|
||||
.get_name = swipe_get_name,
|
||||
.create = swipe_create,
|
||||
.destroy = swipe_destroy,
|
||||
.update = swipe_update,
|
||||
.video_render = swipe_video_render,
|
||||
.audio_render = swipe_audio_render,
|
||||
.get_properties = swipe_properties
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue