diff --git a/cmake/macros/AutoScribeShader.cmake b/cmake/macros/AutoScribeShader.cmake
index 1919ecf00a..d25e0e553f 100755
--- a/cmake/macros/AutoScribeShader.cmake
+++ b/cmake/macros/AutoScribeShader.cmake
@@ -39,11 +39,11 @@ function(AUTOSCRIBE_SHADER SHADER_FILE)
   get_filename_component(SHADER_TARGET ${SHADER_FILE} NAME_WE)
   get_filename_component(SHADER_EXT ${SHADER_FILE} EXT)
   if(SHADER_EXT STREQUAL .slv)
-    set(SHADER_TARGET ${SHADER_TARGET}_vert.h)
+    set(SHADER_TARGET ${SHADER_TARGET}_vert.cpp)
   elseif(${SHADER_EXT} STREQUAL .slf)
-    set(SHADER_TARGET ${SHADER_TARGET}_frag.h)
+    set(SHADER_TARGET ${SHADER_TARGET}_frag.cpp)
   elseif(${SHADER_EXT} STREQUAL .slg)
-    set(SHADER_TARGET ${SHADER_TARGET}_geom.h)
+    set(SHADER_TARGET ${SHADER_TARGET}_geom.cpp)
   endif()
 
   set(SHADER_TARGET "${SHADERS_DIR}/${SHADER_TARGET}")
@@ -134,6 +134,6 @@ macro(AUTOSCRIBE_SHADER_LIB)
   list(APPEND AUTOSCRIBE_SHADER_LIB_SRC ${AUTOSCRIBE_SHADER_SRC})
 
   # Link library shaders, if they exist
-  include_directories("${SHADERS_DIR}")
+  #include_directories("${SHADERS_DIR}")
 
 endmacro()
diff --git a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp
index 1d7fee38eb..4f50b5ecd9 100644
--- a/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp
+++ b/libraries/display-plugins/src/display-plugins/hmd/HmdDisplayPlugin.cpp
@@ -33,8 +33,8 @@
 #include "../Logging.h"
 #include "../CompositorHelper.h"
 
-#include "render-utils/hmd_ui_vert.h"
-#include "render-utils/hmd_ui_frag.h"
+INCLUDE_SHADER(hmd_ui_vert)
+INCLUDE_SHADER(hmd_ui_frag)
 
 static const QString MONO_PREVIEW = "Mono Preview";
 static const QString DISABLE_PREVIEW = "Disable Preview";
diff --git a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp
index a3e6cd4341..b8f979b7fd 100644
--- a/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp
+++ b/libraries/entities-renderer/src/RenderableParticleEffectEntityItem.cpp
@@ -14,8 +14,8 @@
 
 #include <GeometryCache.h>
 
-#include "textured_particle_vert.h"
-#include "textured_particle_frag.h"
+INCLUDE_SHADER(textured_particle_vert)
+INCLUDE_SHADER(textured_particle_frag)
 
 using namespace render;
 using namespace render::entities;
diff --git a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp
index b362721cde..b85771f5b6 100644
--- a/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp
+++ b/libraries/entities-renderer/src/RenderablePolyLineEntityItem.cpp
@@ -23,11 +23,11 @@
 #   include <FadeEffect.h>
 #endif
 
-#include "paintStroke_vert.h"
-#include "paintStroke_frag.h"
+INCLUDE_SHADER(paintStroke_vert)
+INCLUDE_SHADER(paintStroke_frag)
 
-#include "paintStroke_fade_vert.h"
-#include "paintStroke_fade_frag.h"
+INCLUDE_SHADER(paintStroke_fade_vert)
+INCLUDE_SHADER(paintStroke_fade_frag)
 
 using namespace render;
 using namespace render::entities;
diff --git a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp
index ad0202457e..b245ed7cda 100644
--- a/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp
+++ b/libraries/entities-renderer/src/RenderablePolyVoxEntityItem.cpp
@@ -27,10 +27,11 @@
 #include <StencilMaskPass.h>
 
 #include "EntityTreeRenderer.h"
-#include "polyvox_vert.h"
-#include "polyvox_frag.h"
-#include "polyvox_fade_vert.h"
-#include "polyvox_fade_frag.h"
+
+INCLUDE_SHADER(polyvox_vert)
+INCLUDE_SHADER(polyvox_frag)
+INCLUDE_SHADER(polyvox_fade_vert)
+INCLUDE_SHADER(polyvox_fade_frag)
 
 #ifdef POLYVOX_ENTITY_USE_FADE_EFFECT
 #   include <FadeEffect.h>
@@ -70,10 +71,11 @@
 #include "StencilMaskPass.h"
 
 #include "EntityTreeRenderer.h"
-#include "polyvox_vert.h"
-#include "polyvox_frag.h"
-#include "polyvox_fade_vert.h"
-#include "polyvox_fade_frag.h"
+
+INCLUDE_SHADER(polyvox_vert)
+INCLUDE_SHADER(polyvox_frag)
+INCLUDE_SHADER(polyvox_fade_vert)
+INCLUDE_SHADER(polyvox_fade_frag)
 
 #include "RenderablePolyVoxEntityItem.h"
 #include "EntityEditPacketSender.h"
diff --git a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp
index cdee2c5ec9..cd02186440 100644
--- a/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp
+++ b/libraries/entities-renderer/src/RenderableShapeEntityItem.cpp
@@ -16,8 +16,8 @@
 #include <GeometryCache.h>
 #include <PerfStat.h>
 
-#include <render-utils/simple_vert.h>
-#include <render-utils/simple_frag.h>
+INCLUDE_SHADER(simple_vert)
+INCLUDE_SHADER(simple_frag)
 
 //#define SHAPE_ENTITY_USE_FADE_EFFECT
 #ifdef SHAPE_ENTITY_USE_FADE_EFFECT
diff --git a/libraries/gpu/src/gpu/Shader.h b/libraries/gpu/src/gpu/Shader.h
index 181c9b5e78..5cfdbc8bf4 100755
--- a/libraries/gpu/src/gpu/Shader.h
+++ b/libraries/gpu/src/gpu/Shader.h
@@ -17,6 +17,8 @@
 #include <set>
 
 #include <QUrl>
