+PlainColor &Viewport::WorldOutlineProgram() noexcept {
+ if (active_prog != OUTLINE_WORLD) {
+ outline_prog.Activate();
+ outline_prog.SetVP(cam.View(), cam.Projection());
+ active_prog = OUTLINE_WORLD;
+ }
+ return outline_prog;
+}
+
+PlainColor &Viewport::HUDOutlineProgram() noexcept {
+ if (active_prog != OUTLINE_HUD) {
+ outline_prog.Activate();
+ outline_prog.SetVP(canv.View(), canv.Projection());
+ active_prog = OUTLINE_HUD;
+ }
+ return outline_prog;
+}
+
+SkyBoxShader &Viewport::SkyBoxProgram() noexcept {
+ if (active_prog != SKY_BOX) {
+ sky_prog.Activate();
+ DisableBlending();
+ DisableBackfaceCulling();
+ EqualDepthTest();
+ active_prog = SKY_BOX;
+ }
+ return sky_prog;
+}
+