The Book of Shaders Port (mojo2)

SimonVD

Member
Joined
Dec 22, 2019
I try to port The Book of Shaders examples to Cerberus X using the Mojo 2, Shader Effect example code as starting point. It's going well so far...

This is the gradient example...

The Book of Shaders code​
My Port​
The Book of Shaders: uniforms 2020-06-01 16-01-16.png
CerberusGame 2020-06-01 16-04-28.png
Just save the shader code in the data folder of your project and name it "gradient.glsl"


Ported Shader Code:
void shader(){

    // convert clip position to valid texcoords
    vec2 texcoords=( b3d_ClipPosition.st / b3d_ClipPosition.w )*0.5+0.5;

    // I have to invert the y value to get the same result with The Book of Shaders
    b3d_FragColor = vec4( texcoords.x, 1.0-texcoords.y, 0.0, 1.0);

}
Gradient.cxs:
Strict

Import mojo2


Class MBShader Extends Shader

    Method New()
        Build(LoadString("gradient.glsl"))
    End
   
    Method OnInitMaterial:Void( myMaterial:Material )

    End
       
End



Class MyApp Extends App

    Field shaderMaterial:Material = New Material(New MBShader())
    Field myCanvas:Canvas
   
   
    Method OnCreate:Int()
       
        myCanvas = New Canvas()
       
        Return 0
    End
   
   
    Method OnRender:Int()
       
        myCanvas.DrawRect(0, 0, DeviceWidth(), DeviceHeight(), shaderMaterial)
        myCanvas.DrawText(Millisecs()/10000.0, 0,0)
        myCanvas.Flush()
       
        Return 0
    End
   
End


Function Main:Int()
    New MyApp()
    Return 0
End
 
Last edited:
Top Bottom