Geometry - UGEcko/Chroodle GitHub Wiki

Geometry

If you are looking for shader/keyword charts, go here.

This page is for general information about Heck Geometry in BeatSaber.

Covers:

  • Types of Geometry
  • Shader Keywords
  • Geometry JSON and Properties
  • Geometry Materials

Geometry Basics

Geometry in BeatSaber is based off Chroma, so no Noodle is required. However; if you'd like to animate geometry, you will need to use AnimateTrack which does require Noodle Extensions.

"geometry": {
  "type": "Cube",
  "material": {}
}

In the difficulty file; Geometry has 2 properties: Type, and Material. We will cover the different Geometry Types, then Materials.

The types of Geometry are as follows:

  • Sphere
  • Capsule
  • Cylinder
  • Cube
  • Plane
  • Quad
  • Triangle

With Geometry however, there are limitations, such as static primitives (ex: Large spheres will appear choppy / lack of subdivisions).

Material Properties

Say you want to create a black cube that reflects NO light, or you want to create a yellow shiny sphere. You do that with Geometry Materials!

Geometry materials can be created in two different ways:

  • Directly in the geometry JSON - You define the material properties in the geometry object (Preferably when you arent pooling materials).
  • Creating a geometry material - Create a geometry material and reference the name in the geometry material property (Like a point definition but for materials).

When you create a geometry material, it gets pushed to the materials property in the difficulty file:

Materials:

"materials": {
  "PillarMaterialWhite": {
    "shader": "BTSPillar",
    "color": [1,1,1],
    "shaderKeywords": []
  }
}

Geometry referencing the material:

"geometry": {
  "type": "Cube",
  "material": "PillarMaterialWhite"
}

If you are making a singular object, it may be your best interest to just directly define the material in the geometry:

"geometry": {
  "type": "Cube",
  "material": {
    "shader": "BTSPillar",
    "color": [1,1,1],
    "shaderKeywords": []
  }
}

Unfortunately, you cannot use any 3rd party shaders, however one of the provided shaders should surely do the trick.

Provided Shaders:

  • Standard
  • OpaqueLight
  • TransparentLight
  • BaseWater
  • BillieWater
  • BTSPillar
  • InterscopeConcrete
  • Obstacle (Borken)
  • WaterfallMirror

These shaders aren't exclusive to specific environments, so BillieWater will work on any environment, however some shaders have different circumstances so they may look off in other environments.