summaryrefslogtreecommitdiff
path: root/geometry.py
AgeCommit message (Collapse)Author
2011-07-25moved triangle colors to a separate global device array so that the ray ↵Anthony LaTorre
tracer and photon simulation can be run in the same context. added the ability to add alpha channel to triangle color so that triangles can be made transparent. added __noinline__ modifier to certain device functions to speed up kernel compilation.
2011-07-20pulled a lot of the photon propagation code out of src/kernel.cu into ↵Anthony LaTorre
src/photon.h so that photon propagation by propagate() in kernel.cu and the hybrid monte carlo ray tracing use the same code. instead of a single state, photons now carry the history of the processes they've undergone. this history is stored as a bitmask; see src/photon.h. start_node and first_node of the mesh are now stored as global variables in mesh.h instead of being passed to kernel functions.
2011-07-19removed STL pmt models; pmt models are now built by calling rotate_extrude() ↵Anthony LaTorre
on a profile of the PMT model (see build_pmt() in solids/pmts.py). triangle intersection now allows one of the two coefficients multiplying the vectors which span the triangle to float slightly negative (up to -EPSILON; EPSILON is defined in src/intersect.h) in order to eliminate rays passing through the line between two triangles. cleaned up a lot of unused code. pulled duplicate code in view() and render() into functions in view.py. in order to allow view.py and render.py to search pre-defined geometries, solids, meshes, etc. without requiring them to be pre-built, pre-defined geometries, solids, meshes, etc. should be returned by a function tagged by the decorator @buildable(identifier) defined in view.py, where identifier is a string used to identify the object as an argument to either view.py or render.py. optical materials and surfaces are now defined in optics.py. added an image directory to save cool screenshots.
2011-07-10added a hybrid monte carlo ray tracing rendering algorithmAnthony LaTorre
2011-06-24argument '-j' to threadtest.py now specifies a list of device ids to be ↵Anthony LaTorre
used. GPUThread objects now shallow copy the geometry so that threads are not writing to the same memory when the geometry is loaded onto the gpu. the model number for the 12" Hamamatsu PMT is R11708, not r7081 (which is the model for the 10" PMT); all references to the 12" PMT were changed accordingly. only allocate space for 20 materials and 20 surfaces on the gpu instead of 100 to save some space. started to modify track.py to build its own photons and module since the GPUThread object only copies photon hit times back from the gpu (not track information), but I am waiting to find out if pycuda GPUArrays can be used with vector types.
2011-06-24speedup mesh intersection by skipping directly to the child node of nodes ↵Anthony LaTorre
with only one child.
2011-06-22Switch from float4 to float3 for vertices.Stan Seibert
2011-06-21speedup geometry.build() by using more iterators and keeping a list of ↵Anthony LaTorre
unique materials and surfaces in each solid.
2011-06-21Merge speedup of build()Stan Seibert
2011-06-21added rotate_extrude() and a number of functions to produce meshes of useful ↵Anthony LaTorre
solid shapes. tried to speed up geometry.build() by replacing some for loops with np.fromiter() and imap().
2011-06-21Switch vertex list on GPU from a texture to a standard device array.Stan Seibert
This avoids the texture size limitation.
2011-06-20pack material and surface indices into the fourth byte of the triangle array ↵Anthony LaTorre
on the GPU. you can now take a screenshot of an image rendered with view.py() by pressing the f12 key.
2011-06-18moved class definitions for Solid, Mesh, Material, and Surface into ↵Anthony LaTorre
geometry.py and moved instances of these classes into separate folders. the Solid object no longer contains a rotation, displacement, or id variable; instead, they are passed to a geometry object when calling add_solid().
2011-06-17visually tested optics code. added models of the inner and outer meshes for ↵Anthony LaTorre
the 12" hamamatsu and sno pmts. ratdb.py is able to parse ratdb files. chromaticity.py provides a function to map wavelength -> rgb color. lbne detector model now includes an outer black cylinder and pmts with a glass layer and photocathode/reflective surfaces.
2011-06-12added some fun models; added some untested code to implement absorption, ↵Anthony LaTorre
scattering, reflection, and refraction
2011-06-07Switch triangle texture to device array, use int32 and float32Stan Seibert
datatypes everywhere, and build final mesh without concatenation of lists. This allows for very large detectors, like full size LBNE.
2011-06-03load material/surface index lookup arrays to the gpu and bind them to ↵Anthony LaTorre
textures. also, forgot to include the gpu code for material/surface structures
2011-06-03load materials/surfaces onto the gpuAnthony LaTorre
2011-06-02oops; corrected material/surface code packing into fourth byte of triangle ↵Anthony LaTorre
data in Geometry.build()
2011-06-02material/surface codes or color are packed into the fourth byte of the ↵Anthony LaTorre
triangle data texture depending on the color keyword passed to Geometry.build()
2011-06-02triangle mesh is now stored everywhere as a split list of vertices and trianglesAnthony LaTorre
2011-06-01first step towards moving to a new mesh/solid/geometry structureAnthony LaTorre
2011-05-20faster bounding volume hierarchy constructionAnthony LaTorre
2011-05-18added test likelihoodAnthony LaTorre
2011-05-18added some more documentation and a more accurate miniature version of lbneAnthony LaTorre
2011-05-17added documentationAnthony LaTorre
2011-05-16typoAnthony LaTorre
2011-05-16interleave the zvalue bits all at once; big speed improvement in building ↵Anthony LaTorre
the bounding volume hierarchy
2011-05-15cleanup. fixed testsAnthony LaTorre
2011-05-15new geometry class. beginning to implement physics by defining a material ↵Anthony LaTorre
class; each triangle will have a material linked to both of its sides