Files
CDAG/Research/Readme.txt

136 lines
8.8 KiB
Plaintext

Settings for the research project can be found in:
properties.txt
shaders/shader_properties.txt
Settings are ordered as the settings name (cannot contain spaces!), followed by it's value.
Main settings:
anti_aliasing:
Number of samples used for anti-aliasing. Should be a power of two.
opengl_version_major:
OpenGL version used (e.g. 4.x)
opengl_version_minor:
Minor OpenGL version used. This is the number behind the dot in the openGL version number.
OctreeBuilder settings:
octreebuilder_debug_width:
The width of the debug window the octree builder renders in (in pixels)
octreebuilder_debug_height:
The height of the debug window the octree builder renders in (in pixels)
octreebuilder_manual:
In manual mode, the user should press space to go to the next layer of the depth peeling. (1 for on, 0 for off)
octreebuilder_renderscene:
Boolean indicating if the scene should be rendered directly, or if the buffer read using depth peeling should be rendered to a fullscereen quad (1 for scene rendering, 0 for buffer rendering)
octreebuilder_verbose:
Boolean indicating if the octreebuilder should output progress information
octreebuilder_interpolate_colors:
If 1, mipmaps and linear interpolation will be used, if 0, nearest neighbor will be used.
octreebuilder_usecache:
If 1, the octreebuilder will check if a tree exists before building it.
octreebuilder_max_single_pass_layers:
The maximum number of layers that can be constructed at once. If the required depth is higher than this number, the scene will be split up in required cells, which will then be converted into octrees.
octreebuilder_poolsize
The maximum size that the ObjectPool used for Nodes can be (in number of nodes)
Renderer settings:
vertex_shader:
Filename (relative to "<<Current Folder>>/shaders/") of the vertex shader to be used.
fragment_shader:
Filename (relative to "<<Current Folder>>/shaders/") of the fragment shader to be used for default (colored or uncolored) octrees
fragment_shader_multiroot:
Filename (relative to "<<Current Folder>>/shaders/") of the fragment shader to be used for mutliroot trees that contain a certain number of bits per tree
renderer_usecache:
Boolean indicating if the pool texture should be loaded from disk (if it exists) or generated directly.
renderer_showLeafCount:
Boolean indicating if the total number of leaf voxels should be calculated and printed.
verbose:
Boolean indicating if the renderer should output progress information
width:
The width of the renderer window
height:
The height of the renderer window
window_name:
The title of the window (as shown by windows)
octree_type:
The type of octree to be used. Currently supported are:
s
Standard binary octree/DAG as described by Kämpe and Assarsson in High Resolution Sparse Voxel DAGs
hc<<compression>
Hierarchical Colored Octree/DAG: Colored tree in which all nodes in the tree can contain colors (not just the leafs). The actual colors are stored in a seperate texture. Each node in the tree contains a pointer to this texture. The average color of the child nodes is used as the color of a node.
hsc<<compression>
Hierarchical Shift Colored Octree: stores in each node the difference with it's parent node. Note that for this to work, the shader needs to be changed manually to a shader that supports these kinds of trees.
oc<<compression>
Only-Colors Colored Octree/DAG: Hierarchical Octree type that uses two trees. The first tree contains the correct colors in the position where there is geometry, but the rest of the tree can be filled up to increase the number of identical nodes for DAG merging. A second octree is used for geometry. This is an "s" tree.
u([0-9]+lod)?([0-9]+|t|p|b)c<<compression>>
Unique-Index Colored Octree/DAG: The geometry is stored in a DAG (similar to "s"), and on each edge in index shift is stored. This index shift makes sure that each node in the original octree gets a unique index. These indexes are then used to find the material in a second data structure.
The keyword "[0-9]+lod" is optional, and can be used to define the number of levels on which no material information should be stored (e.g. don't give a unique index to the last x layers in the tree, but make their indices equal to that of the parents, reducing the size of the material texture).
The number behind the "u" indicates the block sized to be used for block compression: The material pointer texture is compressed by splitting it up into blocks of equal size, removing duplicate blocks, and storing pointers to blocks of the same size. If the block size is very big, compression will not work well since no identical blocks will be found. If the block size is too small however, the compression will also fail as the amount of block pointers will become similar to the number of blocks.
mcc:
MultiRoot with one color channel per tree.
m[1-8]*
Multiroot DAG: in this DAG multiple octrees will be compressed into one DAG with several roots. The number behind the "m" indicates the number of bits per color channel. Each tree describes one bit of the color for every voxel in the scene. If no number is given, all 8 bits will be used per color channel. A lower number can be used leading to lossy compression.
m[1-8]b[1-8]:
MultiRoot octree in which more than one bit of information can be stored per tree. The number behind the m indicates the precision per color channel (in bits). The number behind the b indicates how many bits can be stored in one tree. "b1" is thus equal to "m[1-8]" trees.
The compression specifiers available are:
[0-9]+
Compression algorithm based on the paper "Color Image Quantization by Minimizing the Maximum Intercluster Distance" by Zhigang Xiang. It merges colors together until the desired amount of colors is left. Merging is done based on the distance in RGB space, with some mulitpliers to make it more visually uniform
lab[0-9]+
Same clustering algorithm, as [0-9]+, but the colors are converted to the CIELAB color space before being compressed
de[0-9]+.[0-9]+
Delta-E compression: greedy algorithm in which colors are merged to clusters such that the maximum delta-E within a cluster is given by the value passed. E.g. de2.7 leads to clusters within which the maximum delta-e from the cluster center is 2.7.
b[0-8]:
Cuts the colors so that they contain only the given number of bits
pool_type:
The way the tree should be stored in the GPU. Options are:
s
Standard way. Pointers have a fixed size per level, and are relative to the start of the level, saving some space as most levels can use pointers of less than 4 bytes.
o
Original method proposed in Kämpe et al's DAGs paper.
ad<<maskSize>><<maskByteSizes>>
Adaptive pointer sizes. First two bits of each pointer describe the size of the pointer. Nodes are ordered such that the most used nodes have the smallest pointers.
MaskSize indicates the size of the mask to be used (1 or 2 bits)
maskByteSizes: array of 3 numbers indicating the size of each pointer in the consecutive mask options.
al<<maskSize>><<maskByteSizes>>
Adaptive pointer sizes with lookup table. Pointers that are shortened point to an index in a lookup table. This means that all nodes have consecutive indices in this lookup table.
MaskSize indicates the size of the mask to be used (1 or 2 bits).
maskByteSizes: array of 3 numbers indicating the size of each pointer in the consecutive mask options.
v
Virtual nodes: Only one pointer is stored per node: one to the first child of that node. If nodes are not merged, this works perfectly. For nodes that are merged, "virtual nodes" are used. These nodes are just pointers to the actual node in memory.
obj_to_dag:
Filename of the OBJ file to be converted to a DAG and rendered (relative to the current working directory)
dag_file:
Filename of the tree and pool to be generated (relative to the current working directory
Renderer controls:
Movement WASD || Arrow keys
Strafing Q and E
Rotation Mouse
Zoom Scrollwheel
Triple movement speed/Running Shift
Slow movement speed/Crawling Left Ctrl
Increase/Decrease movement speed =/-
Toggle fullscreen F
Reset camera X
Change camera mode C
Change Octree render depth [ and ]
Update light direction L
Toggle Light K
Toggle AO/GI method J
Reload shaders R
Recording controls:
Take screenshot P
Goto preset location (from settings) Number keys (0-9)
Store current viewpoint N
Goto last stored viewpoint M
Start/Stop camerapath recording V
Store screenshots along camerapath B
Start/Stop a benchmark/flythrough G
Clear the camera path recording T
Add a node to the camerapath Y
Pop the last node from the camerapath Ctrl + Y
Clear the light path recording I
Add a node to the light path O