Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
al_attach_shader_source(3)  Library Functions Manual  al_attach_shader_source(3)

NAME
     al_attach_shader_source - Allegro 5 API

SYNOPSIS
	    #include <allegro5/allegro.h>

	    bool al_attach_shader_source(ALLEGRO_SHADER *shader, ALLEGRO_SHADER_TYPE type,
		const char *source)

DESCRIPTION
     Attaches  the  shader's  source  code to the shader object and compiles it.
     Passing NULL deletes the underlying (OpenGL or DirectX) shader.   See  also
     al_attach_shader_source_file(3)  if you prefer to obtain your shader source
     from an external file.

     If you do not use ALLEGRO_PROGRAMMABLE_PIPELINE  Allegro's  graphics  func-
     tions  will not use any shader specific functions themselves.  In case of a
     system with no fixed function pipeline (like OpenGL ES 2 or OpenGL 3 or  4)
     this means Allegro's drawing functions cannot be used.

     TODO: Is ALLEGRO_PROGRAMMABLE_PIPELINE set automatically in this case?

     When  ALLEGRO_PROGRAMMABLE_PIPELINE  is  used the following shader uniforms
     are provided by Allegro and can be accessed in your shaders:

     al_projview_matrix
	    matrix for	Allegro's  orthographic  projection  multiplied  by  the
	    al_use_transform(3)  matrix.  The type is mat4 in GLSL, and float4x4
	    in HLSL.

     al_use_tex
	    whether or not to use the bound texture.  The type is bool	in  both
	    GLSL and HLSL.

     al_tex
	    the texture if one is bound.  The type is sampler2D in GLSL and tex-
	    ture in HLSL.

     al_use_tex_matrix
	    whether  or  not to use a texture matrix (used by the primitives ad-
	    don).  The type is bool in both GLSL and HLSL.

     al_tex_matrix
	    the texture matrix (used by  the  primitives  addon).   Your  shader
	    should multiply the texture coordinates by this matrix.  The type is
	    mat4 in GLSL, and float4x4 in HLSL.

     With  GLSL  alpha	testing  is done in the shader and uses these additional
     uniforms:

     al_alpha_test
	    Whether to do any alpha testing.  If false, the shader should render
	    the pixel, otherwise it should interpret the values of al_alpha_func
	    and al_alpha_test_val.

     al_alpha_func
	    The alpha testing function used.  One  of  the  ALLEGRO_RENDER_FUNC-
	    TION(3)  values.   The  default is ALLEGRO_RENDER_ALWAYS which means
	    all pixels (even completely transparent  ones)  are  rendered.   The
	    type is int.  See ALLEGRO_RENDER_STATE(3).

     al_alpha_test_val
	    If	alpha  testing is not ALLEGRO_RENDER_NEVER or ALLEGRO_RENDER_AL-
	    WAYS the alpha value to compare to for alpha testing.  The	type  is
	    float.

     For GLSL shaders the vertex attributes are passed using the following vari-
     ables:

     al_pos
	    vertex position attribute.	Type is vec4.

     al_texcoord
	    vertex texture coordinate attribute.  Type is vec2.

     al_color
	    vertex color attribute.  Type is vec4.

     al_user_attr_0
	    The vertex attribute declared as ALLEGRO_PRIM_USER_ATTR

     al_user_attr_1, ..., al_user_attr_9
	    The  vertex attribute declared as ALLEGRO_PRIM_USER_ATTR + X where X
	    is an integer from 1 to 9

     For HLSL shaders the vertex attributes are passed using the  following  se-
     mantics:

     POSITION0
	    vertex position attribute.	Type is float4.

     TEXCOORD0
	    vertex texture coordinate attribute.  Type is float2.

     TEXCOORD1
	    vertex color attribute.  Type is float4.

     Also,  each shader variable has a corresponding macro name that can be used
     when defining the shaders using string literals.  Don't  use  these  macros
     with the other shader functions as that will lead to undefined behavior.

     * ALLEGRO_SHADER_VAR_PROJVIEW_MATRIX for "al_projview_matrix"

     * ALLEGRO_SHADER_VAR_POS for "al_pos"

     * ALLEGRO_SHADER_VAR_COLOR for "al_color"

     * ALLEGRO_SHADER_VAR_TEXCOORD for "al_texcoord"

     * ALLEGRO_SHADER_VAR_USE_TEX for "al_use_tex"

     * ALLEGRO_SHADER_VAR_TEX for "al_tex"

     * ALLEGRO_SHADER_VAR_USE_TEX_MATRIX for "al_use_tex_matrix"

     * ALLEGRO_SHADER_VAR_TEX_MATRIX for "al_tex_matrix"

     * ALLEGRO_SHADER_VAR_ALPHA_FUNCTION for "al_alpha_func"

     * ALLEGRO_SHADER_VAR_ALPHA_TEST_VALUE for "al_alpha_test_val"

     Examine the output of al_get_default_shader_source(3) for an example of how
     to use the above uniforms and attributes.

     Returns  true on success and false on error, in which case the error log is
     updated.  The error log can be retrieved with al_get_shader_log(3).

SINCE
     5.1.0

SEE ALSO
     al_attach_shader_source_file(3),	    al_build_shader(3),       al_get_de-
     fault_shader_source(3), al_get_shader_log(3), ALLEGRO_PRIM_ATTR(3)

Allegro reference manual			      al_attach_shader_source(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=al_attach_shader_source&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help