Files
obsidian-notes/3Resources/游戏开发/ProceduralToolkit-程序工具包.md
2025-07-01 18:33:27 +08:00

23 KiB

原文发布链接, tags
原文发布链接 tags
https://github.com/Syomus/ProceduralToolkit
工具包

Toolkit structure

Runtime/

  • ArrayE: Various Array and List extensions, such as looped getters/setters and flood fills.
  • CellularAutomaton: Generic cellular automaton for two-state rulesets. Common rulesets can be found in CellularAutomaton.Ruleset.
  • ClipperUtility: Utility class for conversion of Clipper data from and to Unity format.
  • ColorE: Color extensions, HTML colors, Gradient constructors.
  • ColorHSV: Serializable representation of color in HSV model.
  • CompoundMeshDraft: Helper class for mesh generation supporting large meshes and submeshes.
  • DebugE: Collection of drawing methods similar to Debug.DrawLine.
  • Directions: Enum with direction flags along three axes.
  • Draw: Collection of generic vector drawing algorithms.
  • DrawRaster: Collection of generic raster drawing algorithms.
  • GizmosE: Collection of drawing methods similar to Gizmos.
  • GLE: Collection of GL drawing methods similar to Gizmos.
  • MeshDraft: Helper class for mesh generation.
  • MeshDraftPrimitives: Constructors for MeshDraft primitives.
  • MeshE: Mesh extensions.
  • PathClipper and PathOffsetterClipper library wrappers.
  • PTUtils: Various useful methods and constants.
  • RandomE: Class for generating random data. Contains extensions for arrays and other collections.
  • RendererProperties: Serializable Renderer properties, use Renderer.ApplyProperties extension to apply them to a target renderer.
  • TessellatorLibTessDotNet library wrapper.
  • TextureE: Texture extensions.
  • VectorE: Vector extensions.

Runtime/Buildings/

Runtime/Geometry/

See this wiki page for a matrix of available algorithms.

Runtime/Geometry/StraightSkeleton/

Classes used in straight skeleton generation.

Runtime/ClipperLib/

The Clipper library. Use PathClipper and PathOffsetter for seamless interoperability with Unity.

Runtime/LibTessDotNet/

The LibTessDotNet library. The recommended use is through the wrapper class Tessellator.

Runtime/FastNoiseLib/

The FastNoise library.

Shaders/

Depending on the installation type, the shader library can be used like this:

#include "Packages/com.syomus.proceduraltoolkit/Shaders/SDF.cginc"

Or like this:

#include "Assets/ProceduralToolkit/Shaders/SDF.cginc"
  • Common.cginc: Collection of shaping and debug functions.
  • Easing.cginc: Normalized easing functions.
  • SDF.cginc: Collection of signed distance functions.
  • Transitions.cginc: Collection of transition animations.
  • Gradient Skybox: Simple gradient skybox.
  • Debug folder: Debug shaders for some of the most common mesh channels.
  • VertexColor folder: Textureless shaders for use with color information from the vertices.

Editor/

Tests/

Tests for the library

Samples

Buildings

A fully procedural building generator, creates an entire mesh from scratch and paints it's vertices. Keep in mind that the generated mesh has no uv map so using it with Standard shader is pointless.

  • BuildingGeneratorComponent: A simple minimal example on how you can use BuildingGenerator
  • BuildingGeneratorConfigurator: A configurator for BuildingGenerator with UI and editor controls.
  • BuildingGeneratorReuse: An example on how you can reuse the same generator to generate multiple buildings.
  • ProceduralFacadePlanner: A facade planning strategy, controls the layouts of the facades.
  • ProceduralFacadeConstructor: A facade construction strategy, used in conjunction with ProceduralFacadePlanner.
  • ProceduralRoofPlanner: A roof planning strategy, generates a roof description based on the input config.
  • ProceduralRoofConstructor: A roof construction strategy, used in conjunction with ProceduralRoofPlanner.
  • ProceduralFacadeElements: A collection of fully procedural facade panels for the building generator.
  • PolygonAsset: A ScriptableObject container for vertices.
  • BuildingGeneratorConfiguratorEditor: A custom inspector for BuildingGeneratorConfigurator.

Chairs

A fully procedural chair generator, creates an entire mesh from scratch and paints it's vertices.

  • ChairGenerator: Main generator class. Generates chairs based on input configuration.
  • ChairGeneratorConfigurator: Configurator for ChairGenerator with UI and editor controls.
  • ChairGeneratorConfiguratorEditor: Custom inspector for ChairGeneratorConfigurator.
  • Armrests, Backs, Stretchers: Chair parts constructors.

Low Poly Terrain

A simple low poly terrain generator based on fractal noise. Doesn't support chunking or anything like that, just an example of how you can use a noise function in a plane generation algorithm.

  • LowPolyTerrainGenerator: Main generator class. Generates terrain based on input configuration.
  • LowPolyTerrainExample: Configurator for LowPolyTerrainGenerator with UI and editor controls.
  • LowPolyTerrainExampleEditor: Custom inspector for LowPolyTerrainExample.

Signed Distance Functions

A collection of shaders showing how you can utilise functions from the shader library.

  • StarPolygon: A simple shader that draws a star polygon and shows a difference between "normal" and "cheap" functions.
  • Shapes: A demonstration of some of the available shapes.
  • DistanceOperations: A square and a circle combined with different functions.
  • Easing: All easing functions in one shader showing the ease curve and the easing motion.
  • Transitions: An example showing the sequencing and animation techniques.
  • Animation: A more complex example on how you can create patterns and animate them in shader.

Cellular Automata

A demonstration of CellularAutomaton from the main library, draws the automaton simulation on a texture. Note that some of the rulesets need noise value different from the default setting.

  • CellularAutomatonConfigurator: Configurator for the automaton with UI controls.

Mazes

A generic maze generator, draws the maze generation process on a texture.

  • MazeGenerator: Main generator class. Generates mazes based on input configuration.
  • MazeGeneratorConfigurator: Configurator for MazeGenerator with UI controls.
  • Maze: Maze graph representation.

Noise

An example demonstrating various noise types from the FastNoise library.

Breakout

Breakout clone with procedurally generated levels.

  • Breakout: Game engine and level generator.
  • BreakoutConfigurator: Configurator for the game with UI controls.
  • Brick: Disables game object on collision.

Characters

A simple 2D character generator. Sprites made by Kenney.

  • Character: A container for sprite renderers
  • CharacterGenerator: Generates a sprite set and a name for character.
  • CharacterGeneratorConfigurator: Configurator for CharacterGenerator.
  • NameGenerator: Generates a random name from a large array of names.

Primitives

A demonstration of some of the available MeshDraft primitives.

  • Cylinder, Dodecahedron, FlatSphere, Hexahedron...: Mesh generators that can be configured via the inspector.

Drawing

Three identical shapes made with three different methods: DebugE, GLE and GizmosE.

Clipper

A simple example demonstrating the api's of PathClipper and PathOffsetter.

Tessellator

An example showing the usage of Tesselator.

StraightSkeleton

An StraightSkeletonGenerator example showing how you can generate a straight skeleton from a polygon and use the result.

Common

UI prefabs and the skybox material used in examples.

  • SkyBoxGenerator: Skybox generator, assuming that scene uses gradient skybox shader, animates transitions to new parameters every few seconds.
  • ButtonControl, SliderControl, TextControl, ToggleControl: UI controls for generators.
  • CameraRotator: Orbiting camera controller.
  • ConfiguratorBase: Base class for configurators.