Panda3D
|
Classes | |
struct | ShaderArgId |
struct | ShaderArgInfo |
struct | ShaderCaps |
struct | ShaderFile |
struct | ShaderMatSpec |
struct | ShaderPtrData |
struct | ShaderPtrSpec |
struct | ShaderTexSpec |
struct | ShaderVarSpec |
Public Types | |
enum | AutoShaderBit { bit_AutoShaderNormal = 0, bit_AutoShaderGlow = 1, bit_AutoShaderGloss = 2, bit_AutoShaderRamp = 3, bit_AutoShaderShadow = 4 } |
enum | AutoShaderSwitch { AS_normal = 0x01, AS_glow = 0x02, AS_gloss = 0x04, AS_ramp = 0x08, AS_shadow = 0x10 } |
enum | ShaderArgClass { SAC_scalar, SAC_vector, SAC_matrix, SAC_sampler, SAC_array, SAC_unknown } |
enum | ShaderArgDir { SAD_in, SAD_out, SAD_inout, SAD_unknown } |
enum | ShaderArgType { SAT_scalar, SAT_vec1, SAT_vec2, SAT_vec3, SAT_vec4, SAT_mat1x1, SAT_mat1x2, SAT_mat1x3, SAT_mat1x4, SAT_mat2x1, SAT_mat2x2, SAT_mat2x3, SAT_mat2x4, SAT_mat3x1, SAT_mat3x2, SAT_mat3x3, SAT_mat3x4, SAT_mat4x1, SAT_mat4x2, SAT_mat4x3, SAT_mat4x4, SAT_sampler1d, SAT_sampler2d, SAT_sampler3d, SAT_sampler2dArray, SAT_samplercube, SAT_unknown } |
enum | ShaderBug { SBUG_ati_draw_buffers } |
enum | ShaderLanguage { SL_none, SL_Cg, SL_GLSL } |
enum | ShaderMatFunc { SMF_compose, SMF_transform_dlight, SMF_transform_plight, SMF_transform_slight, SMF_first } |
enum | ShaderMatInput { SMO_identity, SMO_window_size, SMO_pixel_size, SMO_texpad_x, SMO_texpix_x, SMO_attr_material, SMO_attr_color, SMO_attr_colorscale, SMO_alight_x, SMO_dlight_x, SMO_plight_x, SMO_slight_x, SMO_satten_x, SMO_texmat_x, SMO_plane_x, SMO_clipplane_x, SMO_mat_constant_x, SMO_vec_constant_x, SMO_world_to_view, SMO_view_to_world, SMO_model_to_view, SMO_view_to_model, SMO_apiview_to_view, SMO_view_to_apiview, SMO_clip_to_view, SMO_view_to_clip, SMO_apiclip_to_view, SMO_view_to_apiclip, SMO_view_x_to_view, SMO_view_to_view_x, SMO_apiview_x_to_view, SMO_view_to_apiview_x, SMO_clip_x_to_view, SMO_view_to_clip_x, SMO_apiclip_x_to_view, SMO_view_to_apiclip_x, SMO_attr_fog, SMO_attr_fogcolor, SMO_INVALID } |
enum | ShaderMatPiece { SMP_whole, SMP_transpose, SMP_row0, SMP_row1, SMP_row2, SMP_row3, SMP_col0, SMP_col1, SMP_col2, SMP_col3, SMP_row3x1, SMP_row3x2, SMP_row3x3 } |
enum | ShaderPtrType { SPT_float, SPT_double, SPT_unknown } |
enum | ShaderStateDep { SSD_NONE = 0, SSD_general = 1, SSD_transform = 2, SSD_color = 4, SSD_colorscale = 8, SSD_material = 16, SSD_shaderinputs = 32, SSD_fog = 64 } |
enum | ShaderType { ST_none = 0, ST_vertex, ST_fragment, ST_geometry } |
Public Member Functions | |
Shader (CPT(ShaderFile) name, CPT(ShaderFile) text, const ShaderLanguage &lang=SL_none) | |
Construct a Shader. | |
CPT (ShaderFile) _text | |
virtual TypeHandle | force_init_type () |
const bool | get_error_flag () const |
Returns true if the shader contains a compile-time error. | |
const Filename | get_filename (const ShaderType &type=ST_none) const |
Return the Shader's filename for the given shader type. | |
const ShaderLanguage | get_language () const |
Returns the shader language in which this shader was written. | |
const string & | get_text (const ShaderType &type=ST_none) const |
Return the Shader's text for the given shader type. | |
virtual TypeHandle | get_type () const |
bool | is_prepared (PreparedGraphicsObjects *prepared_objects) const |
void | prepare (PreparedGraphicsObjects *prepared_objects) |
ShaderContext * | prepare_now (PreparedGraphicsObjects *prepared_objects, GraphicsStateGuardianBase *gsg) |
bool | release (PreparedGraphicsObjects *prepared_objects) |
int | release_all () |
Static Public Member Functions | |
static TypeHandle | get_class_type () |
static ShaderUtilization | get_shader_utilization () |
This flag returns SUT_none, SUT_basic, or SUT_advanced and controls the automatic generation of shaders. | |
static bool | have_shader_utilization () |
If true, then get_shader_utilization has been set using set_shader_utilization. | |
static void | init_type () |
This function is declared non-inline to work around a compiler bug in g++ 2.96. | |
static | PT (Shader) load(const Filename &file |
static | PT (Shader) make(const string &body |
static | PT (Shader) load(const ShaderLanguage &lang |
static | PT (Shader) make(const ShaderLanguage &lang |
static void | register_with_read_factory () |
static void | set_shader_utilization (ShaderUtilization utl) |
Set this flag to SUT_none, SUT_basic, or SUT_advanced to limit panda's automatic shader generation facilities. | |
Public Attributes | |
bool | _error_flag |
pvector< int > | _glsl_parameter_map |
epvector< ShaderMatSpec > | _mat_spec |
pvector< ShaderPtrSpec > | _ptr_spec |
pvector< ShaderTexSpec > | _tex_spec |
pvector< ShaderVarSpec > | _var_spec |
static const Filename const Filename & | fragment |
static const string const string & | fragment |
static const Filename const Filename const Filename & | geometry = "") |
static const string const string const string & | geometry = "") |
static const ShaderLanguage & | lang = SL_none) |
static const Filename & | vertex |
static const string & | vertex |
Protected Types | |
typedef pmap < PreparedGraphicsObjects *, ShaderContext * > | Contexts |
typedef pmap< CPT(ShaderFile), Shader * > | ShaderTable |
Protected Member Functions | |
CPT (ShaderFile) _filename | |
Protected Attributes | |
Contexts | _contexts |
ShaderLanguage | _language |
bool | _loaded |
int | _parse |
Static Protected Attributes | |
static ShaderCaps | _default_caps |
static ShaderTable | _load_table |
static ShaderTable | _make_table |
static ShaderUtilization | _shader_utilization = SUT_unspecified |
static int | _shaders_generated |
Friends | |
class | PreparedGraphicsObjects |
class | ShaderContext |
Shader::Shader | ( | CPT(ShaderFile) | name, |
CPT(ShaderFile) | text, | ||
const ShaderLanguage & | lang = SL_none |
||
) |
Construct a Shader.
Definition at line 1857 of file shader.cxx.
const bool Shader::get_error_flag | ( | ) | const [inline] |
const Filename Shader::get_filename | ( | const ShaderType & | type = ST_none | ) | const [inline] |
const Shader::ShaderLanguage Shader::get_language | ( | ) | const [inline] |
ShaderUtilization Shader::get_shader_utilization | ( | ) | [inline, static] |
const string & Shader::get_text | ( | const ShaderType & | type = ST_none | ) | const [inline] |
bool Shader::have_shader_utilization | ( | ) | [inline, static] |
static void Shader::init_type | ( | ) | [inline, static] |
This function is declared non-inline to work around a compiler bug in g++ 2.96.
Making it inline seems to cause problems in the optimizer.
Reimplemented from TypedReferenceCount.
Definition at line 505 of file shader.h.
References TypedReferenceCount::init_type().
void Shader::set_shader_utilization | ( | ShaderUtilization | utl | ) | [inline, static] |