GeoLIPI: DSL for implicit geometric modelling
GeoLIPI is a language for modelling 3D shapes. This is to be treated as a meta-language, from which visual programming languages can be derived. Some of the languages/visual programs that can be executed in this framework are:
CSG 3D Variants
GeoCode
SVG 2D
and many more. Check out languages.md for more details.
Main usecase
Mainly, GeoLIPI attempts to embed a generic visual language in python, making it easier to use and extend for research. Additionally, it provides the following benefits:
Fast Batched Execution of programs - useful for training neural networks on large batches of program executions.
Single “symbolic” object, multiple execution strategies. This helps with “executing” the program in different platforms/systems (such as blender for rendering, and pytorch for optimization).
Parameter Optimization of arbitrary visual programs (All operations are created to allow differentiable optimization of its parameters).
[TBD] Help with searching programs for a desired execution (refer to our recent [paper](https://bardofcodes.github.io/coref/)).
Batched PyTorch execution code for all the shader toy 2D and 3D primitives described by Inigo Quilez.
Indices and tables
Contents
- GeoLIPI Introduction
- Installation Guide
- Visual Languages in GeoLIPI
- geolipi
- geometry_nodes package
- Submodules
- geometry_nodes.bl_utils module
- geometry_nodes.evaluate_graph module
- geometry_nodes.geonodes module
create_boolean_difference_node_seq()create_boolean_intersection_node_seq()create_boolean_join_node_seq()create_boolean_union_node_seq()create_cuboid_node_seq()create_cylinder_node_seq()create_geonode_tree()create_prebaked_primitive_node_seq()create_reflect_node_seq()create_sphere_node_seq()create_transform_node_seq()
- geometry_nodes.materials module
- geometry_nodes.utils module
- symbolic package
get_cmd_mapper()- Submodules
- symbolic.base_symbolic module
- symbolic.color module
- symbolic.combinators module
- symbolic.common module
- symbolic.primitives_2d module
Arc2DBlobbyCross2DBox2DCircle2DCircleWave2DCoolS2DCross2DCutDisk2DEgg2DEllipse2DEquilateralTriangle2DHeart2DHexagram2DHorseShoe2DHyperbola2DIsoscelesTriangle2DMoon2DNoParamCircle2DNoParamRectangle2DNoParamTriangle2DNullExpression2DOrientedBox2DOrientedVesica2DParabola2DParabolaSegment2DParallelogram2DPie2DPolygon2DPrimitive2DQuadraticBezierCurve2DQuadraticCircle2DRectangle2DRegularHexagon2DRegularPentagon2DRegularStar2DRhombus2DRoundedBox2DRoundedCross2DRoundedX2DSegment2DStairs2DStar2DTrapezoid2DTriangle2DTunnel2DUnevenCapsule2DVesica2D
- symbolic.primitives_3d module
ArbitraryCappedConeArbitraryCappedCylinder3DArbitraryRoundCone3DBox3DBoxFrame3DCappedCone3DCappedCylinder3DCappedTorus3DCapsule3DCone3DCuboid3DCutHollowSphereCutSphere3DCylinder3DDeathStar3DHexPrism3DInexactAnisotropicGaussian3DInexactCone3DInexactEllipsoid3DInexactOctahedron3DInexactSuperQuadrics3DInfiniteCone3DInfiniteCylinder3DLink3DNoParamCuboid3DNoParamCylinder3DNoParamSphere3DNullExpression3DOctahedron3DPlane3DPreBakedPrimitive3DPrimitive3DPyramid3DQuadrilateral3DRevolvedVesica3DRhombus3DRoundCone3DRoundedBox3DRoundedCylinder3DSolidAngle3DSphere3DTorus3DTriPrism3DTriangle3DVerticalCappedCylinder3DVerticalCapsule3D
- symbolic.primitives_higher module
- symbolic.reference module
- symbolic.resolve module
- symbolic.transforms_2d module
AxialReflect2DAxialScaleSymmetry2DAxialTranslationSymmetry2DDilate2DDistort2DErode2DEulerRotate2DMacro2DModifier2DOnion2DPositionalTransform2DReflect2DReflectCoords2DReflectX2DReflectY2DRotationSymmetry2DSDFModifier2DScale2DScaleSymmetry2DShear2DTransform2DTranslate2DTranslationSymmetry2DTranslationSymmetryX2DTranslationSymmetryY2D
- symbolic.transforms_3d module
AxialReflect3DAxialRotationSymmetry3DAxialScaleSymmetry3DAxialTranslationSymmetry3DBend3DDilate3DDistort3DErode3DEulerRotate3DMacro3DModifier3DOnion3DPositionalTransform3DQuaternionRotate3DReflect3DReflectCoords3DReflectX3DReflectY3DReflectZ3DRotate5DRotate6DRotate9DRotationSymmetry3DRotationSymmetryX3DRotationSymmetryY3DRotationSymmetryZ3DSDFModifier3DScale3DScaleSymmetry3DShear3DTransform3DTranslate3DTranslationSymmetry3DTranslationSymmetryX3DTranslationSymmetryY3DTranslationSymmetryZ3DTwist3D
- symbolic.types module
- torch_compute package
- Submodules
- torch_compute.batch_evaluate_sdf module
- torch_compute.color_functions module
- torch_compute.common module
- torch_compute.compile_expression module
- torch_compute.evaluate_expression module
- torch_compute.sdf_functions_2d module
ndot()sdf2d_arc()sdf2d_blobby_cross()sdf2d_box()sdf2d_circle()sdf2d_circle_wave()sdf2d_cool_s()sdf2d_cross()sdf2d_cut_disk()sdf2d_egg()sdf2d_ellipse()sdf2d_equilateral_triangle()sdf2d_heart()sdf2d_hexagram()sdf2d_horse_shoe()sdf2d_hyperbola()sdf2d_isosceles_triangle()sdf2d_moon()sdf2d_no_param_circle()sdf2d_no_param_rectangle()sdf2d_no_param_triangle()sdf2d_oriented_box()sdf2d_oriented_vesica()sdf2d_parabola()sdf2d_parabola_segment()sdf2d_parallelogram()sdf2d_pie()sdf2d_polygon()sdf2d_quadratic_bezier_curve()sdf2d_quadratic_circle()sdf2d_regular_hexagon()sdf2d_regular_octagon()sdf2d_regular_pentagon()sdf2d_regular_star()sdf2d_rhombus()sdf2d_rounded_box()sdf2d_rounded_cross()sdf2d_rounded_x()sdf2d_segment()sdf2d_stairs()sdf2d_star_5()sdf2d_trapezoid()sdf2d_triangle()sdf2d_tunnel()sdf2d_uneven_capsule()sdf2d_vesica()
- torch_compute.sdf_functions_3d module
sdf3d_arbitrary_capped_cone()sdf3d_arbitrary_capped_cylinder()sdf3d_arbitrary_round_cone()sdf3d_box()sdf3d_box_frame()sdf3d_capped_cone()sdf3d_capped_cylinder()sdf3d_capped_torus()sdf3d_capsule()sdf3d_cone()sdf3d_cut_hollow_sphere()sdf3d_cut_sphere()sdf3d_death_star()sdf3d_hex_prism()sdf3d_inexact_anisotropic_gaussian()sdf3d_inexact_cone()sdf3d_inexact_ellipsoid()sdf3d_inexact_octahedron()sdf3d_inexact_super_quadrics()sdf3d_infinite_cone()sdf3d_infinite_cylinder()sdf3d_link()sdf3d_no_param_cuboid()sdf3d_no_param_cylinder()sdf3d_no_param_sphere()sdf3d_octahedron()sdf3d_plane()sdf3d_pyramid()sdf3d_quadrilateral()sdf3d_revolved_vesica()sdf3d_rhombus()sdf3d_round_cone()sdf3d_rounded_box()sdf3d_rounded_cylinder()sdf3d_solid_angle()sdf3d_sphere()sdf3d_torus()sdf3d_tri_prism()sdf3d_triangle()sdf3d_vertical_capped_cylinder()sdf3d_vertical_capsule()
- torch_compute.sdf_functions_higher module
- torch_compute.sdf_operators module
- torch_compute.sketcher module
SketcherSketcher.deviceSketcher.dtypeSketcher.resolutionSketcher.modeSketcher.n_dimsSketcher.coord_scaleSketcher.homogeneous_identitySketcher.zero_matSketcher.coordsSketcher.scale_identitySketcher.translate_identitySketcher.create_coords()Sketcher.empty_sdf()Sketcher.get_affine_identity()Sketcher.get_base_coords()Sketcher.get_color_canvas()Sketcher.get_coords()Sketcher.get_homogenous_coords()Sketcher.get_scale_identity()Sketcher.get_translate_identity()Sketcher.make_homogenous_coords()
- torch_compute.sphere_marcher module
RendererRenderer.dtypeRenderer.deviceRenderer.resolutionRenderer.camera_paramsRenderer.light_settingRenderer.num_iterationsRenderer.convergence_thresholdRenderer.sketcherRenderer.recursive_evaluatorRenderer.secondary_sketcherRenderer.compile_expressionRenderer.create_ground_expr()Renderer.get_camera_matrix()Renderer.get_camera_position()Renderer.get_camera_rotation()Renderer.get_rays()Renderer.make_random_material()Renderer.render()
compute_normal()compute_shadows()phong_shading()render_expression()sphere_tracing()
- torch_compute.transforms module
get_affine_reflection_2D()get_affine_reflection_3D()get_affine_rotate_2D()get_affine_rotate_euler_3D()get_affine_scale_2D()get_affine_scale_3D()get_affine_shear_2D()get_affine_shear_3D()get_affine_translate_2D()get_affine_translate_3D()position_cheap_bend()position_distort()position_twist()
- torch_compute.utils module
- torch_compute.visualizer module
- geometry_nodes package