Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local effectPath = "F:\\obsScripts\\equiConvert.effect"
- local PI = 3.14159265
- function script_description()
- return "A filter that can be used to transform sources into a 360° video"
- end
- local info = {}
- info.id = "equi_conv"
- info.type = obslua.OBS_SOURCE_TYPE_FILTER
- info.output_flags = obslua.OBS_SOURCE_VIDEO
- info.get_name = function (unused)
- --obslua.UNUSED_PARAMETER(unused)
- return "Equirectangular Converter"
- end
- info.create = function(settings, context)
- print("[create] Creating")
- local filter = {}
- filter.context = context
- obslua.obs_enter_graphics()
- print("[create] Loading file")
- filter.effect = obslua.gs_effect_create_from_file(effectPath, nil)
- print("[create] Loaded effect")
- if(filter.effect ~= nil) then
- print("[create] Effect loaded successfully!")
- filter.width_param = obslua.gs_effect_get_param_by_name(filter.effect, "width")
- filter.height_param = obslua.gs_effect_get_param_by_name(filter.effect, "height")
- filter.x_param = obslua.gs_effect_get_param_by_name(filter.effect, "x")
- filter.y_param = obslua.gs_effect_get_param_by_name(filter.effect, "y")
- filter.texture_width = obslua.gs_effect_get_param_by_name(filter.effect, "texture_width")
- filter.texture_height = obslua.gs_effect_get_param_by_name(filter.effect, "texture_height")
- end
- obslua.obs_leave_graphics()
- if(filter.effect == nil) then
- print("[create] Couldn't load effect")
- info.destroy(filter)
- return nil
- end
- print("[create] Updating frame")
- info.update(filter, settings)
- print("[create] Creation done")
- return filter
- end
- info.destroy = function(data)
- if(data.effect ~= nil) then
- obslua.obs_enter_graphics()
- obslua.gs_effect_destroy(data.effect)
- obslua.obs_leave_graphics()
- end
- end
- info.update = function(data, settings)
- print("[update] Updating")
- data.width = obslua.obs_data_get_double(settings, "width")
- data.height = obslua.obs_data_get_double(settings, "height")
- data.x = obslua.obs_data_get_double(settings, "x")
- data.y = obslua.obs_data_get_double(settings, "y")
- print("[update] Updating done!")
- end
- info.video_render = function (data, effect)
- -- print("[video_render] ")
- local succ = obslua.obs_source_process_filter_begin(data.context, obslua.GS_RGBA, obslua.OBS_ALLOW_DIRECT_RENDERING)
- if(not succ) then
- print("[video_render] ERROR")
- return
- end
- local target = obslua.obs_filter_get_target(data.context)
- data.texwidth = obslua.obs_source_get_base_width(target)
- data.texheight = obslua.obs_source_get_base_height(target)
- obslua.gs_effect_set_float(data.width_param, data.width)
- obslua.gs_effect_set_float(data.height_param, data.height)
- obslua.gs_effect_set_float(data.x_param, data.x)
- obslua.gs_effect_set_float(data.y_param, data.y)
- obslua.gs_effect_set_float(data.texture_width, data.texwidth)
- obslua.gs_effect_set_float(data.texture_height, data.texheight)
- obslua.obs_source_process_filter_end(data.context, data.effect, 0, 0)
- --obslua.UNUSED_PARAMETER(effect)
- end
- info.get_width = function(data)
- return data.texwidth
- end
- info.get_height = function(data)
- return data.texheight
- end
- info.get_properties = function(data)
- print("[get_properties] Getting properties")
- props = obslua.obs_properties_create()
- print("[get_properties] Created Prop Container")
- obslua.obs_properties_add_float_slider(props, "width", "Width", 0, 100, 0.01)
- obslua.obs_properties_add_float_slider(props, "height", "Height", 0, 100, 0.01)
- obslua.obs_properties_add_float_slider(props, "x", "X Position", -100, 100, 0.01)
- obslua.obs_properties_add_float_slider(props, "y", "Y Position", -100, 100, 0.01)
- print("[get_properties] Added slider. DONE!")
- --obslua.UNUSED_PARAMETER(data)
- return props
- end
- info.get_defaults = function (settings)
- print("[get_defaults] Getting defaults.")
- obslua.obs_data_set_default_double(settings, "width", 1);
- obslua.obs_data_set_default_double(settings, "height", 1);
- obslua.obs_data_set_default_double(settings, "x", 0);
- obslua.obs_data_set_default_double(settings, "y", 0);
- print("[get_defaults] Getting defaults DONE!")
- end
- obslua.obs_register_source(info)
Advertisement
Add Comment
Please, Sign In to add comment