1 #ifndef VTESTBED_GRAPHICS_SHIPSHADER_HH 2 #define VTESTBED_GRAPHICS_SHIPSHADER_HH 4 #include <Magnum/GL/AbstractShaderProgram.h> 5 #include <Magnum/GL/Texture.h> 6 #include <Magnum/Shaders/visibility.h> 8 #include <vtestbed/graphics/types.hh> 14 class ShipShader:
public Magnum::GL::AbstractShaderProgram {
16 typedef Magnum::GL::Attribute<0, Vector3> Position;
17 typedef Magnum::GL::Attribute<1, Float> Wet;
18 typedef Magnum::GL::Attribute<2, Vector3> Normal;
22 ShipShader& setTransformationMatrix(
const Magnum::Matrix4& matrix)
24 setUniform(_transformationMatrixUniform, matrix);
28 ShipShader& setProjectionMatrix(
const Magnum::Matrix4& matrix)
30 setUniform(_projectionMatrixUniform, matrix);
34 ShipShader& setAmbientColor(
const Color4& color) {
35 setUniform(_ambientColorUniform, color);
39 ShipShader& setDiffuseColor(
const Color4& color) {
40 setUniform(_diffuseColorUniform, color);
44 ShipShader& setSpecularColor(
const Color4& color) {
45 setUniform(_specularColorUniform, color);
50 setUniform(_shininessUniform, shininess);
54 ShipShader& setTransparency(Float transparency) {
55 setUniform(_transparencyUniform, transparency);
59 ShipShader& setNormalMatrix(
const Magnum::Matrix3& matrix) {
60 setUniform(_normalMatrixUniform, matrix);
64 ShipShader& setLightPosition(
const Vector3& light) {
65 setUniform(_lightPositionUniform, light);
70 Magnum::Int _transformationMatrixUniform{0},
71 _projectionMatrixUniform{1},
72 _normalMatrixUniform{2},
73 _lightPositionUniform{3},
74 _ambientColorUniform{4},
75 _diffuseColorUniform{5},
76 _specularColorUniform{6},
78 _transparencyUniform{8};
85 #endif // vim:filetype=cpp