jp9000
4dc0024198
libobs/graphics: Add ability to set shader texture sampler
...
(Note: This also modifies libobs-d3d11 and libobs-opengl)
Allows overriding the sampler for a specific shader parameter.
2016-06-29 04:15:38 -07:00
jp9000
ccfd57d100
libobs/graphics: Rename inconsistent function names
...
Renames functions:
gs_shader_setmatrix3 -> gs_shader_set_matrix3
gs_voltexture_getdepth -> gs_voltexture_get_depth
2015-10-21 07:46:43 -07:00
jp9000
86e56a5c4e
libobs-opengl: Do not fail if shader param unused
...
I encountered a scenario where effects might reference shader parameters
that may not potentially exist, this isn't particularly a bad thing that
needs to return failure. It just needs to gracefully ignore it.
2015-03-22 18:38:46 -07:00
jp9000
84d16fed8e
libobs-opengl: Assign texture units to shader vars
...
Texture units were not being properly associated with the shader uniform
variables.
2015-03-22 18:38:45 -07:00
jp9000
41fad2d1a4
(API Change) Use const params where applicable
...
This Fixes a minor flaw with the API where data had to always be mutable
to be usable by the API.
Functions that do not modify the fundamental underlying data of a
structure should be marked as constant, both for safety and to signify
that the parameter is input only and will not be modified by the
function using it.
2014-09-26 17:23:07 -07:00
GoaLitiuM
10f5d7f3aa
Fixed NULL pointer dereferencing in linked lists
2014-09-27 01:35:36 +03:00
jp9000
c9df41c1e2
(API Change) Remove pointers from all typedefs
...
Typedef pointers are unsafe. If you do:
typedef struct bla *bla_t;
then you cannot use it as a constant, such as: const bla_t, because
that constant will be to the pointer itself rather than to the
underlying data. I admit this was a fundamental mistake that must
be corrected.
All typedefs that were pointer types will now have their pointers
removed from the type itself, and the pointers will be used when they
are actually used as variables/parameters/returns instead.
This does not break ABI though, which is pretty nice.
2014-09-25 21:48:11 -07:00
jp9000
3967c6354a
Replace ARB_separate_shader_objects extension
...
This replaces the ARB_separate_shader_objects extension with traditional
linked shaders. I was able to get the existing system to use linked
shaders without having to change any libobs graphics API.
This essentially creates a linked list of shader programs with
references to the shaders they link. Before draw, it searches that
linked list for a particular pixel/vertex shader pair, and the linked
program associated with it. If no matching program exists, it creates
the program.
2014-09-19 18:23:51 -07:00
jp9000
4654eca6b8
Remove GL shader debug text
2014-08-21 03:04:20 -07:00
jp9000
5780f3f177
(API Change) Improve graphics API consistency
...
Summary:
- Prefix all graphics subsystem names with gs_ or GS_
- Unsquish funciton names (for example _setfloat to _set_float)
- Changed create functions to be more consistent with the rest of the
API elsewhere. For exmaple, instead of
gs_create_texture/gs_texture_destroy, it's now
gs_texture_create/gs_texture_destroy
- Renamed gs_stencil_op enum to gs_stencil_op_type
From: To:
-----------------------------------------------------------
tvertarray gs_tvertarray
vb_data gs_vb_data
vbdata_create gs_vbdata_create
vbdata_destroy gs_vbdata_destroy
shader_param gs_shader_param
gs_effect gs_effect
effect_technique gs_effect_technique
effect_pass gs_effect_pass
effect_param gs_effect_param
texture_t gs_texture_t
stagesurf_t gs_stagesurf_t
zstencil_t gs_zstencil_t
vertbuffer_t gs_vertbuffer_t
indexbuffer_t gs_indexbuffer_t
samplerstate_t gs_samplerstate_t
swapchain_t gs_swapchain_t
texrender_t gs_texrender_t
shader_t gs_shader_t
sparam_t gs_sparam_t
effect_t gs_effect_t
technique_t gs_technique_t
eparam_t gs_eparam_t
device_t gs_device_t
graphics_t graphics_t
shader_param_type gs_shader_param_type
SHADER_PARAM_UNKNOWN GS_SHADER_PARAM_UNKNOWN
SHADER_PARAM_BOOL GS_SHADER_PARAM_BOOL
SHADER_PARAM_FLOAT GS_SHADER_PARAM_FLOAT
SHADER_PARAM_INT GS_SHADER_PARAM_INT
SHADER_PARAM_STRING GS_SHADER_PARAM_STRING
SHADER_PARAM_VEC2 GS_SHADER_PARAM_VEC2
SHADER_PARAM_VEC3 GS_SHADER_PARAM_VEC3
SHADER_PARAM_VEC4 GS_SHADER_PARAM_VEC4
SHADER_PARAM_MATRIX4X4 GS_SHADER_PARAM_MATRIX4X4
SHADER_PARAM_TEXTURE GS_SHADER_PARAM_TEXTURE
shader_param_info gs_shader_param_info
shader_type gs_shader_type
SHADER_VERTEX GS_SHADER_VERTEX
SHADER_PIXEL GS_SHADER_PIXEL
shader_destroy gs_shader_destroy
shader_numparams gs_shader_get_num_params
shader_getparambyidx gs_shader_get_param_by_idx
shader_getparambyname gs_shader_get_param_by_name
shader_getviewprojmatrix gs_shader_get_viewproj_matrix
shader_getworldmatrix gs_shader_get_world_matrix
shader_getparaminfo gs_shader_get_param_info
shader_setbool gs_shader_set_bool
shader_setfloat gs_shader_set_float
shader_setint gs_shader_set_int
shader_setmatrix3 gs_shader_setmatrix3
shader_setmatrix4 gs_shader_set_matrix4
shader_setvec2 gs_shader_set_vec2
shader_setvec3 gs_shader_set_vec3
shader_setvec4 gs_shader_set_vec4
shader_settexture gs_shader_set_texture
shader_setval gs_shader_set_val
shader_setdefault gs_shader_set_default
effect_property_type gs_effect_property_type
EFFECT_NONE GS_EFFECT_NONE
EFFECT_BOOL GS_EFFECT_BOOL
EFFECT_FLOAT GS_EFFECT_FLOAT
EFFECT_COLOR GS_EFFECT_COLOR
EFFECT_TEXTURE GS_EFFECT_TEXTURE
effect_param_info gs_effect_param_info
effect_destroy gs_effect_destroy
effect_gettechnique gs_effect_get_technique
technique_begin gs_technique_begin
technique_end gs_technique_end
technique_beginpass gs_technique_begin_pass
technique_beginpassbyname gs_technique_begin_pass_by_name
technique_endpass gs_technique_end_pass
effect_numparams gs_effect_get_num_params
effect_getparambyidx gs_effect_get_param_by_idx
effect_getparambyname gs_effect_get_param_by_name
effect_updateparams gs_effect_update_params
effect_getviewprojmatrix gs_effect_get_viewproj_matrix
effect_getworldmatrix gs_effect_get_world_matrix
effect_getparaminfo gs_effect_get_param_info
effect_setbool gs_effect_set_bool
effect_setfloat gs_effect_set_float
effect_setint gs_effect_set_int
effect_setmatrix4 gs_effect_set_matrix4
effect_setvec2 gs_effect_set_vec2
effect_setvec3 gs_effect_set_vec3
effect_setvec4 gs_effect_set_vec4
effect_settexture gs_effect_set_texture
effect_setval gs_effect_set_val
effect_setdefault gs_effect_set_default
texrender_create gs_texrender_create
texrender_destroy gs_texrender_destroy
texrender_begin gs_texrender_begin
texrender_end gs_texrender_end
texrender_reset gs_texrender_reset
texrender_gettexture gs_texrender_get_texture
GS_BUILDMIPMAPS GS_BUILD_MIPMAPS
GS_RENDERTARGET GS_RENDER_TARGET
gs_device_name gs_get_device_name
gs_device_type gs_get_device_type
gs_entercontext gs_enter_context
gs_leavecontext gs_leave_context
gs_getcontext gs_get_context
gs_renderstart gs_render_start
gs_renderstop gs_render_stop
gs_rendersave gs_render_save
gs_getinput gs_get_input
gs_geteffect gs_get_effect
gs_create_effect_from_file gs_effect_create_from_file
gs_create_effect gs_effect_create
gs_create_vertexshader_from_file gs_vertexshader_create_from_file
gs_create_pixelshader_from_file gs_pixelshader_create_from_file
gs_create_texture_from_file gs_texture_create_from_file
gs_resetviewport gs_reset_viewport
gs_set2dmode gs_set_2d_mode
gs_set3dmode gs_set_3d_mode
gs_create_swapchain gs_swapchain_create
gs_getsize gs_get_size
gs_getwidth gs_get_width
gs_getheight gs_get_height
gs_create_texture gs_texture_create
gs_create_cubetexture gs_cubetexture_create
gs_create_volumetexture gs_voltexture_create
gs_create_zstencil gs_zstencil_create
gs_create_stagesurface gs_stagesurface_create
gs_create_samplerstate gs_samplerstate_create
gs_create_vertexshader gs_vertexshader_create
gs_create_pixelshader gs_pixelshader_create
gs_create_vertexbuffer gs_vertexbuffer_create
gs_create_indexbuffer gs_indexbuffer_create
gs_gettexturetype gs_get_texture_type
gs_load_defaultsamplerstate gs_load_default_samplerstate
gs_getvertexshader gs_get_vertex_shader
gs_getpixelshader gs_get_pixel_shader
gs_getrendertarget gs_get_render_target
gs_getzstenciltarget gs_get_zstencil_target
gs_setrendertarget gs_set_render_target
gs_setcuberendertarget gs_set_cube_render_target
gs_beginscene gs_begin_scene
gs_draw gs_draw
gs_endscene gs_end_scene
gs_setcullmode gs_set_cull_mode
gs_getcullmode gs_get_cull_mode
gs_enable_depthtest gs_enable_depth_test
gs_enable_stenciltest gs_enable_stencil_test
gs_enable_stencilwrite gs_enable_stencil_write
gs_blendfunction gs_blend_function
gs_depthfunction gs_depth_function
gs_stencilfunction gs_stencil_function
gs_stencilop gs_stencil_op
gs_setviewport gs_set_viewport
gs_getviewport gs_get_viewport
gs_setscissorrect gs_set_scissor_rect
gs_create_texture_from_iosurface gs_texture_create_from_iosurface
gs_create_gdi_texture gs_texture_create_gdi
gs_is_compressed_format gs_is_compressed_format
gs_num_total_levels gs_get_total_levels
texture_setimage gs_texture_set_image
cubetexture_setimage gs_cubetexture_set_image
swapchain_destroy gs_swapchain_destroy
texture_destroy gs_texture_destroy
texture_getwidth gs_texture_get_width
texture_getheight gs_texture_get_height
texture_getcolorformat gs_texture_get_color_format
texture_map gs_texture_map
texture_unmap gs_texture_unmap
texture_isrect gs_texture_is_rect
texture_getobj gs_texture_get_obj
cubetexture_destroy gs_cubetexture_destroy
cubetexture_getsize gs_cubetexture_get_size
cubetexture_getcolorformat gs_cubetexture_get_color_format
volumetexture_destroy gs_voltexture_destroy
volumetexture_getwidth gs_voltexture_get_width
volumetexture_getheight gs_voltexture_get_height
volumetexture_getdepth gs_voltexture_getdepth
volumetexture_getcolorformat gs_voltexture_get_color_format
stagesurface_destroy gs_stagesurface_destroy
stagesurface_getwidth gs_stagesurface_get_width
stagesurface_getheight gs_stagesurface_get_height
stagesurface_getcolorformat gs_stagesurface_get_color_format
stagesurface_map gs_stagesurface_map
stagesurface_unmap gs_stagesurface_unmap
zstencil_destroy gs_zstencil_destroy
samplerstate_destroy gs_samplerstate_destroy
vertexbuffer_destroy gs_vertexbuffer_destroy
vertexbuffer_flush gs_vertexbuffer_flush
vertexbuffer_getdata gs_vertexbuffer_get_data
indexbuffer_destroy gs_indexbuffer_destroy
indexbuffer_flush gs_indexbuffer_flush
indexbuffer_getdata gs_indexbuffer_get_data
indexbuffer_numindices gs_indexbuffer_get_num_indices
indexbuffer_gettype gs_indexbuffer_get_type
texture_rebind_iosurface gs_texture_rebind_iosurface
texture_get_dc gs_texture_get_dc
texture_release_dc gs_texture_release_dc
2014-08-09 11:57:38 -07:00
jp9000
caf8ca9ba8
Remove 'shader' param from shader param functions
2014-06-25 19:50:08 -07:00
jp9000
cec11d624a
OpenGL: Don't call glGetAttribLocation on outputs
...
Previously we were using glGetAttribLocation on all inputs/outputs and
then just discarding if it was returned -1. However, we have a boolean
value of 'input' in gl_parser_attrib, so there's no need to be doing
this and discarding potentially useful error handling information.
2014-06-07 19:33:41 -07:00
jp9000
b64900e630
Graphics: Comment out parsed shader logging
2014-05-18 17:37:30 -07:00
jp9000
b067440f73
Use bzalloc instead of bmalloc then memset
...
Reduces needless code repetition and still allows for proper memory
alignment. Cleans up the code a bit.
2014-02-09 12:34:07 -07:00
jp9000
8298fa4dc7
With the permission of my fellow contributors, I'm switching obs-studio back to GPL v2+ to prevent issues between this project and the original OBS project, and for personal reasons to avoid legal ambiguity (not political reasons, I admittedly would prefer GPL v3+)
2013-12-02 22:24:38 -07:00
jp9000
e5c99175c5
fixed some build issues on non-windows systems
2013-11-26 23:07:27 -07:00
Palana
8880a9e811
check for link status instead of validate status
2013-11-14 18:29:37 +01:00
jp9000
bb329b9278
avoid using 'default' for enum switches
2013-10-24 01:29:06 -07:00
jp9000
18834c6a45
some static analysis cleanup
2013-10-17 17:21:42 -07:00
jp9000
dfa2dc6eab
fix up the rest of the GL code, add glew to project, add makefiles for opengl, fix makefiles so that it can be built with gcc, update project files to automatically output to the build directory
2013-10-16 23:31:18 -07:00
jp9000
9570f0b8d7
change names, fix some bugs, minor GL/D3D fixes, update tests, fix effect files, output a little more debug information
2013-10-14 12:37:52 -07:00
jp9000
9577ddcf9b
fill in the rest of the GL functions. finally
2013-10-12 20:18:05 -07:00
jp9000
83ddb920a1
finish up shader/sampler/texture/buffer loading/unloading/association
2013-10-12 12:35:38 -07:00
jp9000
aeea0eadc9
added shader attributes and added vertex buffer loading
2013-10-11 20:14:26 -07:00
jp9000
1b3b177583
add initial GL vertex buffer code
2013-10-10 23:03:42 -07:00
jp9000
c1939de49b
added z-stencil buffers to GL and made a GS_MAX_TEXTURES macro
2013-10-10 12:37:03 -07:00
jp9000
806bf557e5
removed a fairly pointless constant for the time being
2013-10-10 07:46:27 -07:00
jp9000
e159fc4f06
fill in shader parameter functions
2013-10-09 20:34:23 -07:00
jp9000
fda2ee1147
added initial GL shader code
2013-10-09 15:48:16 -07:00