Class IfStatementShader

Abstract base class that provides common shader functionality for both WebGL and WebGPU rendering approaches. This class handles shader code generation, vertex/fragment shader prerequisites, and cross-platform compatibility between WebGL and WebGPU shader languages (GLSL and WGSL).

Hierarchy (view full)

Constructors

Properties

__webglResourceRepository?: WebGLResourceRepository = ...
__instance: CommonShaderPart

Accessors

  • get attributeCompositions(): CompositionTypeEnum[]
  • Gets the composition types for each vertex attribute used by this shader part. Must be implemented by concrete subclasses to define the data composition (scalar, vec2, vec3, etc.).

    Returns CompositionTypeEnum[]

    Array of composition type enums defining the data structure

  • get pixelShaderDefinitions(): string
  • Gets the pixel/fragment shader definitions code. Must be implemented by concrete subclasses to provide shader-specific definitions.

    Returns string

    Fragment shader definitions code string

  • get vertexShaderDefinitions(): string
  • Gets the vertex shader definitions code. Must be implemented by concrete subclasses to provide shader-specific definitions.

    Returns string

    Vertex shader definitions code string

Methods

  • Generates variable assignment statement with proper type declaration. Creates appropriate syntax for both WebGL (GLSL) and WebGPU (WGSL) based on the current process approach.

    Parameters

    • varName: string

      The name of the variable to declare

    • inputSocket: Socket<string, CompositionTypeEnum, ComponentTypeEnum, SocketDefaultValue>

      The socket containing type and default value information

    Returns string

    The variable assignment statement string

  • Generates varying variable assignment statement for vertex shaders. Creates code to write varying variables that will be passed to fragment shader.

    Parameters

    • inputNode: AbstractShaderNode

      The shader node that provides the varying variable

    • varNames: string[]

      Array of variable names to assign

    • j: number

      Index of the current variable in the varNames array

    Returns string

    The varying variable assignment statement string for vertex shader

  • Generates the main function beginning code for vertex or fragment shaders. Handles differences between WebGL (GLSL) and WebGPU (WGSL) shader languages.

    Parameters

    • isVertexStage: boolean

      True if generating code for vertex shader, false for fragment shader

    Returns string

    The shader code string for the main function beginning

  • Generates the main function ending code for vertex or fragment shaders. Handles differences between WebGL (GLSL) and WebGPU (WGSL) shader languages.

    Parameters

    • isVertexStage: boolean

      True if generating code for vertex shader, false for fragment shader

    Returns "\n return output;\n}\n" | "\n return rt0;\n}\n" | "\n}\n "

    The shader code string for the main function ending

  • Generates fragment/pixel shader prerequisites including definitions and varying variable declarations. Creates appropriate code for both WebGL (GLSL) and WebGPU (WGSL) based on the current process approach.

    Parameters

    • shaderNodes: AbstractShaderNode[]

      Array of shader nodes used to generate varying variables for WebGPU

    Returns string

    The complete fragment shader prerequisites code string

  • Generates vertex shader prerequisites including definitions, vertex inputs, and uniform declarations. Creates appropriate code for both WebGL (GLSL) and WebGPU (WGSL) based on the current process approach.

    Parameters

    • shaderNodes: AbstractShaderNode[]

      Array of shader nodes used to generate varying variables for WebGPU

    Returns string

    The complete vertex shader prerequisites code string