+
+#define INCLUDE_SHADER(source) extern const char source[];
  
 namespace gpu {
 
diff --git a/libraries/gpu/src/gpu/StandardShaderLib.cpp b/libraries/gpu/src/gpu/StandardShaderLib.cpp
index 0d8d131e0b..93c2228de6 100755
--- a/libraries/gpu/src/gpu/StandardShaderLib.cpp
+++ b/libraries/gpu/src/gpu/StandardShaderLib.cpp
@@ -12,21 +12,21 @@
 //
 #include "StandardShaderLib.h"
 
-#include "DrawUnitQuadTexcoord_vert.h"
-#include "DrawTransformUnitQuad_vert.h"
-#include "DrawTexcoordRectTransformUnitQuad_vert.h"
-#include "DrawViewportQuadTransformTexcoord_vert.h"
-#include "DrawVertexPosition_vert.h"
-#include "DrawTransformVertexPosition_vert.h"
+INCLUDE_SHADER(DrawUnitQuadTexcoord_vert)
+INCLUDE_SHADER(DrawTransformUnitQuad_vert)
+INCLUDE_SHADER(DrawTexcoordRectTransformUnitQuad_vert)
+INCLUDE_SHADER(DrawViewportQuadTransformTexcoord_vert)
+INCLUDE_SHADER(DrawVertexPosition_vert)
+INCLUDE_SHADER(DrawTransformVertexPosition_vert)
 
 const char DrawNada_frag[] = "void main(void) {}"; // DrawNada is really simple...
 
-#include "DrawWhite_frag.h"
-#include "DrawColor_frag.h"
-#include "DrawTexture_frag.h"
-#include "DrawTextureMirroredX_frag.h"
-#include "DrawTextureOpaque_frag.h"
-#include "DrawColoredTexture_frag.h"
+INCLUDE_SHADER(DrawWhite_frag)
+INCLUDE_SHADER(DrawColor_frag)
+INCLUDE_SHADER(DrawTexture_frag)
+INCLUDE_SHADER(DrawTextureMirroredX_frag)
+INCLUDE_SHADER(DrawTextureOpaque_frag)
+INCLUDE_SHADER(DrawColoredTexture_frag)
 
 using namespace gpu;
 
diff --git a/libraries/model/src/model/Skybox.cpp b/libraries/model/src/model/Skybox.cpp
index fd3061afa5..7e03890c85 100755
--- a/libraries/model/src/model/Skybox.cpp
+++ b/libraries/model/src/model/Skybox.cpp
@@ -15,8 +15,8 @@
 #include <gpu/Context.h>
 #include <ViewFrustum.h>
 
-#include "skybox_vert.h"
-#include "skybox_frag.h"
+INCLUDE_SHADER(skybox_vert)
+INCLUDE_SHADER(skybox_frag)
 
 using namespace model;
 
diff --git a/libraries/procedural/src/procedural/Procedural.cpp b/libraries/procedural/src/procedural/Procedural.cpp
index 7b718515a8..c0ebdbb186 100644
--- a/libraries/procedural/src/procedural/Procedural.cpp
+++ b/libraries/procedural/src/procedural/Procedural.cpp
@@ -20,7 +20,7 @@
 #include <NumericalConstants.h>
 #include <GLMHelpers.h>
 
-#include "ProceduralCommon_frag.h"
+INCLUDE_SHADER(ProceduralCommon_frag)
 
 #include "Logging.h"
 
diff --git a/libraries/procedural/src/procedural/ProceduralSkybox.cpp b/libraries/procedural/src/procedural/ProceduralSkybox.cpp
index 9544759037..452d3f639a 100644
--- a/libraries/procedural/src/procedural/ProceduralSkybox.cpp
+++ b/libraries/procedural/src/procedural/ProceduralSkybox.cpp
@@ -15,8 +15,8 @@
 #include <gpu/Context.h>
 #include <ViewFrustum.h>
 
-#include <model/skybox_vert.h>
-#include <model/skybox_frag.h>
+INCLUDE_SHADER(skybox_vert)
+INCLUDE_SHADER(skybox_frag)
 
 ProceduralSkybox::ProceduralSkybox() : model::Skybox() {
     _procedural._vertexSource = skybox_vert;
diff --git a/libraries/render-utils/src/AmbientOcclusionEffect.cpp b/libraries/render-utils/src/AmbientOcclusionEffect.cpp
index 83753131c8..f5b4f0f6bb 100644
--- a/libraries/render-utils/src/AmbientOcclusionEffect.cpp
+++ b/libraries/render-utils/src/AmbientOcclusionEffect.cpp
@@ -28,11 +28,11 @@
 #include "DependencyManager.h"
 #include "ViewFrustum.h"
 
-#include "ssao_makePyramid_frag.h"
-#include "ssao_makeOcclusion_frag.h"
-#include "ssao_debugOcclusion_frag.h"
-#include "ssao_makeHorizontalBlur_frag.h"
-#include "ssao_makeVerticalBlur_frag.h"
+INCLUDE_SHADER(ssao_makePyramid_frag)
+INCLUDE_SHADER(ssao_makeOcclusion_frag)
+INCLUDE_SHADER(ssao_debugOcclusion_frag)
+INCLUDE_SHADER(ssao_makeHorizontalBlur_frag)
+INCLUDE_SHADER(ssao_makeVerticalBlur_frag)
 
 
 AmbientOcclusionFramebuffer::AmbientOcclusionFramebuffer() {
diff --git a/libraries/render-utils/src/AnimDebugDraw.cpp b/libraries/render-utils/src/AnimDebugDraw.cpp
index c22e99cbbc..53ed3ea9a0 100644
--- a/libraries/render-utils/src/AnimDebugDraw.cpp
+++ b/libraries/render-utils/src/AnimDebugDraw.cpp
@@ -9,8 +9,6 @@
 
 #include <qmath.h>
 
-#include "animdebugdraw_vert.h"
-#include "animdebugdraw_frag.h"
 #include <gpu/Batch.h>
 #include "AbstractViewStateInterface.h"
 #include "RenderUtilsLogging.h"
@@ -19,6 +17,9 @@
 
 #include "AnimDebugDraw.h"
 
+INCLUDE_SHADER(animdebugdraw_vert)
+INCLUDE_SHADER(animdebugdraw_frag)
+
 class AnimDebugDrawData {
 public:
 
diff --git a/libraries/render-utils/src/AntialiasingEffect.cpp b/libraries/render-utils/src/AntialiasingEffect.cpp
index 70c2e3b5ce..078e906fad 100644
--- a/libraries/render-utils/src/AntialiasingEffect.cpp
+++ b/libraries/render-utils/src/AntialiasingEffect.cpp
@@ -23,9 +23,9 @@
 #include "ViewFrustum.h"
 #include "GeometryCache.h"
 
-#include "fxaa_vert.h"
-#include "fxaa_frag.h"
-#include "fxaa_blend_frag.h"
+INCLUDE_SHADER(fxaa_vert)
+INCLUDE_SHADER(fxaa_frag)
+INCLUDE_SHADER(fxaa_blend_frag)
 
 
 Antialiasing::Antialiasing() {
diff --git a/libraries/render-utils/src/BloomEffect.cpp b/libraries/render-utils/src/BloomEffect.cpp
index 9d9367a6d5..ace347f99e 100644
--- a/libraries/render-utils/src/BloomEffect.cpp
+++ b/libraries/render-utils/src/BloomEffect.cpp
@@ -16,8 +16,8 @@
 #include <render/BlurTask.h>
 #include <render/ResampleTask.h>
 
-#include "BloomThreshold_frag.h"
-#include "BloomApply_frag.h"
+INCLUDE_SHADER(BloomThreshold_frag)
+INCLUDE_SHADER(BloomApply_frag)
 
 #define BLOOM_BLUR_LEVEL_COUNT  3
 
diff --git a/libraries/render-utils/src/DebugDeferredBuffer.cpp b/libraries/render-utils/src/DebugDeferredBuffer.cpp
index fe03ead4e1..05cd6a6f0e 100644
--- a/libraries/render-utils/src/DebugDeferredBuffer.cpp
+++ b/libraries/render-utils/src/DebugDeferredBuffer.cpp
@@ -23,8 +23,8 @@
 #include "TextureCache.h"
 #include "DeferredLightingEffect.h"
 
-#include "debug_deferred_buffer_vert.h"
-#include "debug_deferred_buffer_frag.h"
+INCLUDE_SHADER(debug_deferred_buffer_vert)
+INCLUDE_SHADER(debug_deferred_buffer_frag)
 
 using namespace render;
 
diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp
index 81a33f17e3..8ec2c74353 100644
--- a/libraries/render-utils/src/DeferredLightingEffect.cpp
+++ b/libraries/render-utils/src/DeferredLightingEffect.cpp
@@ -24,18 +24,18 @@
 #include "TextureCache.h"
 #include "FramebufferCache.h"
 
-#include "deferred_light_vert.h"
-#include "deferred_light_point_vert.h"
-#include "deferred_light_spot_vert.h"
+INCLUDE_SHADER(deferred_light_vert)
+INCLUDE_SHADER(deferred_light_point_vert)
+INCLUDE_SHADER(deferred_light_spot_vert)
 
-#include "directional_ambient_light_frag.h"
-#include "directional_skybox_light_frag.h"
+INCLUDE_SHADER(directional_ambient_light_frag)
+INCLUDE_SHADER(directional_skybox_light_frag)
 
-#include "directional_ambient_light_shadow_frag.h"
-#include "directional_skybox_light_shadow_frag.h"
+INCLUDE_SHADER(directional_ambient_light_shadow_frag)
+INCLUDE_SHADER(directional_skybox_light_shadow_frag)
 
-#include "local_lights_shading_frag.h"
-#include "local_lights_drawOutline_frag.h"
+INCLUDE_SHADER(local_lights_shading_frag)
+INCLUDE_SHADER(local_lights_drawOutline_frag)
 
 
 using namespace render;
diff --git a/libraries/render-utils/src/DrawHaze.cpp b/libraries/render-utils/src/DrawHaze.cpp
index da07f5bd9b..dc1893b347 100644
--- a/libraries/render-utils/src/DrawHaze.cpp
+++ b/libraries/render-utils/src/DrawHaze.cpp
@@ -19,7 +19,7 @@
 #include "HazeStage.h"
 #include "LightStage.h"
 
-#include "Haze_frag.h"
+INCLUDE_SHADER(Haze_frag)
 
 void HazeConfig::setHazeColor(const glm::vec3 value) { 
     hazeColor = value; 
diff --git a/libraries/render-utils/src/GeometryCache.cpp b/libraries/render-utils/src/GeometryCache.cpp
index 2616d08600..ac8b300e49 100644
--- a/libraries/render-utils/src/GeometryCache.cpp
+++ b/libraries/render-utils/src/GeometryCache.cpp
@@ -34,21 +34,21 @@
 #include "model/TextureMap.h"
 #include "render/Args.h"
 
-#include "standardTransformPNTC_vert.h"
-#include "standardDrawTexture_frag.h"
+INCLUDE_SHADER(standardTransformPNTC_vert)
+INCLUDE_SHADER(standardDrawTexture_frag)
 
-#include "simple_vert.h"
-#include "simple_textured_frag.h"
-#include "simple_textured_unlit_frag.h"
-#include "simple_fade_vert.h"
-#include "simple_textured_fade_frag.h"
-#include "simple_textured_unlit_fade_frag.h"
-#include "simple_opaque_web_browser_frag.h"
-#include "simple_transparent_web_browser_frag.h"
-#include "glowLine_vert.h"
-#include "glowLine_frag.h"
+INCLUDE_SHADER(simple_vert)
+INCLUDE_SHADER(simple_textured_frag)
+INCLUDE_SHADER(simple_textured_unlit_frag)
+INCLUDE_SHADER(simple_fade_vert)
+INCLUDE_SHADER(simple_textured_fade_frag)
+INCLUDE_SHADER(simple_textured_unlit_fade_frag)
+INCLUDE_SHADER(simple_opaque_web_browser_frag)
+INCLUDE_SHADER(simple_transparent_web_browser_frag)
+INCLUDE_SHADER(glowLine_vert)
+INCLUDE_SHADER(glowLine_frag)
 
-#include "grid_frag.h"
+INCLUDE_SHADER(grid_frag)
 
 //#define WANT_DEBUG
 
diff --git a/libraries/render-utils/src/HighlightEffect.cpp b/libraries/render-utils/src/HighlightEffect.cpp
index fee1f4a568..69feffb055 100644
--- a/libraries/render-utils/src/HighlightEffect.cpp
+++ b/libraries/render-utils/src/HighlightEffect.cpp
@@ -22,13 +22,13 @@
 
 #include <sstream>
 
-#include "surfaceGeometry_copyDepth_frag.h"
-#include "debug_deferred_buffer_vert.h"
-#include "debug_deferred_buffer_frag.h"
-#include "Highlight_frag.h"
-#include "Highlight_filled_frag.h"
-#include "Highlight_aabox_vert.h"
-#include "nop_frag.h"
+INCLUDE_SHADER(surfaceGeometry_copyDepth_frag)
+INCLUDE_SHADER(debug_deferred_buffer_vert)
+INCLUDE_SHADER(debug_deferred_buffer_frag)
+INCLUDE_SHADER(Highlight_frag)
+INCLUDE_SHADER(Highlight_filled_frag)
+INCLUDE_SHADER(Highlight_aabox_vert)
+INCLUDE_SHADER(nop_frag)
 
 using namespace render;
 
@@ -547,10 +547,10 @@ const render::Varying DrawHighlightTask::addSelectItemJobs(JobModel& task, const
     return task.addJob<SelectItems>("TransparentSelection", selectItemInput);
 }
 
-#include "model_shadow_vert.h"
-#include "skin_model_shadow_vert.h"
+INCLUDE_SHADER(model_shadow_vert)
+INCLUDE_SHADER(skin_model_shadow_vert)
 
-#include "model_shadow_frag.h"
+INCLUDE_SHADER(model_shadow_frag)
 
 void DrawHighlightTask::initMaskPipelines(render::ShapePlumber& shapePlumber, gpu::StatePointer state) {
     auto modelVertex = gpu::Shader::createVertex(std::string(model_shadow_vert));
diff --git a/libraries/render-utils/src/LightClusters.cpp b/libraries/render-utils/src/LightClusters.cpp
index d6ac7fd2e2..79d755683f 100644
--- a/libraries/render-utils/src/LightClusters.cpp
+++ b/libraries/render-utils/src/LightClusters.cpp
@@ -18,15 +18,15 @@
 
 #include "StencilMaskPass.h"
 
-#include "lightClusters_drawGrid_vert.h"
-#include "lightClusters_drawGrid_frag.h"
+INCLUDE_SHADER(lightClusters_drawGrid_vert)
+INCLUDE_SHADER(lightClusters_drawGrid_frag)
 
-//#include "lightClusters_drawClusterFromDepth_vert.h"
-#include "lightClusters_drawClusterFromDepth_frag.h"
+//INCLUDE_SHADER(lightClusters_drawClusterFromDepth_vert)
+INCLUDE_SHADER(lightClusters_drawClusterFromDepth_frag)
 
 
-#include "lightClusters_drawClusterContent_vert.h"
-#include "lightClusters_drawClusterContent_frag.h"
+INCLUDE_SHADER(lightClusters_drawClusterContent_vert)
+INCLUDE_SHADER(lightClusters_drawClusterContent_frag)
 
 enum LightClusterGridShader_MapSlot {
     DEFERRED_BUFFER_LINEAR_DEPTH_UNIT = 0,
diff --git a/libraries/render-utils/src/RenderForwardTask.cpp b/libraries/render-utils/src/RenderForwardTask.cpp
index c83251c605..8d02281d05 100755
--- a/libraries/render-utils/src/RenderForwardTask.cpp
+++ b/libraries/render-utils/src/RenderForwardTask.cpp
@@ -24,7 +24,7 @@
 
 #include <gpu/StandardShaderLib.h>
 
-#include "nop_frag.h"
+INCLUDE_SHADER(nop_frag)
 
 using namespace render;
 extern void initForwardPipelines(ShapePlumber& plumber);
diff --git a/libraries/render-utils/src/RenderPipelines.cpp b/libraries/render-utils/src/RenderPipelines.cpp
index 7f644add72..62252d3a0b 100644
--- a/libraries/render-utils/src/RenderPipelines.cpp
+++ b/libraries/render-utils/src/RenderPipelines.cpp
@@ -20,86 +20,86 @@
 #include "TextureCache.h"
 #include "render/DrawTask.h"
 
-#include "model_vert.h"
-#include "model_normal_map_vert.h"
-#include "model_lightmap_vert.h"
-#include "model_lightmap_normal_map_vert.h"
-#include "skin_model_vert.h"
-#include "skin_model_normal_map_vert.h"
+INCLUDE_SHADER(model_vert)
+INCLUDE_SHADER(model_normal_map_vert)
+INCLUDE_SHADER(model_lightmap_vert)
+INCLUDE_SHADER(model_lightmap_normal_map_vert)
+INCLUDE_SHADER(skin_model_vert)
+INCLUDE_SHADER(skin_model_normal_map_vert)
 
-#include "model_lightmap_fade_vert.h"
-#include "model_lightmap_normal_map_fade_vert.h"
-#include "skin_model_fade_vert.h"
-#include "skin_model_normal_map_fade_vert.h"
+INCLUDE_SHADER(model_lightmap_fade_vert)
+INCLUDE_SHADER(model_lightmap_normal_map_fade_vert)
+INCLUDE_SHADER(skin_model_fade_vert)
+INCLUDE_SHADER(skin_model_normal_map_fade_vert)
 
-#include "simple_vert.h"
-#include "simple_textured_frag.h"
-#include "simple_textured_unlit_frag.h"
-#include "simple_transparent_textured_frag.h"
-#include "simple_transparent_textured_unlit_frag.h"
+INCLUDE_SHADER(simple_vert)
+INCLUDE_SHADER(simple_textured_frag)
+INCLUDE_SHADER(simple_textured_unlit_frag)
+INCLUDE_SHADER(simple_transparent_textured_frag)
+INCLUDE_SHADER(simple_transparent_textured_unlit_frag)
 
-#include "simple_fade_vert.h"
-#include "simple_textured_fade_frag.h"
-#include "simple_textured_unlit_fade_frag.h"
-#include "simple_transparent_textured_fade_frag.h"
-#include "simple_transparent_textured_unlit_fade_frag.h"
+INCLUDE_SHADER(simple_fade_vert)
+INCLUDE_SHADER(simple_textured_fade_frag)
+INCLUDE_SHADER(simple_textured_unlit_fade_frag)
+INCLUDE_SHADER(simple_transparent_textured_fade_frag)
+INCLUDE_SHADER(simple_transparent_textured_unlit_fade_frag)
 
-#include "model_frag.h"
-#include "model_unlit_frag.h"
-#include "model_normal_map_frag.h"
-#include "model_normal_specular_map_frag.h"
-#include "model_specular_map_frag.h"
+INCLUDE_SHADER(model_frag)
+INCLUDE_SHADER(model_unlit_frag)
+INCLUDE_SHADER(model_normal_map_frag)
+INCLUDE_SHADER(model_normal_specular_map_frag)
+INCLUDE_SHADER(model_specular_map_frag)
 
-#include "model_fade_vert.h"
-#include "model_normal_map_fade_vert.h"
+INCLUDE_SHADER(model_fade_vert)
+INCLUDE_SHADER(model_normal_map_fade_vert)
 
-#include "model_fade_frag.h"
-#include "model_unlit_fade_frag.h"
-#include "model_normal_map_fade_frag.h"
-#include "model_normal_specular_map_fade_frag.h"
-#include "model_specular_map_fade_frag.h"
+INCLUDE_SHADER(model_fade_frag)
+INCLUDE_SHADER(model_unlit_fade_frag)
+INCLUDE_SHADER(model_normal_map_fade_frag)
+INCLUDE_SHADER(model_normal_specular_map_fade_frag)
+INCLUDE_SHADER(model_specular_map_fade_frag)
 
-#include "forward_model_frag.h"
-#include "forward_model_unlit_frag.h"
-#include "forward_model_normal_map_frag.h"
-#include "forward_model_normal_specular_map_frag.h"
-#include "forward_model_specular_map_frag.h"
+INCLUDE_SHADER(forward_model_frag)
+INCLUDE_SHADER(forward_model_unlit_frag)
+INCLUDE_SHADER(forward_model_normal_map_frag)
+INCLUDE_SHADER(forward_model_normal_specular_map_frag)
+INCLUDE_SHADER(forward_model_specular_map_frag)
 
-#include "model_lightmap_frag.h"
-#include "model_lightmap_normal_map_frag.h"
-#include "model_lightmap_normal_specular_map_frag.h"
-#include "model_lightmap_specular_map_frag.h"
-#include "model_translucent_frag.h"
-#include "model_translucent_unlit_frag.h"
+INCLUDE_SHADER(model_lightmap_frag)
+INCLUDE_SHADER(model_lightmap_normal_map_frag)
+INCLUDE_SHADER(model_lightmap_normal_specular_map_frag)
+INCLUDE_SHADER(model_lightmap_specular_map_frag)
+INCLUDE_SHADER(model_translucent_frag)
+INCLUDE_SHADER(model_translucent_unlit_frag)
 
-#include "model_lightmap_fade_frag.h"
-#include "model_lightmap_normal_map_fade_frag.h"
-#include "model_lightmap_normal_specular_map_fade_frag.h"
-#include "model_lightmap_specular_map_fade_frag.h"
-#include "model_translucent_fade_frag.h"
-#include "model_translucent_unlit_fade_frag.h"
+INCLUDE_SHADER(model_lightmap_fade_frag)
+INCLUDE_SHADER(model_lightmap_normal_map_fade_frag)
+INCLUDE_SHADER(model_lightmap_normal_specular_map_fade_frag)
+INCLUDE_SHADER(model_lightmap_specular_map_fade_frag)
+INCLUDE_SHADER(model_translucent_fade_frag)
+INCLUDE_SHADER(model_translucent_unlit_fade_frag)
 
-#include "overlay3D_vert.h"
-#include "overlay3D_frag.h"
-#include "overlay3D_model_frag.h"
-#include "overlay3D_model_translucent_frag.h"
-#include "overlay3D_translucent_frag.h"
-#include "overlay3D_unlit_frag.h"
-#include "overlay3D_translucent_unlit_frag.h"
-#include "overlay3D_model_unlit_frag.h"
-#include "overlay3D_model_translucent_unlit_frag.h"
+INCLUDE_SHADER(overlay3D_vert)
+INCLUDE_SHADER(overlay3D_frag)
+INCLUDE_SHADER(overlay3D_model_frag)
+INCLUDE_SHADER(overlay3D_model_translucent_frag)
+INCLUDE_SHADER(overlay3D_translucent_frag)
+INCLUDE_SHADER(overlay3D_unlit_frag)
+INCLUDE_SHADER(overlay3D_translucent_unlit_frag)
+INCLUDE_SHADER(overlay3D_model_unlit_frag)
+INCLUDE_SHADER(overlay3D_model_translucent_unlit_frag)
 
-#include "model_shadow_vert.h"
-#include "skin_model_shadow_vert.h"
+INCLUDE_SHADER(model_shadow_vert)
+INCLUDE_SHADER(skin_model_shadow_vert)
 
-#include "model_shadow_frag.h"
-#include "skin_model_shadow_frag.h"
+INCLUDE_SHADER(model_shadow_frag)
+INCLUDE_SHADER(skin_model_shadow_frag)
 
-#include "model_shadow_fade_vert.h"
-#include "skin_model_shadow_fade_vert.h"
+INCLUDE_SHADER(model_shadow_fade_vert)
+INCLUDE_SHADER(skin_model_shadow_fade_vert)
 
-#include "model_shadow_fade_frag.h"
-#include "skin_model_shadow_fade_frag.h"
+INCLUDE_SHADER(model_shadow_fade_frag)
+INCLUDE_SHADER(skin_model_shadow_fade_frag)
 
 using namespace render;
 using namespace std::placeholders;
diff --git a/libraries/render-utils/src/StencilMaskPass.cpp b/libraries/render-utils/src/StencilMaskPass.cpp
index f71111b64e..e2a8b31f08 100644
--- a/libraries/render-utils/src/StencilMaskPass.cpp
+++ b/libraries/render-utils/src/StencilMaskPass.cpp
@@ -17,7 +17,7 @@
 
 #include <gpu/StandardShaderLib.h>
 
-#include "stencil_drawMask_frag.h"
+INCLUDE_SHADER(stencil_drawMask_frag)
 
 using namespace render;
 
diff --git a/libraries/render-utils/src/SubsurfaceScattering.cpp b/libraries/render-utils/src/SubsurfaceScattering.cpp
index 1786898e57..e8d7e23ec2 100644
--- a/libraries/render-utils/src/SubsurfaceScattering.cpp
+++ b/libraries/render-utils/src/SubsurfaceScattering.cpp
@@ -17,11 +17,11 @@
 
 #include "DeferredLightingEffect.h"
 
-#include "subsurfaceScattering_makeProfile_frag.h"
-#include "subsurfaceScattering_makeLUT_frag.h"
-#include "subsurfaceScattering_makeSpecularBeckmann_frag.h"
+INCLUDE_SHADER(subsurfaceScattering_makeProfile_frag)
+INCLUDE_SHADER(subsurfaceScattering_makeLUT_frag)
+INCLUDE_SHADER(subsurfaceScattering_makeSpecularBeckmann_frag)
 
-#include "subsurfaceScattering_drawScattering_frag.h"
+INCLUDE_SHADER(subsurfaceScattering_drawScattering_frag)
 
 enum ScatteringShaderBufferSlots {
     ScatteringTask_FrameTransformSlot = 0,
diff --git a/libraries/render-utils/src/SurfaceGeometryPass.cpp b/libraries/render-utils/src/SurfaceGeometryPass.cpp
index c4eea7ce7f..6ad8dc6137 100644
--- a/libraries/render-utils/src/SurfaceGeometryPass.cpp
+++ b/libraries/render-utils/src/SurfaceGeometryPass.cpp
@@ -25,10 +25,10 @@ const int SurfaceGeometryPass_ParamsSlot = 1;
 const int SurfaceGeometryPass_DepthMapSlot = 0;
 const int SurfaceGeometryPass_NormalMapSlot = 1;
 
-#include "surfaceGeometry_makeLinearDepth_frag.h"
-#include "surfaceGeometry_downsampleDepthNormal_frag.h"
+INCLUDE_SHADER(surfaceGeometry_makeLinearDepth_frag)
+INCLUDE_SHADER(surfaceGeometry_downsampleDepthNormal_frag)
 
-#include "surfaceGeometry_makeCurvature_frag.h"
+INCLUDE_SHADER(surfaceGeometry_makeCurvature_frag)
 
 
 
diff --git a/libraries/render-utils/src/TextRenderer3D.cpp b/libraries/render-utils/src/TextRenderer3D.cpp
index 9c85952107..06e041685a 100644
--- a/libraries/render-utils/src/TextRenderer3D.cpp
+++ b/libraries/render-utils/src/TextRenderer3D.cpp
@@ -25,8 +25,8 @@
 #include "MatrixStack.h"
 #include "RenderUtilsLogging.h"
 
-#include "sdf_text3D_vert.h"
-#include "sdf_text3D_frag.h"
+INCLUDE_SHADER(sdf_text3D_vert)
+INCLUDE_SHADER(sdf_text3D_frag)
 
 #include "GeometryCache.h"
 
diff --git a/libraries/render-utils/src/ToneMappingEffect.cpp b/libraries/render-utils/src/ToneMappingEffect.cpp
index 72d692c5b2..3d3a11f7b3 100644
--- a/libraries/render-utils/src/ToneMappingEffect.cpp
+++ b/libraries/render-utils/src/ToneMappingEffect.cpp
@@ -17,7 +17,7 @@
 #include "StencilMaskPass.h"
 #include "FramebufferCache.h"
 
-#include "toneMapping_frag.h"
+INCLUDE_SHADER(toneMapping_frag)
 
 const int ToneMappingEffect_ParamsSlot = 0;
 const int ToneMappingEffect_LightingMapSlot = 0;
diff --git a/libraries/render-utils/src/ZoneRenderer.cpp b/libraries/render-utils/src/ZoneRenderer.cpp
index c0d01c2eaf..77b5c492d3 100644
--- a/libraries/render-utils/src/ZoneRenderer.cpp
+++ b/libraries/render-utils/src/ZoneRenderer.cpp
@@ -20,9 +20,9 @@
 #include "StencilMaskPass.h"
 #include "DeferredLightingEffect.h"
 
-#include "zone_drawKeyLight_frag.h"
-#include "zone_drawAmbient_frag.h"
-#include "zone_drawSkybox_frag.h"
+INCLUDE_SHADER(zone_drawKeyLight_frag)
+INCLUDE_SHADER(zone_drawAmbient_frag)
+INCLUDE_SHADER(zone_drawSkybox_frag)
 
 
 using namespace render;
diff --git a/libraries/render-utils/src/text/Font.cpp b/libraries/render-utils/src/text/Font.cpp
index 8449c58c7c..9e0fbd1522 100644
--- a/libraries/render-utils/src/text/Font.cpp
+++ b/libraries/render-utils/src/text/Font.cpp
@@ -7,9 +7,9 @@
 
 #include <StreamHelpers.h>
 
-#include "sdf_text3D_vert.h"
-#include "sdf_text3D_frag.h"
-#include "sdf_text3D_transparent_frag.h"
+INCLUDE_SHADER(sdf_text3D_vert)
+INCLUDE_SHADER(sdf_text3D_frag)
+INCLUDE_SHADER(sdf_text3D_transparent_frag)
 
 #include "../RenderUtilsLogging.h"
 #include "FontFamilies.h"
diff --git a/libraries/render/src/render/BlurTask.cpp b/libraries/render/src/render/BlurTask.cpp
index 2be6f8fad2..4b5d6da8e3 100644
--- a/libraries/render/src/render/BlurTask.cpp
+++ b/libraries/render/src/render/BlurTask.cpp
@@ -13,11 +13,11 @@
 #include <gpu/Context.h>
 #include <gpu/StandardShaderLib.h>
 
-#include "blurGaussianV_frag.h"
-#include "blurGaussianH_frag.h"
+INCLUDE_SHADER(blurGaussianV_frag)
+INCLUDE_SHADER(blurGaussianH_frag)
 
-#include "blurGaussianDepthAwareV_frag.h"
-#include "blurGaussianDepthAwareH_frag.h"
+INCLUDE_SHADER(blurGaussianDepthAwareV_frag)
+INCLUDE_SHADER(blurGaussianDepthAwareH_frag)
 
 using namespace render;
 
diff --git a/libraries/render/src/render/DrawSceneOctree.cpp b/libraries/render/src/render/DrawSceneOctree.cpp
index 36663a454a..7823d85dae 100644
--- a/libraries/render/src/render/DrawSceneOctree.cpp
+++ b/libraries/render/src/render/DrawSceneOctree.cpp
@@ -22,12 +22,12 @@
 
 #include "Args.h"
 
-#include "drawCellBounds_vert.h"
-#include "drawCellBounds_frag.h"
-#include "drawLODReticle_frag.h"
+INCLUDE_SHADER(drawCellBounds_vert)
+INCLUDE_SHADER(drawCellBounds_frag)
+INCLUDE_SHADER(drawLODReticle_frag)
 
-#include "drawItemBounds_vert.h"
-#include "drawItemBounds_frag.h"
+INCLUDE_SHADER(drawItemBounds_vert)
+INCLUDE_SHADER(drawItemBounds_frag)
 
 using namespace render;
 
diff --git a/libraries/render/src/render/DrawStatus.cpp b/libraries/render/src/render/DrawStatus.cpp
index 148e104453..1c6d7749f8 100644
--- a/libraries/render/src/render/DrawStatus.cpp
+++ b/libraries/render/src/render/DrawStatus.cpp
@@ -21,10 +21,10 @@
 
 #include "Args.h"
 
-#include "drawItemBounds_vert.h"
-#include "drawItemBounds_frag.h"
-#include "drawItemStatus_vert.h"
-#include "drawItemStatus_frag.h"
+INCLUDE_SHADER(drawItemBounds_vert)
+INCLUDE_SHADER(drawItemBounds_frag)
+INCLUDE_SHADER(drawItemStatus_vert)
+INCLUDE_SHADER(drawItemStatus_frag)
 
 using namespace render;
 
diff --git a/libraries/render/src/render/DrawTask.cpp b/libraries/render/src/render/DrawTask.cpp
index 629cc55ccb..a6d5072cca 100755
--- a/libraries/render/src/render/DrawTask.cpp
+++ b/libraries/render/src/render/DrawTask.cpp
@@ -22,8 +22,8 @@
 #include <gpu/Context.h>
 #include <gpu/StandardShaderLib.h>
 
-#include <drawItemBounds_vert.h>
-#include <drawItemBounds_frag.h>
+INCLUDE_SHADER(drawItemBounds_vert)
+INCLUDE_SHADER(drawItemBounds_frag)
 
 using namespace render;
 
diff --git a/libraries/render/src/render/drawItemBounds.slf b/libraries/render/src/render/drawItemBounds.slf
index e01d1607bd..84c47d0933 100644
--- a/libraries/render/src/render/drawItemBounds.slf
+++ b/libraries/render/src/render/drawItemBounds.slf
@@ -15,7 +15,6 @@ in vec4 varColor;
 in vec2 varTexcoord;
 out vec4 outFragColor;
 
-
 void main(void) {
     float var = step(fract(varTexcoord.x * varTexcoord.y * 1.0), 0.5);
 
diff --git a/tests/shaders/src/main.cpp b/tests/shaders/src/main.cpp
index 7c6886ad93..e0babc8b47 100644
--- a/tests/shaders/src/main.cpp
+++ b/tests/shaders/src/main.cpp
@@ -23,65 +23,65 @@
 
 #include <gl/QOpenGLContextWrapper.h>
 
-#include <render-utils/simple_vert.h>
-#include <render-utils/simple_frag.h>
-#include <render-utils/simple_textured_frag.h>
-#include <render-utils/simple_textured_unlit_frag.h>
+INCLUDE_SHADER(simple_vert)
+INCLUDE_SHADER(simple_frag)
+INCLUDE_SHADER(simple_textured_frag)
+INCLUDE_SHADER(simple_textured_unlit_frag)
 
-#include <render-utils/deferred_light_vert.h>
-#include <render-utils/deferred_light_point_vert.h>
-#include <render-utils/deferred_light_spot_vert.h>
+INCLUDE_SHADER(deferred_light_vert)
+INCLUDE_SHADER(deferred_light_point_vert)
+INCLUDE_SHADER(deferred_light_spot_vert)
 
-#include <render-utils/directional_ambient_light_frag.h>
-#include <render-utils/directional_skybox_light_frag.h>
+INCLUDE_SHADER(directional_ambient_light_frag)
+INCLUDE_SHADER(directional_skybox_light_frag)
 
-#include <render-utils/standardTransformPNTC_vert.h>
-#include <render-utils/standardDrawTexture_frag.h>
+INCLUDE_SHADER(standardTransformPNTC_vert)
+INCLUDE_SHADER(standardDrawTexture_frag)
 
-#include <render-utils/model_vert.h>
-#include <render-utils/model_shadow_vert.h>
-#include <render-utils/model_normal_map_vert.h>
-#include <render-utils/model_lightmap_vert.h>
-#include <render-utils/model_lightmap_normal_map_vert.h>
-#include <render-utils/skin_model_vert.h>
-#include <render-utils/skin_model_shadow_vert.h>
-#include <render-utils/skin_model_normal_map_vert.h>
+INCLUDE_SHADER(model_vert)
+INCLUDE_SHADER(model_shadow_vert)
+INCLUDE_SHADER(model_normal_map_vert)
+INCLUDE_SHADER(model_lightmap_vert)
+INCLUDE_SHADER(model_lightmap_normal_map_vert)
+INCLUDE_SHADER(skin_model_vert)
+INCLUDE_SHADER(skin_model_shadow_vert)
+INCLUDE_SHADER(skin_model_normal_map_vert)
 
-#include <render-utils/model_frag.h>
-#include <render-utils/model_shadow_frag.h>
-#include <render-utils/model_normal_map_frag.h>
-#include <render-utils/model_normal_specular_map_frag.h>
-#include <render-utils/model_specular_map_frag.h>
-#include <render-utils/model_lightmap_frag.h>
-#include <render-utils/model_lightmap_normal_map_frag.h>
-#include <render-utils/model_lightmap_normal_specular_map_frag.h>
-#include <render-utils/model_lightmap_specular_map_frag.h>
-#include <render-utils/model_translucent_frag.h>
+INCLUDE_SHADER(model_frag)
+INCLUDE_SHADER(model_shadow_frag)
+INCLUDE_SHADER(model_normal_map_frag)
+INCLUDE_SHADER(model_normal_specular_map_frag)
+INCLUDE_SHADER(model_specular_map_frag)
+INCLUDE_SHADER(model_lightmap_frag)
+INCLUDE_SHADER(model_lightmap_normal_map_frag)
+INCLUDE_SHADER(model_lightmap_normal_specular_map_frag)
+INCLUDE_SHADER(model_lightmap_specular_map_frag)
+INCLUDE_SHADER(model_translucent_frag)
 
-#include <entities-renderer/textured_particle_frag.h>
-#include <entities-renderer/textured_particle_vert.h>
+INCLUDE_SHADER(textured_particle_frag)
+INCLUDE_SHADER(textured_particle_vert)
 
-#include <render-utils/overlay3D_vert.h>
-#include <render-utils/overlay3D_frag.h>
+INCLUDE_SHADER(overlay3D_vert)
+INCLUDE_SHADER(overlay3D_frag)
 
-#include <model/skybox_vert.h>
-#include <model/skybox_frag.h>
+INCLUDE_SHADER(skybox_vert)
+INCLUDE_SHADER(skybox_frag)
 
-#include <gpu/DrawTransformUnitQuad_vert.h>
-#include <gpu/DrawTexcoordRectTransformUnitQuad_vert.h>
-#include <gpu/DrawViewportQuadTransformTexcoord_vert.h>
-#include <gpu/DrawTexture_frag.h>
-#include <gpu/DrawTextureOpaque_frag.h>
-#include <gpu/DrawColoredTexture_frag.h>
+INCLUDE_SHADER(DrawTransformUnitQuad_vert)
+INCLUDE_SHADER(DrawTexcoordRectTransformUnitQuad_vert)
+INCLUDE_SHADER(DrawViewportQuadTransformTexcoord_vert)
+INCLUDE_SHADER(DrawTexture_frag)
+INCLUDE_SHADER(DrawTextureOpaque_frag)
+INCLUDE_SHADER(DrawColoredTexture_frag)
 
-#include <render-utils/sdf_text3D_vert.h>
-#include <render-utils/sdf_text3D_frag.h>
+INCLUDE_SHADER(sdf_text3D_vert)
+INCLUDE_SHADER(sdf_text3D_frag)
 
-#include <entities-renderer/paintStroke_vert.h>
-#include <entities-renderer/paintStroke_frag.h>
+INCLUDE_SHADER(paintStroke_vert)
+INCLUDE_SHADER(paintStroke_frag)
 
-#include <entities-renderer/polyvox_vert.h>
-#include <entities-renderer/polyvox_frag.h>
+INCLUDE_SHADER(polyvox_vert)
+INCLUDE_SHADER(polyvox_frag)
 
 // Create a simple OpenGL window that renders text in various ways
 class QTestWindow : public QWindow {
diff --git a/tools/scribe/src/main.cpp b/tools/scribe/src/main.cpp
index 810f6c0f45..fef2ea0308 100755
--- a/tools/scribe/src/main.cpp
+++ b/tools/scribe/src/main.cpp
@@ -123,7 +123,7 @@ int main (int argc, char** argv) {
         cerr << "       varname and varvalue must be made of alpha numerical characters with no spaces." << endl;
         cerr << "  -listVars : Will list the vars name and value in the standard output." << endl;
         cerr << "  -showParseTree : Draw the tree obtained while parsing the source" << endl;
-        cerr << "  -c++ : Generate a c++ header file containing the output file stream stored as a char[] variable" << endl;
+        cerr << "  -c++ : Generate a c++ source file containing the output file stream stored as a char[] variable" << endl;
         return 0;
     }
 
@@ -209,9 +209,7 @@ int main (int argc, char** argv) {
         }
 
         targetStringStream << "// File generated by Scribe " << vars["_SCRIBE_DATE"] << std::endl;
-        targetStringStream << "#ifndef scribe_" << targetName << "_h" << std::endl;
-        targetStringStream << "#define scribe_" << targetName << "_h" << std::endl << std::endl;
-
+        targetStringStream << "extern const char " << targetName << "[];\n";
         targetStringStream << "const char " << targetName << "[] = \n";
 
         // Write the pages content
@@ -219,8 +217,6 @@ int main (int argc, char** argv) {
             targetStringStream << "R\"SCRIBE(\n" << page->str() << "\n)SCRIBE\"\n";
         }
         targetStringStream << ";\n" << std::endl << std::endl;
-
-        targetStringStream << "#endif" << std::endl;
     } else {
         targetStringStream << destStringStream.str();
     }