Class MToon1MaterialContent

Material content implementation for MToon 1.0 specification. MToon is a toon shading material specification designed primarily for VRM avatars. This class handles shader compilation, parameter setup, and rendering for MToon materials.

Hierarchy (view full)

Constructors

  • Constructs a new MToon1MaterialContent instance with specified rendering features.

    Parameters

    • materialName: string

      The name identifier for this material

    • isMorphing: boolean

      Whether this material supports vertex morphing/blend shapes

    • isSkinning: boolean

      Whether this material supports skeletal animation

    • isLighting: boolean

      Whether this material uses lighting calculations

    • isOutline: boolean

      Whether this material is used for outline rendering

    • definitions: string[]

      Additional shader preprocessor definitions

    Returns MToon1MaterialContent

Properties

__definitions: string = ''
__materialName: string
__semantics: ShaderSemanticsInfo[] = []
_tags: RnTags = {}

Collection of tags associated with this object

shaderType: EnumIO = ShaderType.VertexAndPixelShader
InvalidObjectUID: -1 = -1

Invalid object UID constant

__gl?: WebGLRenderingContext
__tmp_vector2: MutableVector2 = ...
__tmp_vector4: MutableVector4 = ...
currentMaxObjectCount: number = 0

Current maximum object count for UID generation

materialNodes: AbstractMaterialContent[] = []

Accessors

  • get objectUID(): number
  • Gets the unique object identifier

    Returns number

    The object's UID

  • get pixelShaderityObject(): undefined | ShaderityObject
  • Gets the pixel shader object associated with this material.

    Returns undefined | ShaderityObject

    The pixel shader object or undefined if not set

  • get uniqueName(): string
  • Gets the unique name of this object

    Returns string

    The unique name string

  • get vertexShaderityObject(): undefined | ShaderityObject
  • Gets the vertex shader object associated with this material.

    Returns undefined | ShaderityObject

    The vertex shader object or undefined if not set

Methods

  • Sets per-material parameters for WebGL rendering. Configures transformation matrices, camera parameters, lighting information, skeletal animation data, IBL parameters, and morphing data.

    Parameters

    • params: {
          args: RenderingArgWebGL;
          firstTime: boolean;
          material: Material;
          shaderProgram: WebGLProgram;
      }

      Object containing material, shader program and rendering context

      • args: RenderingArgWebGL

        WebGL rendering arguments with entity and environment data

      • firstTime: boolean

        Whether this is the first time setting parameters for this material

      • material: Material

        The material instance being rendered

      • shaderProgram: WebGLProgram

        The compiled WebGL shader program

    Returns void

  • Performs shader reflection to extract semantics information from vertex and pixel shaders.

    Parameters

    • vertexShader: ShaderityObject

      The vertex shader object for WebGL

    • pixelShader: ShaderityObject

      The pixel shader object for WebGL

    • vertexShaderWebGpu: ShaderityObject

      The vertex shader object for WebGPU

    • pixelShaderWebGpu: ShaderityObject

      The pixel shader object for WebGPU

    • definitions: string[]

      Array of shader definitions

    Returns ShaderSemanticsInfo[]

    Array of shader semantics information

  • Checks whether this object has a tag with the specified name

    Parameters

    • tagName: string

      The name of the tag to check for

    Returns boolean

    True if the tag exists (value is not null/undefined), false otherwise

  • Checks if this object has a tag with the specified name and value

    Parameters

    • tagName: string

      The tag name to match

    • tagValue: string

      The tag value to match

    Returns boolean

    True if the object has a matching tag, false otherwise

  • Checks if this object has all the specified tags with exactly matching values

    Parameters

    • tags: RnTags

      Object containing tag names as keys and expected values

    Returns boolean

    True if all specified tags exist with matching values, false otherwise

  • Checks if the object's combined tag string contains all the provided search strings. This allows for flexible searching within tag names and values.

    Parameters

    • stringArray: string[]

      Array of strings that must all be present in the combined tag string

    Returns boolean

    True if all strings are found in the combined tag string, false otherwise

  • Configures material parameters based on MToon material properties and rendering mode. Sets up culling behavior, alpha testing, and other material-specific settings.

    Parameters

    • material: Material

      The material instance to configure

    • isOutline: boolean

      Whether this material is being used for outline rendering

    • materialJson: Vrm1_Material

      The MToon material specification from VRM

    Returns void

  • Attempts to set a tag on this object. If the tag already exists, it will be replaced.

    Parameters

    • tag: Tag

      The tag object containing the name and value to set

    Returns boolean

    True if the tag was successfully set, false if the tag name contains invalid characters

  • Attempts to set a unique name for this object

    Parameters

    • name: string

      The desired unique name

    • toAddNameIfConflict: boolean

      If true, appends UID to make name unique when conflicts occur; if false, fails on conflict

    Returns boolean

    True if the name was successfully set, false if there was a conflict and toAddNameIfConflict was false

  • Validates that a tag string contains only allowed characters (alphanumeric and underscore)

    Parameters

    • val: string

      The string to validate

    Returns boolean

    True if the string contains only valid characters, false if it contains invalid characters

  • Searches for the first object that has a specific tag with the given value

    Parameters

    • tag: string

      The tag name to search for

    • value: string

      The tag value to match

    Returns undefined | WeakRef<RnObject>

    WeakRef to the first matching object, or undefined if not found