Skip to content

Geometry

UGEcko edited this page Aug 1, 2024 · 4 revisions

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.

Clone this wiki locally