Panda3D
 All Classes Functions Variables Enumerations
config_pgraph.cxx
00001 // Filename: config_pgraph.cxx
00002 // Created by:  drose (21Feb02)
00003 //
00004 ////////////////////////////////////////////////////////////////////
00005 //
00006 // PANDA 3D SOFTWARE
00007 // Copyright (c) Carnegie Mellon University.  All rights reserved.
00008 //
00009 // All use of this software is subject to the terms of the revised BSD
00010 // license.  You should have received a copy of this license along
00011 // with this source code in a file named "LICENSE."
00012 //
00013 ////////////////////////////////////////////////////////////////////
00014 
00015 #include "config_pgraph.h"
00016 
00017 #include "alphaTestAttrib.h"
00018 #include "audioVolumeAttrib.h"
00019 #include "auxBitplaneAttrib.h"
00020 #include "antialiasAttrib.h"
00021 #include "auxSceneData.h"
00022 #include "billboardEffect.h"
00023 #include "camera.h"
00024 #include "clipPlaneAttrib.h"
00025 #include "colorAttrib.h"
00026 #include "colorBlendAttrib.h"
00027 #include "colorScaleAttrib.h"
00028 #include "colorWriteAttrib.h"
00029 #include "compassEffect.h"
00030 #include "cullFaceAttrib.h"
00031 #include "cullBin.h"
00032 #include "cullBinAttrib.h"
00033 #include "cullResult.h"
00034 #include "cullTraverser.h"
00035 #include "cullableObject.h"
00036 #include "decalEffect.h"
00037 #include "depthOffsetAttrib.h"
00038 #include "depthTestAttrib.h"
00039 #include "depthWriteAttrib.h"
00040 #include "eventStorePandaNode.h"
00041 #include "findApproxLevelEntry.h"
00042 #include "fog.h"
00043 #include "fogAttrib.h"
00044 #include "geomDrawCallbackData.h"
00045 #include "geomNode.h"
00046 #include "geomTransformer.h"
00047 #include "lensNode.h"
00048 #include "light.h"
00049 #include "lightAttrib.h"
00050 #include "lightRampAttrib.h"
00051 #include "loader.h"
00052 #include "loaderFileType.h"
00053 #include "loaderFileTypeBam.h"
00054 #include "loaderFileTypeRegistry.h"
00055 #include "materialAttrib.h"
00056 #include "modelFlattenRequest.h"
00057 #include "modelLoadRequest.h"
00058 #include "modelNode.h"
00059 #include "modelRoot.h"
00060 #include "nodePath.h"
00061 #include "nodePathComponent.h"
00062 #include "pandaNode.h"
00063 #include "planeNode.h"
00064 #include "polylightEffect.h"
00065 #include "polylightNode.h"
00066 #include "portalNode.h"
00067 #include "occluderEffect.h"
00068 #include "occluderNode.h"
00069 #include "portalClipper.h"
00070 #include "renderAttrib.h"
00071 #include "renderEffect.h"
00072 #include "renderEffects.h"
00073 #include "renderModeAttrib.h"
00074 #include "renderState.h"
00075 #include "rescaleNormalAttrib.h"
00076 #include "sceneSetup.h"
00077 #include "scissorAttrib.h"
00078 #include "scissorEffect.h"
00079 #include "shadeModelAttrib.h"
00080 #include "shaderInput.h"
00081 #include "shaderAttrib.h"
00082 #include "shader.h"
00083 #include "showBoundsEffect.h"
00084 #include "stencilAttrib.h"
00085 #include "stateMunger.h"
00086 #include "texMatrixAttrib.h"
00087 #include "texProjectorEffect.h"
00088 #include "textureAttrib.h"
00089 #include "texGenAttrib.h"
00090 #include "transformState.h"
00091 #include "transparencyAttrib.h"
00092 
00093 #include "dconfig.h"
00094 
00095 ConfigureDef(config_pgraph);
00096 NotifyCategoryDef(pgraph, "");
00097 NotifyCategoryDef(loader, "");
00098 NotifyCategoryDef(portal, "");
00099 
00100 ConfigureFn(config_pgraph) {
00101   init_libpgraph();
00102 }
00103 
00104 ConfigVariableBool fake_view_frustum_cull
00105 ("fake-view-frustum-cull", false,
00106  PRC_DESC("Set this true to cause culling to be performed by rendering the "
00107           "object in red wireframe, rather than actually culling it.  This "
00108           "helps make culling errors obvious."));
00109 
00110 ConfigVariableBool clip_plane_cull
00111 ("clip-plane-cull", true,
00112  PRC_DESC("This is normally true; set it false to disable culling of objects "
00113           "that are completely behind one or more clip planes (primarily "
00114           "useful for debugging)  This also disables the use of occluders."));
00115 
00116 ConfigVariableBool allow_portal_cull
00117 ("allow-portal-cull", false,
00118  PRC_DESC("Set this true to enable portal clipping.  This will enable the "
00119           "renderer to cull more objects that are clipped if not in the "
00120           "current list of portals.  This is still somewhat experimental."));
00121 
00122 ConfigVariableBool debug_portal_cull
00123 ("debug-portal-cull", false,
00124  PRC_DESC("Set this true to enable debug visualization during portal clipping."
00125           "(You first need to enable portal culling, using the allow-portal-cull"
00126           "variable.)"));
00127 
00128 ConfigVariableBool show_occluder_volumes
00129 ("show-occluder-volumes", false,
00130  PRC_DESC("Set this true to enable debug visualization of the volumes used "
00131           "to cull objects behind an occluder."));
00132 
00133 ConfigVariableBool unambiguous_graph
00134 ("unambiguous-graph", false,
00135  PRC_DESC("Set this true to make ambiguous path warning messages generate an "
00136           "assertion failure instead of just a warning (which can then be "
00137           "trapped with assert-abort)."));
00138 
00139 ConfigVariableBool detect_graph_cycles
00140 ("detect-graph-cycles", true,
00141  PRC_DESC("Set this true to attempt to detect cycles in the scene graph "
00142           "(e.g. a node which is its own parent) as soon as they are "
00143           "made.  This has no effect in NDEBUG mode."));
00144 
00145 ConfigVariableBool no_unsupported_copy
00146 ("no-unsupported-copy", false,
00147  PRC_DESC("Set this true to make an attempt to copy an unsupported type "
00148           "generate an assertion failure instead of just a warning (which "
00149           "can then be trapped with assert-abort)."));
00150 
00151 ConfigVariableBool allow_unrelated_wrt
00152 ("allow-unrelated-wrt", true,
00153  PRC_DESC("Set this true to allow unrelated NodePaths (that is, nodes which "
00154           "have no common ancestor) to be adjusted relative to each other.  If "
00155           "true, these will be treated as if they had a common node above "
00156           "their top nodes."));
00157 
00158 ConfigVariableBool paranoid_compose
00159 ("paranoid-compose", false,
00160  PRC_DESC("Set this true to double-check the componentwise transform compose "
00161           "(or invert) operation against the equivalent matrix-based "
00162           "operation.  This has no effect if NDEBUG is defined."));
00163 
00164 ConfigVariableBool compose_componentwise
00165 ("compose-componentwise", true,
00166  PRC_DESC("Set this true to perform componentwise compose and invert "
00167           "operations when possible.  If this is false, the compositions "
00168           "are always computed by matrix."));
00169 
00170 ConfigVariableBool uniquify_matrix
00171 ("uniquify-matrix", true,
00172  PRC_DESC("Set this true to look up arbitarary 4x4 transform matrices in the "
00173           "cache, to ensure that two differently-computed transforms that "
00174           "happen to encode the same matrix will be "
00175           "collapsed into a single pointer.  Nowadays, "
00176           "with the transforms stored in a hashtable, we're generally better "
00177           "off with this set true."));
00178 
00179 ConfigVariableBool paranoid_const
00180 ("paranoid-const", false,
00181  PRC_DESC("Set this true to double-check that nothing is inappropriately "
00182           "modifying the supposedly const structures like RenderState, "
00183           "RenderAttrib, TransformState, and RenderEffect.  This has no effect "
00184           "if NDEBUG is defined."));
00185 
00186 ConfigVariableBool auto_break_cycles
00187 ("auto-break-cycles", true,
00188  PRC_DESC("Set this true to automatically detect and break reference-count "
00189           "cycles in the TransformState and RenderState caches.  When this "
00190           "is false, you must explicitly call TransformState.clear_cache() "
00191           "from time to time to prevent gradual memory bloat."));
00192 
00193 ConfigVariableBool garbage_collect_states
00194 ("garbage-collect-states", true,
00195  PRC_DESC("Set this true to defer destruction of TransformState and "
00196           "RenderState objects until the end of the frame (or whenever "
00197           "TransformState::garbage_collect() and RenderState::garbage_collect() "
00198           "are called).  This is a particularly useful thing to do when "
00199           "using multiple threads, because it improves parallelization."));
00200 
00201 ConfigVariableDouble garbage_collect_states_rate
00202 ("garbage-collect-states-rate", 1.0,
00203  PRC_DESC("The fraction of the total number of TransformStates "
00204           "(or RenderStates, or whatever) that are processed with "
00205           "each garbage collection step.  Setting this smaller than "
00206           "1.0 will collect fewer states each frame, which may require "
00207           "less processing time, but risks getting unstable cache "
00208           "performance if states accumulate faster than they can be "
00209           "cleaned up."));
00210 
00211 ConfigVariableBool transform_cache
00212 ("transform-cache", true,
00213  PRC_DESC("Set this true to enable the cache of TransformState objects.  "
00214           "Using the cache saves time computing transforms and inverse "
00215           "transforms, but imposes some overhead for maintaining the "
00216           "cache itself."));
00217 
00218 ConfigVariableBool state_cache
00219 ("state-cache", true,
00220  PRC_DESC("Set this true to enable the cache of RenderState objects, "
00221           "similar to the TransformState cache controlled via "
00222           "transform-cache."));
00223 
00224 ConfigVariableBool uniquify_transforms
00225 ("uniquify-transforms", true,
00226  PRC_DESC("Set this true to ensure that equivalent TransformStates "
00227           "are pointerwise equal.  This may improve caching performance, "
00228           "but also adds additional overhead to maintain the cache, "
00229           "including the need to check for a composition cycle in "
00230           "the cache."));
00231 
00232 ConfigVariableBool uniquify_states
00233 ("uniquify-states", true,
00234  PRC_DESC("Set this true to ensure that equivalent RenderStates "
00235           "are pointerwise equal.  This may improve caching performance, "
00236           "but also adds additional overhead to maintain the cache, "
00237           "including the need to check for a composition cycle in "
00238           "the cache."));
00239 
00240 ConfigVariableBool uniquify_attribs
00241 ("uniquify-attribs", true,
00242  PRC_DESC("Set this true to ensure that equivalent RenderAttribs "
00243           "are pointerwise equal.  This may improve caching performance, "
00244           "but also adds additional overhead to maintain the cache, "
00245           "including the need to check for a composition cycle in "
00246           "the cache."));
00247 
00248 ConfigVariableBool retransform_sprites
00249 ("retransform-sprites", true,
00250  PRC_DESC("To render sprite-based particle effects, Panda must convert "
00251           "the sprite points from object space into clip space, and compute "
00252           "the corners of the quads in clip space.  When this variable is "
00253           "false, the resulting quads are then sent to the graphics "
00254           "hardware in clip space.  When this is true, the quads are "
00255           "re-transformed back into the original object space, which is "
00256           "necessary in order for fog to work correctly on the sprites."));
00257 
00258 ConfigVariableBool support_fade_lod
00259 ("support-fade-lod", true,
00260  PRC_DESC("Set this false to make FadeLOD nodes behave like regular LOD nodes "
00261           "(ignoring the fade time).  This may be useful, for instance, to "
00262           "test the performance impact of using FadeLOD nodes."));
00263 
00264 ConfigVariableBool depth_offset_decals
00265 ("depth-offset-decals", false,
00266  PRC_DESC("Set this true to allow decals to be implemented via the advanced "
00267           "depth offset feature, if supported, instead of via the traditional "
00268           "(and slower) two-pass approach.  This is false by default "
00269           "because it appears that many graphics drivers have issues with "
00270           "their depth offset implementation."));
00271 
00272 ConfigVariableInt max_collect_vertices
00273 ("max-collect-vertices", 65535,
00274  PRC_DESC("Specifies the maximum number of vertices that are allowed to be "
00275           "accumulated into any one GeomVertexData structure as a result "
00276           "of collecting objects together during a flatten operation.  "
00277           "This prevents the accidental generation of large vertex buffers "
00278           "from lots of smaller vertex buffers, while not "
00279           "imposing a limit on the original size of any one "
00280           "GeomVertexData structure."));
00281 
00282 ConfigVariableInt max_collect_indices
00283 ("max-collect-indices", 65535,
00284  PRC_DESC("Specifies the maximum number of vertex indices that are allowed "
00285           "to be accumulated into any one GeomPrimitive as a result "
00286           "of collecting objects together during a flatten operation.  "
00287           "This prevents the accidental generation of large index buffers "
00288           "from lots of smaller index buffers, while not "
00289           "imposing a limit on the original size of any one "
00290           "GeomPrimitive."));
00291 
00292 ConfigVariableBool premunge_data
00293 ("premunge-data", true,
00294  PRC_DESC("Set this true to preconvert vertex data at model load time to "
00295           "match the data requirements of the current GSG.  For instance, "
00296           "color columns are pre-converted to match OpenGL or DirectX "
00297           "encoding requirements, as appropriate.  When this is false, the "
00298           "data will be munged at render time instead."));
00299 
00300 ConfigVariableBool preserve_geom_nodes
00301 ("preserve-geom-nodes", false,
00302  PRC_DESC("This specifies the default value for the \"preserved\" flag on "
00303           "every GeomNode created.  When this is true, GeomNodes will not "
00304           "be flattened, so setting this true effectively disables the "
00305           "use of flatten to combine GeomNodes."));
00306 
00307 ConfigVariableBool flatten_geoms
00308 ("flatten-geoms", true,
00309  PRC_DESC("When this is true (the default), NodePath::flatten_strong() and "
00310           "flatten_medium() will attempt to combine multiple Geoms into "
00311           "as few Geoms as possible, by combing GeomVertexDatas and then "
00312           "unifying.  Setting this false disables this behavior, so that "
00313           "NodePath flatten operations will only reduce nodes.  This affects "
00314           "only the NodePath interfaces; you may still make the lower-level "
00315           "SceneGraphReducer calls directly."));
00316 
00317 ConfigVariableInt max_lenses
00318 ("max-lenses", 100,
00319  PRC_DESC("Specifies an upper limit on the maximum number of lenses "
00320           "and the maximum lens index number) that may be associated with "
00321           "a single LensNode.  There is no technical reason for this "
00322           "limitation, but very large numbers are probably a mistake, so "
00323           "this can be used as a simple sanity check.  Set it larger or "
00324           "smaller to suit your needs."));
00325 
00326 ConfigVariableBool default_antialias_enable
00327 ("default-antialias-enable", false,
00328  PRC_DESC("Set this true to enable the M_auto antialiasing mode for all "
00329           "nodes by default."));
00330 
00331 ConfigVariableBool polylight_info
00332 ("polylight-info", false,
00333  PRC_DESC("Set this true to view some info statements regarding the polylight. "
00334           "It is helpful for debugging."));
00335 
00336 ConfigVariableDouble lod_fade_time
00337 ("lod-fade-time", 0.5,
00338  PRC_DESC("The default amount of time (in seconds) over which a FadeLODNode "
00339           "transitions between its different levels."));
00340 
00341 ConfigVariableString lod_fade_bin_name
00342 ("lod-fade-bin-name", "fixed",
00343  PRC_DESC("The default bin name in which to place the fading part of a "
00344           "FadeLODNode transition."));
00345 
00346 ConfigVariableInt lod_fade_bin_draw_order
00347 ("lod-fade-bin-draw-order", 0,
00348  PRC_DESC("The default bin draw order to assign the fading part of a "
00349           "FadeLODNode transition."));
00350 
00351 ConfigVariableInt lod_fade_state_override
00352 ("lod-fade-state-override", 1000,
00353  PRC_DESC("The default override value to assign to the fade attribs "
00354           "in order to effect a FadeLODNode transition."));
00355 
00356 ConfigVariableBool verify_lods
00357 ("verify-lods", false,
00358  PRC_DESC("When this is true, LODNodes will test when they are rendered to "
00359           "ensure that each child's geometry fits entirely within the radius "
00360           "defined by its switch-out distance.  When it is false, LODNodes "
00361           "may have any switch in and out distances, regardless of the "
00362           "actual size of their geometry.  This test is only made in NDEBUG "
00363           "mode (the variable is ignored in a production build)."));
00364 
00365 ConfigVariableBool show_vertex_animation
00366 ("show-vertex-animation", false,
00367  PRC_DESC("Set this true to flash any objects whose vertices are animated "
00368           "by Panda on the CPU (flash red) or by hardware (flash blue).  "
00369           "This only has effect when NDEBUG is not defined."));
00370 
00371 ConfigVariableBool show_transparency
00372 ("show-transparency", false,
00373  PRC_DESC("Set this true to flash any objects that are rendered in "
00374           "some transparency mode.  The color chosen is based on the  "
00375           "particular transparency mode in effect.  This only has effect "
00376           "when NDEBUG is not defined."));
00377 
00378 ConfigVariableBool m_dual
00379 ("m-dual", true,
00380  PRC_DESC("Set this false to disable TransparencyAttrib::M_dual altogether "
00381           "(and use M_alpha in its place)."));
00382 
00383 ConfigVariableBool m_dual_opaque
00384 ("m-dual-opaque", true,
00385  PRC_DESC("Set this false to disable just the opaque part of M_dual."));
00386 
00387 ConfigVariableBool m_dual_transparent
00388 ("m-dual-transparent", true,
00389  PRC_DESC("Set this false to disable just the transparent part of M_dual."));
00390 
00391 ConfigVariableBool m_dual_flash
00392 ("m-dual-flash", false,
00393  PRC_DESC("Set this true to flash any objects that use M_dual, for debugging."));
00394 
00395 ConfigVariableList load_file_type
00396 ("load-file-type",
00397  PRC_DESC("List the model loader modules that Panda will automatically "
00398           "import when a new, unknown model type is loaded.  This may be "
00399           "either the name of a module, or a space-separate list of filename "
00400           "extensions, followed by the name of the module."));
00401 
00402 ConfigVariableString default_model_extension
00403 ("default-model-extension", "",
00404  PRC_DESC("This specifies the filename extension (with leading dot) that "
00405           "should be assumed if an attempt is made to load a filename that "
00406           "has no extension.  This is primarily designed to support legacy "
00407           "code that used the now-deprecated implicit-extension feature of "
00408           "Panda's loader; new code should probably give the correct name "
00409           "for each model file they intend to load."));
00410 
00411 ConfigVariableBool allow_live_flatten
00412 ("allow-live-flatten", true,
00413  PRC_DESC("Set this true to allow the use of flatten_strong() or any "
00414           "variant on a node that is attached to a live scene graph node, "
00415           "or false to disallow this.  Flattening a live scene graph node "
00416           "can cause problems when threading is enabled.  This variable "
00417           "only has an effect when Panda is not compiled for a release "
00418           "build."));
00419 
00420 ////////////////////////////////////////////////////////////////////
00421 //     Function: init_libpgraph
00422 //  Description: Initializes the library.  This must be called at
00423 //               least once before any of the functions or classes in
00424 //               this library can be used.  Normally it will be
00425 //               called by the static initializers and need not be
00426 //               called explicitly, but special cases exist.
00427 ////////////////////////////////////////////////////////////////////
00428 void
00429 init_libpgraph() {
00430   static bool initialized = false;
00431   if (initialized) {
00432     return;
00433   }
00434   initialized = true;
00435 
00436   AlphaTestAttrib::init_type();
00437   AntialiasAttrib::init_type();
00438   AudioVolumeAttrib::init_type();
00439   AuxBitplaneAttrib::init_type();
00440   AuxSceneData::init_type();
00441   BillboardEffect::init_type();
00442   Camera::init_type();
00443   ClipPlaneAttrib::init_type();
00444   ColorAttrib::init_type();
00445   ColorBlendAttrib::init_type();
00446   ColorScaleAttrib::init_type();
00447   ColorWriteAttrib::init_type();
00448   CompassEffect::init_type();
00449   CullFaceAttrib::init_type();
00450   CullBin::init_type();
00451   CullBinAttrib::init_type();
00452   CullResult::init_type();
00453   CullTraverser::init_type();
00454   CullableObject::init_type();
00455   DecalEffect::init_type();
00456   DepthOffsetAttrib::init_type();
00457   DepthTestAttrib::init_type();
00458   DepthWriteAttrib::init_type();
00459   EventStorePandaNode::init_type();
00460   FindApproxLevelEntry::init_type();
00461   Fog::init_type();
00462   FogAttrib::init_type();
00463   GeomDrawCallbackData::init_type();
00464   GeomNode::init_type();
00465   GeomTransformer::init_type();
00466   LensNode::init_type();
00467   Light::init_type();
00468   LightAttrib::init_type();
00469   LightRampAttrib::init_type();
00470   Loader::init_type();
00471   LoaderFileType::init_type();
00472   LoaderFileTypeBam::init_type();
00473   MaterialAttrib::init_type();
00474   ModelFlattenRequest::init_type();
00475   ModelLoadRequest::init_type();
00476   ModelNode::init_type();
00477   ModelRoot::init_type();
00478   NodePath::init_type();
00479   NodePathComponent::init_type();
00480   PandaNode::init_type();
00481   PandaNodePipelineReader::init_type();
00482   PlaneNode::init_type();
00483   PolylightNode::init_type();
00484   PolylightEffect::init_type();
00485   PortalNode::init_type();
00486   OccluderEffect::init_type();
00487   OccluderNode::init_type();
00488   PortalClipper::init_type();
00489   RenderAttrib::init_type();
00490   RenderEffect::init_type();
00491   RenderEffects::init_type();
00492   RenderModeAttrib::init_type();
00493   RenderState::init_type();
00494   RescaleNormalAttrib::init_type();
00495   SceneSetup::init_type();
00496   ScissorAttrib::init_type();
00497   ScissorEffect::init_type();
00498   ShadeModelAttrib::init_type();
00499   ShaderInput::init_type();
00500   ShaderAttrib::init_type();
00501   ShowBoundsEffect::init_type();
00502   StateMunger::init_type();
00503   StencilAttrib::init_type();
00504   TexMatrixAttrib::init_type();
00505   TexProjectorEffect::init_type();
00506   TextureAttrib::init_type();
00507   TexGenAttrib::init_type();
00508   TransformState::init_type();
00509   TransparencyAttrib::init_type();
00510 
00511   AlphaTestAttrib::register_with_read_factory();
00512   AntialiasAttrib::register_with_read_factory();
00513   AudioVolumeAttrib::register_with_read_factory();
00514   AuxBitplaneAttrib::register_with_read_factory();
00515   BillboardEffect::register_with_read_factory();
00516   Camera::register_with_read_factory();
00517   ClipPlaneAttrib::register_with_read_factory();
00518   CompassEffect::register_with_read_factory();
00519   ColorAttrib::register_with_read_factory();
00520   ColorBlendAttrib::register_with_read_factory();
00521   ColorScaleAttrib::register_with_read_factory();
00522   ColorWriteAttrib::register_with_read_factory();
00523   CullBinAttrib::register_with_read_factory();
00524   CullFaceAttrib::register_with_read_factory();
00525   DecalEffect::register_with_read_factory();
00526   DepthOffsetAttrib::register_with_read_factory();
00527   DepthTestAttrib::register_with_read_factory();
00528   DepthWriteAttrib::register_with_read_factory();
00529   Fog::register_with_read_factory();
00530   FogAttrib::register_with_read_factory();
00531   GeomNode::register_with_read_factory();
00532   LensNode::register_with_read_factory();
00533   LightAttrib::register_with_read_factory();
00534   LightRampAttrib::register_with_read_factory();
00535   MaterialAttrib::register_with_read_factory();
00536   ModelNode::register_with_read_factory();
00537   ModelRoot::register_with_read_factory();
00538   PandaNode::register_with_read_factory();
00539   PlaneNode::register_with_read_factory();
00540   PolylightNode::register_with_read_factory();
00541   PortalNode::register_with_read_factory();
00542   OccluderEffect::register_with_read_factory();
00543   OccluderNode::register_with_read_factory();
00544   RenderEffects::register_with_read_factory();
00545   RenderModeAttrib::register_with_read_factory();
00546   RenderState::register_with_read_factory();
00547   RescaleNormalAttrib::register_with_read_factory();
00548   ScissorAttrib::register_with_read_factory();
00549   ScissorEffect::register_with_read_factory();
00550   ShadeModelAttrib::register_with_read_factory();
00551   ShaderInput::register_with_read_factory();
00552   ShaderAttrib::register_with_read_factory();
00553   Shader::register_with_read_factory();
00554   ShowBoundsEffect::register_with_read_factory();
00555   TexMatrixAttrib::register_with_read_factory();
00556   TexProjectorEffect::register_with_read_factory();
00557   TextureAttrib::register_with_read_factory();
00558   TexGenAttrib::register_with_read_factory();
00559   TransformState::register_with_read_factory();
00560   TransparencyAttrib::register_with_read_factory();
00561 
00562   // By initializing the _states map up front, we also guarantee that
00563   // the _states_lock mutex gets created before we spawn any threads
00564   // (assuming no one is creating threads at static init time).
00565   TransformState::init_states();
00566   RenderState::init_states();
00567   RenderEffects::init_states();
00568 
00569   LoaderFileTypeRegistry *reg = LoaderFileTypeRegistry::get_global_ptr();
00570   reg->register_type(new LoaderFileTypeBam);
00571 }
 All Classes Functions Variables Enumerations