All Downloads are FREE. Search and download functionalities are using the official Maven repository.

indigo.shared.shader.StandardShaders.scala Maven / Gradle / Ivy

The newest version!
package indigo.shared.shader

import indigo.shared.shader.library

object StandardShaders {

  def all: Set[Shader] =
    Set(
      Bitmap,
      LitBitmap,
      ImageEffects,
      LitImageEffects,
      BitmapClip,
      LitBitmapClip,
      ImageEffectsClip,
      LitImageEffectsClip,
      ShapeBox,
      LitShapeBox,
      ShapeCircle,
      LitShapeCircle,
      ShapeLine,
      LitShapeLine,
      ShapePolygon,
      LitShapePolygon,
      NormalBlend,
      LightingBlend,
      BlendEffects
    )

  // Entity Shaders

  lazy val Bitmap: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_bitmap]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.Blit.fragment,
        library.NoOp.prepare,
        library.NoOp.light,
        library.NoOp.composite,
        library.Blit.Env.reference
      )
    )

  lazy val LitBitmap: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_lit_bitmap]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.Blit.fragment,
        library.Lighting.prepare,
        library.Lighting.light,
        library.Lighting.composite,
        library.Blit.Env.reference
      )
    )

  lazy val ImageEffects: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_image_effects]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ImageEffects.fragment,
        library.NoOp.prepare,
        library.NoOp.light,
        library.NoOp.composite,
        library.ImageEffects.Env.reference
      )
    )

  lazy val LitImageEffects: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_lit_image_effects]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ImageEffects.fragment,
        library.Lighting.prepare,
        library.Lighting.light,
        library.Lighting.composite,
        library.ImageEffects.Env.reference
      )
    )

  // Clips

  def shaderIdToClipShaderId(id: ShaderId): ShaderId =
    ShaderId(id.toString + "[clip]")

  def makeClipShader(shader: UltravioletShader): UltravioletShader =
    shader.copy(
      id = shaderIdToClipShaderId(shader.id),
      vertex = EntityShader.vertex(
        library.Clip.vertex,
        library.Clip.Env.reference
      )
    )

  lazy val BitmapClip: UltravioletShader          = makeClipShader(Bitmap)
  lazy val LitBitmapClip: UltravioletShader       = makeClipShader(LitBitmap)
  lazy val ImageEffectsClip: UltravioletShader    = makeClipShader(ImageEffects)
  lazy val LitImageEffectsClip: UltravioletShader = makeClipShader(LitImageEffects)

  // Shapes

  lazy val ShapeBox: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_shape_box]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ShapeBox.fragment,
        library.NoOp.prepare,
        library.NoOp.light,
        library.NoOp.composite,
        library.ShapeBox.Env.reference
      )
    )

  lazy val LitShapeBox: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_lit_shape_box]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ShapeBox.fragment,
        library.Lighting.prepare,
        library.Lighting.light,
        library.Lighting.composite,
        library.ShapeBox.Env.reference
      )
    )

  lazy val ShapeCircle: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_shape_circle]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ShapeCircle.fragment,
        library.NoOp.prepare,
        library.NoOp.light,
        library.NoOp.composite,
        library.ShapeCircle.Env.reference
      )
    )

  lazy val LitShapeCircle: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_lit_shape_circle]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ShapeCircle.fragment,
        library.Lighting.prepare,
        library.Lighting.light,
        library.Lighting.composite,
        library.ShapeCircle.Env.reference
      )
    )

  lazy val ShapeLine: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_shape_line]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ShapeLine.fragment,
        library.NoOp.prepare,
        library.NoOp.light,
        library.NoOp.composite,
        library.ShapeLine.Env.reference
      )
    )

  lazy val LitShapeLine: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_lit_shape_line]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ShapeLine.fragment,
        library.Lighting.prepare,
        library.Lighting.light,
        library.Lighting.composite,
        library.ShapeLine.Env.reference
      )
    )

  lazy val ShapePolygon: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_shape_polygon]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ShapePolygon.fragment,
        library.NoOp.prepare,
        library.NoOp.light,
        library.NoOp.composite,
        library.ShapePolygon.Env.reference
      )
    )

  lazy val LitShapePolygon: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_lit_shape_polygon]"),
      EntityShader.vertex(library.NoOp.vertex, ()),
      EntityShader.fragment(
        library.ShapePolygon.fragment,
        library.Lighting.prepare,
        library.Lighting.light,
        library.Lighting.composite,
        library.ShapePolygon.Env.reference
      )
    )

  // Blend Shaders

  lazy val NormalBlend: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_blend_normal]"),
      BlendShader.vertex(library.NoOp.vertex, ()),
      BlendShader.fragment(
        library.NormalBlend.fragment,
        library.NormalBlend.Env.reference
      )
    )

  lazy val LightingBlend: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_blend_lighting]"),
      BlendShader.vertex(library.NoOp.vertex, ()),
      BlendShader.fragment(
        library.LightingBlend.fragment,
        library.LightingBlend.Env.reference
      )
    )

  lazy val BlendEffects: UltravioletShader =
    UltravioletShader(
      ShaderId("[indigo_engine_blend_effects]"),
      BlendShader.vertex(library.NoOp.vertex, ()),
      BlendShader.fragment(
        library.BlendEffects.fragment,
        library.BlendEffects.Env.reference
      )
    )

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy