AudioAsset
Ease
FastString
FontAsset
NineSlice
PackedSprite
PackedSpriteID
RB
   HardwareSettings
   IRetroBlitGame
RBAsset
Rect2i
ShaderAsset
SoundReference
SpriteGrid
SpriteSheetAsset
TMXMapAsset
   TMXLayer
   TMXLayerLoadState
   TMXObject
   TMXObjectGroup
   TMXProperties
Vector2i

RB.ShaderSet

Method  -  Static

public static void ShaderSet(ShaderAsset shader)

Parameters

shader ShaderAsset Shader asset

Returns

Nothing.

Description

Set the current shader previously loaded by ShaderAsset.Load. This shader will remain in effect until next call to ShaderSet, RB.ShaderReset, or when the current rendering frame ends.

Example

SpriteSheetAsset  spriteTiles = new SpriteSheetAsset();
SpriteSheetAsset offscreenRaw = new SpriteSheetAsset();
SpriteSheetAsset offscreenRippleMask = new SpriteSheetAsset();

ShaderAsset shaderRipple = new ShaderAsset();

const int LAYER_TERRAIN = 0;
const int LAYER_WATER = 1;

void Initialize() {
    spriteTiles.Load("spritesheet/tiles"new Vector2i(1616));
    offscreenRaw.Load(RB.DisplaySize);
    offscreenRippleMask.Load(RB.DisplaySize);

    TMXMapAsset map = new TMXMapAsset();
    map.Load("map/level1");
    map.LoadLayer(map, "terrain", LAYER_TERRAIN);
    map.LoadLayer(map, "water", LAYER_WATER);
    RB.MapLayerSpriteSheetSet(LAYER_TERRAIN, spriteTiles);
    RB.MapLayerSpriteSheetSet(LAYER_WATER, spriteTiles);

    shaderRipple.Load("shaders/ripple");
}

void Render() {
    RB.SpriteSheetSet(spriteTiles);

    // First draw the terrain tiles
    RB.Offscreen(offscreenRaw);
    RB.DrawMapLayer(LAYER_TERRAIN);

    // Now draw the ripple "mask" layer
    RB.Offscreen(offscreenRippleMask);
    RB.DrawMapLayer(LAYER_WATER);

    // Combine the layers to create a rippling water effect
    // First, set the source spritesheet DrawCopy will copy from
    RB.SpriteSheetSet(offscreenRaw);

    // Activate the shader
    RB.ShaderSet(shaderRipple);

    // Set shader properties, including an animating "wave" float value,
    // and the source mask texture which will be used to animate pixels that
    // are "under water"
    shaderRipple.FloatSet("wave"RB.Ticks / 25.0f);
    shaderRipple.SpriteSheetTextureSet("mask_tex", OFFSCREEN_RIPPLE_MASK);

    // Draw with the shader enabled
    RB.Onscreen();
    RB.DrawCopy(new Rect2i(00RB.DisplaySize.width, RB.DisplaySize.height), Vector2i.zero);

    // Turn off custom shader
    RB.ShaderReset();
}

See Also

ShaderAsset
RB.ShaderApplyNow
RB.ShaderReset

See Docs

Features - Enabling a Shader