PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University. More...
#include "animateVerticesRequest.h"
#include "bufferContext.h"
#include "config_putil.h"
#include "config_gobj.h"
#include "geom.h"
#include "geomCacheEntry.h"
#include "geomMunger.h"
#include "geomPrimitive.h"
#include "geomTriangles.h"
#include "geomTrianglesAdjacency.h"
#include "geomTristrips.h"
#include "geomTristripsAdjacency.h"
#include "geomTrifans.h"
#include "geomPatches.h"
#include "geomLines.h"
#include "geomLinesAdjacency.h"
#include "geomLinestrips.h"
#include "geomLinestripsAdjacency.h"
#include "geomPoints.h"
#include "geomVertexArrayData.h"
#include "geomVertexArrayFormat.h"
#include "geomVertexData.h"
#include "geomVertexFormat.h"
#include "lens.h"
#include "material.h"
#include "occlusionQueryContext.h"
#include "orthographicLens.h"
#include "matrixLens.h"
#include "paramTexture.h"
#include "perspectiveLens.h"
#include "queryContext.h"
#include "sliderTable.h"
#include "texture.h"
#include "texturePoolFilter.h"
#include "textureReloadRequest.h"
#include "textureStage.h"
#include "textureContext.h"
#include "timerQueryContext.h"
#include "samplerContext.h"
#include "samplerState.h"
#include "shader.h"
#include "shaderContext.h"
#include "transformBlend.h"
#include "transformBlendTable.h"
#include "transformTable.h"
#include "userVertexSlider.h"
#include "userVertexTransform.h"
#include "vertexDataBuffer.h"
#include "vertexTransform.h"
#include "vertexSlider.h"
#include "videoTexture.h"
#include "geomContext.h"
#include "vertexBufferContext.h"
#include "indexBufferContext.h"
#include "internalName.h"
#include "dconfig.h"
#include "string_utils.h"
Go to the source code of this file.
Functions | |
Configure (config_gobj) | |
ConfigureFn (config_gobj) | |
NotifyCategoryDef (gobj, "") | |
NotifyCategoryDef (shader, "") | |
Variables | |
ConfigVariableInt | adaptive_lru_max_updates_per_frame ("adaptive-lru-max-updates-per-frame", 40, PRC_DESC("The number of pages the AdaptiveLru class will update per " "frame. Do not set this too high or it will degrade " "performance.")) |
ConfigVariableDouble | adaptive_lru_weight ("adaptive-lru-weight", 0.2, PRC_DESC("Specifies the weight factor used to compute the AdaptiveLru's " "exponential moving average.")) |
ConfigVariableDouble | async_load_delay ("async-load-delay", 0.0, PRC_DESC("If this is nonzero, it represents an artificial delay, " "in seconds, that is imposed on every asynchronous load attempt " "(within the thread). Its purpose is to help debug errors that " "may occur when an asynchronous load is delayed. The " "delay is per-model, and all aync loads will be queued " "up behind the delay--it is as if the time it takes to read a " "file is increased by this amount per read.")) |
ConfigVariableBool | basic_shaders_only ("basic-shaders-only", false, PRC_DESC("Set this to true if you aren't interested in shader model three " "and beyond. Setting this flag will cause panda to disable " "bleeding-edge shader functionality which tends to be unreliable " "or broken. At some point, when functionality that is currently " "flaky becomes reliable, we may expand the definition of what " "constitutes 'basic' shaders.")) |
ConfigVariableBool | cache_generated_shaders ("cache-generated-shaders", true, PRC_DESC("Set this true to cause all generated shaders to be cached in " "memory. This is useful to prevent unnecessary recompilation.")) |
ConfigVariableString | cg_glsl_version ("cg-glsl-version", "", PRC_DESC("If this is set, it forces the Cg compiler to generate GLSL " "code conforming to the given GLSL version when using the " "glslv, glslf or glslg profiles. Use this when you are having " "problems with these profiles. Example values are 120 or 150.")) |
ConfigVariableBool | connect_triangle_strips ("connect-triangle-strips", true, PRC_DESC("Set this true to send a batch of triangle strips to the graphics " "card as one long triangle strip, connected by degenerate " "triangles, or false to send them as separate triangle strips " "with no degenerate triangles. On PC hardware, using one long " "triangle strip may help performance by reducing the number " "of separate graphics calls that have to be made.")) |
ConfigVariableDouble | default_converge ("default-converge", 25.0, PRC_DESC("The default convergence distance for stereo cameras.")) |
ConfigVariableDouble | default_far ("default-far", 100000.0, PRC_DESC("The default far clipping distance for all cameras.")) |
ConfigVariableDouble | default_fov ("default-fov", 30.0, PRC_DESC("The default field of view in degrees for all cameras. This is " "defined as a min_fov; that is, it is the field-of-view for the " "smallest of the X and Y sizes of the window, which is usually " "the vertical field of view (windows are usually wider than they " "are tall). For a 4x3 window, 30 degrees vertical is roughly " "40 degrees horizontal.")) |
ConfigVariableDouble | default_iod ("default-iod", 0.2, PRC_DESC("The default interocular distance for stereo cameras.")) |
ConfigVariableDouble | default_keystone ("default-keystone", 0.0f, PRC_DESC("The default keystone correction, as an x y pair, for all cameras.")) |
ConfigVariableDouble | default_near ("default-near", 1.0, PRC_DESC("The default near clipping distance for all cameras.")) |
ConfigVariableBool | display_list_animation ("display-list-animation", false, PRC_DESC("Set this true to allow the use of OpenGL display lists for " "rendering animated geometry (when the geometry is animated " "by the hardware). This is not on by default because there " "appear to be some driver issues with this on my FireGL T2, " "but it should be perfectly doable in principle, and might get " "you a small performance boost.")) |
ConfigVariableBool | display_lists ("display-lists", false, PRC_DESC("Set this true to allow the use of OpenGL display lists for " "rendering static geometry. On some systems, this can result " "in a performance improvement over vertex buffers alone; on " "other systems (particularly low-end systems) it makes little to " "no difference. On some systems, using display lists can actually " "reduce performance. This has no effect on DirectX rendering or " "on dynamic geometry (e.g. soft-skinned animation).")) |
ConfigVariableBool | driver_compress_textures ("driver-compress-textures", false, PRC_DESC("Set this true to ask the graphics driver to compress textures, " "rather than compressing them in-memory first. Depending on " "your graphics driver, you may or may not get better performance " "or results by setting this true. Setting it true may also " "allow you to take advantage of some exotic compression algorithm " "other than DXT1/3/5 that your graphics driver supports, but " "which is unknown to Panda. If the libsquish library is not " "compiled into Panda, textures cannot be compressed in-memory, " "and will always be handed to the graphics driver, regardless " "of this setting.")) |
ConfigVariableBool | driver_generate_mipmaps ("driver-generate-mipmaps", true, PRC_DESC("Set this true to use the hardware to generate mipmaps " "automatically in all cases, if supported. Set it false " "to generate mipmaps in software when possible.")) |
ConfigVariableBool | dump_generated_shaders ("dump-generated-shaders", false, PRC_DESC("Set this true to cause all generated shaders to be written " "to disk. This is useful for debugging broken shader " "generators.")) |
ConfigVariableList | exclude_texture_scale ("exclude-texture-scale", PRC_DESC("This is a list of glob patterns for texture filenames " "(excluding the directory part of the filename, but including " "the extension); for instance, 'digits_*.png'. Any texture " "filenames that match one of these patterns will not be affected " "by max-texture-dimension or texture-scale.")) |
ConfigVariableInt | geom_cache_min_frames ("geom-cache-min-frames", 1, PRC_DESC("Specifies the minimum number of frames any one particular " "object will remain in the geom cache, even if geom-cache-size " "is exceeded.")) |
ConfigVariableInt | geom_cache_size ("geom-cache-size", 5000, PRC_DESC("Specifies the maximum number of entries in the cache " "for storing pre-processed data for rendering " "vertices. This limit is flexible, and may be " "temporarily exceeded if many different Geoms are " "pre-processed during the space of a single frame.")) |
ConfigVariableInt | glsl_include_recursion_limit ("glsl-include-recursion-limit", 10, PRC_DESC("This sets a limit on how many nested #pragma include " "directives that Panda will follow when glsl-preprocess is " "enabled. This is used to prevent infinite recursion when " "two shader files include each other.")) |
ConfigVariableBool | glsl_preprocess ("glsl-preprocess", true, PRC_DESC("If this is enabled, Panda looks for lines starting with " "#pragma include when loading a GLSL shader and processes " "it appropriately. This can be useful if you have code that " "is shared between multiple shaders. Set this to false if " "you have no need for this feature or if you do your own " "preprocessing of GLSL shaders.")) |
ConfigVariableInt | graphics_memory_limit ("graphics-memory-limit", -1, PRC_DESC("This is a default limit that is imposed on each GSG at " "GSG creation time. It limits the total amount of graphics " "memory, including texture memory and vertex buffer memory, " "that will be consumed by the GSG, regardless of whether the " "hardware claims to provide more graphics memory than this. " "It is useful to put a ceiling on graphics memory consumed, since " "some drivers seem to allow the application to consume more " "memory than the hardware can realistically support. " "Set this to -1 to have no limit other than the normal " "hardware-imposed limit.")) |
ConfigVariableBool | hardware_animated_vertices ("hardware-animated-vertices", false, PRC_DESC("Set this true to allow the transforming of soft-skinned " "animated vertices via hardware, if supported, or false always " "to perform the vertex animation via software within Panda. " "If you have a card that supports this, and your scene does " "not contain too many vertices already, this can provide a " "performance boost by offloading some work from your CPU onto " "your graphics card. It may also help by reducing the bandwidth " "necessary on your computer's bus. However, in some cases it " "may actually reduce performance.")) |
ConfigVariableBool | hardware_point_sprites ("hardware-point-sprites", true, PRC_DESC("Set this true to allow the use of hardware extensions when " "rendering perspective-scaled points and point sprites. When " "false, these large points are always simulated via quads " "computed in software, even if the hardware claims it can " "support them directly.")) |
ConfigVariableBool | hardware_points ("hardware-points", true, PRC_DESC("Set this true to allow the use of hardware extensions when " "rendering large points. When false, large points (even if " "untextured) will be simulated via quads computed in software.")) |
ConfigVariableBool | keep_texture_ram ("keep-texture-ram", false, PRC_DESC("Set this to true to retain the ram image for each texture after it " "has been prepared with the GSG. This will allow the texture to be " "prepared with multiple GSG's, or to be re-prepared later after it is " "explicitly released from the GSG, without having to reread the " "texture image from disk; but it will consume memory somewhat " "wastefully.")) |
ConfigVariableDouble | lens_far_limit ("lens-far-limit", 0.0000001, PRC_DESC("This number is used to reduce the effect of numeric inaccuracies " "in Lens::extrude(). It should be a very small, positive number, " "almost zero; set it larger if Lens::extrude() returns values " "that appear meaningless, and set it smaller if you appear to be " "unable to move the far plane out far enough.")) |
ConfigVariableInt | lens_geom_segments ("lens-geom-segments", 50, PRC_DESC("This is the number of times to subdivide the visualization " "wireframe created when Lens::make_geometry() (or " "LensNode::show_frustum()) is called, for representing accurate " "curves. Note that this is only " "used for a nonlinear lens such as a cylindrical or fisheye " "lens; for a normal perspective or orthographic lens, the " "wireframe is not subdivided.")) |
ConfigVariableBool | matrix_palette ("matrix-palette", false, PRC_DESC("Set this true to allow the use of the matrix palette when " "animating vertices in hardware. The matrix palette is " "not supported by all devices, but if it is, using " "it can allow animation of more sophisticated meshes " "in hardware, and it can also improve the " "performance of animating some simpler meshes. Without " "this option, certain meshes will have to be animated in " "software. However, this option is not enabled by default, " "because its support seems to be buggy in certain drivers " "(ATI FireGL T2 8.103 in particular.)")) |
ConfigVariableInt | max_texture_dimension ("max-texture-dimension", -1, PRC_DESC("Set this to the maximum size a texture is allowed to be in either " "dimension. This is generally intended as a simple way to restrict " "texture sizes for limited graphics cards. When this is greater " "than zero, each texture image loaded from a file (but only those " "loaded from a file) will be automatically scaled down, if " "necessary, so that neither dimension is larger than this value. " "If this is less than zero, the size limit is taken from the " "primary GSG. If this is exactly zero, there is no limit.")) |
ConfigVariableBool | preserve_triangle_strips ("preserve-triangle-strips", false, PRC_DESC("Set this true to indicate a preference for keeping triangle strips " "when possible, instead of decomposing them into triangles. When " "this is true, flatten_strong and unify operations may be less " "effective at combining multiple Geoms together, but they will " "not implicitly decompose triangle strips.")) |
ConfigVariableInt | released_ibuffer_cache_size ("released-ibuffer-cache-size", 102400, PRC_DESC("Specifies the size in bytes of the cache of index " "buffers that have recently been released. If a new index " "buffer is prepared while a recently-released one of the same " "size is still in the cache, that same buffer is recycled. This " "cuts down on the overhead of creating and destroying index " "buffers on the graphics card.")) |
ConfigVariableInt | released_vbuffer_cache_size ("released-vbuffer-cache-size", 1048576, PRC_DESC("Specifies the size in bytes of the cache of vertex " "buffers that have recently been released. If a new vertex " "buffer is prepared while a recently-released one of the same " "size is still in the cache, that same buffer is recycled. This " "cuts down on the overhead of creating and destroying vertex " "buffers on the graphics card.")) |
ConfigVariableInt | sampler_object_limit ("sampler-object-limit", 2048, PRC_DESC("This is a default limit that is imposed on each GSG at " "GSG creation time. It limits the total amount of sampler " "objects that will be k.ept by the GSG, regardless of whether " "the hardware claims to provide more sampler objects than this. " "Direct3D 10-capable hardware supports at least 4096 distinct " "sampler objects, but we provide a slightly more conservative " "limit by default.")) |
ConfigVariableInt | simple_image_size ("simple-image-size", "16 16", PRC_DESC("This is an x y pair that specifies the maximum size of an " "automatically-generated " "texture simple image. The simple image can displayed before " "the texture has been loaded from disk.")) |
ConfigVariableDouble | simple_image_threshold ("simple-image-threshold", 0.1, PRC_DESC("This is a value that indicates how closely a texture's " "generated simple " "image should approximate the original image. The smaller the " "number, the closer the match; small numbers will result in " "simple images close to the maximum size specified by " "simple-image-size. Larger numbers will result in smaller " "simple images. Generally the value should be considerably " "less than 1.")) |
ConfigVariableBool | singular_points ("singular-points", true, PRC_DESC("Set this true to insist that when RenderModeAttrib::M_points is " "used, each point appears only once in the result, even if " "the vertex is referenced multiple times. This is particularly " "important when rendering points from a triangle mesh and you " "don't want the points to appear repeatedly.")) |
ConfigVariableBool | stereo_lens_old_convergence ("stereo-lens-old-convergence", false, PRC_DESC("In Panda3D 1.8 and below, when using a stereo lens, Panda " "generate an incorrect frustum skew for a given convergence " "distance, meaning that the left-right images wouldn't " "overlap at the configured distance. This calculation has " "since been corrected, but if your application relies on the " "old, incorrect behavior, this may be set to 'true' to switch " "back to the old calculation.")) |
ConfigVariableDouble | texture_scale ("texture-scale", 1.0, PRC_DESC("This is a global scale factor that is applied to each texture " "as it is loaded from disk. For instance, a value of 0.5 will " "reduce each texture to one-half its size in each dimension. This " "scale factor is applied before textures-power-2 or " "max-texture-dimension.")) |
ConfigVariableInt | texture_scale_limit ("texture-scale-limit", 4, PRC_DESC("This specifies the limit below which texture-scale will not " "reduce a texture image. This is a single dimension which applies " "to both X and Y.")) |
ConfigVariableBool | textures_auto_power_2 ("textures-auto-power-2", false, PRC_DESC("If this is true, then panda will wait until you open a window, " "and then ask the window if it supports non-power-of-two textures. " "If so, then the config variable textures_power_2 will " "automatically be adjusted. The pitfall of doing this is that if " "you then open a second window that doesn't support the same " "capabilities, it will have no choice but to print an error message.")) |
ConfigVariableBool | textures_header_only ("textures-header-only", false, PRC_DESC("If this is true, texture images will not actually be loaded from " "disk, but the image header information will be consulted to verify " "number of channels and so forth. The texture images themselves " "will be generated in a default blue color.")) |
ConfigVariableEnum< AutoTextureScale > | textures_power_2 ("textures-power-2", ATS_down, PRC_DESC("Specify whether textures should automatically be constrained to " "dimensions which are a power of 2 when they are loaded from " "disk. Set this to 'none' to disable this feature, or to " "'down' or 'up' to scale down or up to the nearest power of 2, " "respectively. This only has effect on textures which are not " "already a power of 2.")) |
ConfigVariableEnum< AutoTextureScale > | textures_square ("textures-square", ATS_none, PRC_DESC("Specify whether textures should automatically be constrained to " "a square aspect ratio when they are loaded from disk. Set this " "to 'none', 'down', or 'up'. See textures-power-2.")) |
ConfigVariableBool | vertex_animation_align_16 ("vertex-animation-align-16", false, PRC_DESC("If this is true, then animated vertices will be created with 4-component " "floats and aligned to 16-byte boundaries, to allow efficient vectorization " "(e.g. SSE2) operations when computing animations. If this is false, " "animated vertices will be packed as tightly as possible, in the normal way, " "which will optimize the amount of memory that must be sent to the graphics " "card, but prevent the use of SSE2 to calculate animation. This does not " "affect unanimated vertices, which are always packed tightly. This also " "impacts only vertex formats created within Panda subsystems; custom " "vertex formats are not affected.")) |
ConfigVariableBool | vertex_arrays ("vertex-arrays", true, PRC_DESC("Set this true to allow the use of vertex arrays for rendering " "OpenGL vertex data. This, or vertex buffers, is the normal " "way of issuing vertices ever since OpenGL 1.1, and you " "almost always want to have this set to true. However, some very " "buggy graphics drivers may have problems handling vertex arrays " "correctly, so if you are experiencing problems you might try " "setting this to false. If this is false, Panda will fall back " "to using immediate-mode commands like glVertex3f(), etc., to " "issue the vertices, which is potentially much slower than " "vertex arrays. Setting this false also disables vertex buffers, " "effectively ignoring the setting of the vertex-buffers variable " "(since vertex buffers are a special case of vertex arrays in " "OpenGL). This variable is normally not enabled in a production " "build. This has no effect on DirectX rendering.")) |
ConfigVariableBool | vertex_buffers ("vertex-buffers", true, PRC_DESC("Set this true to allow the use of vertex buffers (or buffer " "objects, as OpenGL dubs them) for rendering vertex data. This " "can greatly improve rendering performance on " "higher-end graphics cards, at the cost of some additional " "graphics memory (which might otherwise be used for textures " "or offscreen buffers). On lower-end graphics cards this will " "make little or no difference.")) |
ConfigVariableInt | vertex_column_alignment ("vertex-column-alignment", 4, PRC_DESC("This specifies the default byte alignment for each column of " "data within a GeomVertexData when it is assembled using the default " "interfaces. Normally, you should not change this config variable " "(which would change this value globally), but instead specify any " "alignment requirements on a per-column basis as you construct a " "GeomVertexFormat. Setting this value globally could result in " "much needless wasted space in all vertex data objects, but it " "could be useful for simple experiments. Also see " "vertex-animation-align-16 for a variable that controls " "this alignment for the vertex animation columns only.")) |
ConfigVariableInt | vertex_data_page_threads ("vertex-data-page-threads", 1, PRC_DESC("When this is nonzero (and Panda has been compiled with thread " "support) then this number of sub-threads will be spawned to " "evict vertex pages to disk and read them back again. When this " "is 0, this work will be done in the main thread, which may " "introduce occasional random chugs in rendering.")) |
ConfigVariableInt | vertex_data_small_size ("vertex-data-small-size", 64, PRC_DESC("When a GeomVertexArrayData is this number of bytes or smaller, it " "is deemed too small to pay the overhead of paging it in and out, " "and it is permanently retained resident.")) |
ConfigVariableFilename | vertex_save_file_directory ("vertex-save-file-directory", "", PRC_DESC("The directory in which the saved vertex data file is created " "for saving vertex buffers that have been evicted from RAM. If " "this is the empty string, or an invalid directory, a system " "default directory will be chosen.")) |
ConfigVariableString | vertex_save_file_prefix ("vertex-save-file-prefix", "p3d_vdata_", PRC_DESC("A prefix used to generate the filename for the saved vertex " "data file which is created for saving vertex buffers that have " "been evicted from RAM. A uniquifying sequence number and " "filename extension will be appended to this string.")) |
ConfigVariableBool | vertices_float64 ("vertices-float64", false, PRC_DESC("When this is true, the default float format for vertices " "will be a 64-bit double-precision float, instead " "of the normal 32-bit single-precision float. This must be set " "at static init time to have the broadest effect. You almost never " "want to set this true, since current hardware does not support " "double-precision vertices, and setting this will just require the " "driver to downsample the vertices at load time, making everything " "slower.")) |
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
All rights reserved.
All use of this software is subject to the terms of the revised BSD license. You should have received a copy of this license along with this source code in a file named "LICENSE."
Definition in file config_gobj.cxx.