Pārlūkot izejas kodu

Completely remove ShaderResource

Panagiotis Christopoulos Charitos 8 gadi atpakaļ
vecāks
revīzija
f5473b3296

+ 31 - 0
programs/Blit.ankiprog

@@ -0,0 +1,31 @@
+<!-- 
+Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
+All rights reserved.
+Code licensed under the BSD License.
+http://www.anki3d.org/LICENSE
+-->
+<shaderProgram>
+	<shaders>
+		<shader type="vert">
+			<source><![CDATA[
+#include "shaders/Quad.vert.glsl"
+			]]></source>
+		</shader>
+
+		<shader type="frag">
+			<source><![CDATA[
+#include "shaders/Common.glsl"
+
+layout(ANKI_TEX_BINDING(0, 0)) uniform sampler2D u_tex;
+
+layout(location = 0) in vec2 in_uv;
+layout(location = 0) out vec3 out_col;
+
+void main()
+{
+	out_col = textureLod(u_tex, in_uv, 0.0).rgb;
+}
+			]]></source>
+		</shader>
+	</shaders>
+</shaderProgram>

+ 46 - 0
programs/Dbg.ankiprog

@@ -0,0 +1,46 @@
+<!-- 
+Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
+All rights reserved.
+Code licensed under the BSD License.
+http://www.anki3d.org/LICENSE
+-->
+<shaderProgram>
+	<shaders>
+		<shader type="vert">
+			<source><![CDATA[
+#include "shaders/Common.glsl"
+
+layout(location = 0) in vec4 in_position;
+layout(location = 1) in vec4 in_color;
+
+layout(location = 0) out vec4 out_color;
+
+out gl_PerVertex
+{
+	vec4 gl_Position;
+};
+
+void main()
+{
+	out_color = in_color;
+	gl_Position = in_position;
+}
+			]]></source>
+		</shader>
+
+		<shader type="frag">
+			<source><![CDATA[
+#include "shaders/Common.glsl"
+
+layout(location = 0) in vec4 in_color;
+layout(location = 0) out vec4 out_color;
+
+void main()
+{
+	out_color = in_color;
+}
+			]]></source>
+		</shader>
+	</shaders>
+</shaderProgram>
+

+ 37 - 0
programs/DownscaleBlur.ankiprog

@@ -0,0 +1,37 @@
+<!-- 
+Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
+All rights reserved.
+Code licensed under the BSD License.
+http://www.anki3d.org/LICENSE
+-->
+<shaderProgram>
+	<shaders>
+		<shader type="vert">
+			<source><![CDATA[
+#include "shaders/Quad.vert.glsl"
+			]]></source>
+		</shader>
+
+		<shader type="frag">
+			<source><![CDATA[
+#include "shaders/Common.glsl"
+
+layout(ANKI_TEX_BINDING(0, 0)) uniform sampler2D u_tex;
+
+layout(location = 0) in vec2 in_uv;
+layout(location = 0) out vec3 out_color;
+
+void main()
+{
+	out_color = textureLod(u_tex, in_uv, 0.0).rgb;
+	out_color += textureLodOffset(u_tex, in_uv, 0.0, ivec2(+1, +1)).rgb;
+	out_color += textureLodOffset(u_tex, in_uv, 0.0, ivec2(-1, -1)).rgb;
+	out_color += textureLodOffset(u_tex, in_uv, 0.0, ivec2(+1, -1)).rgb;
+	out_color += textureLodOffset(u_tex, in_uv, 0.0, ivec2(-1, +1)).rgb;
+
+	out_color /= 5.0;
+}
+			]]></source>
+		</shader>
+	</shaders>
+</shaderProgram>

+ 0 - 16
shaders/Blit.frag.glsl

@@ -1,16 +0,0 @@
-// Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#include "shaders/Common.glsl"
-
-layout(ANKI_TEX_BINDING(0, 0)) uniform sampler2D u_tex;
-
-layout(location = 0) in vec2 in_uv;
-layout(location = 0) out vec3 out_col;
-
-void main()
-{
-	out_col = textureLod(u_tex, in_uv, 0.0).rgb;
-}

+ 0 - 14
shaders/Dbg.frag.glsl

@@ -1,14 +0,0 @@
-// Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#include "shaders/Common.glsl"
-
-layout(location = 0) in vec4 in_color;
-layout(location = 0) out vec4 out_color;
-
-void main()
-{
-	out_color = in_color;
-}

+ 0 - 22
shaders/Dbg.vert.glsl

@@ -1,22 +0,0 @@
-// Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#include "shaders/Common.glsl"
-
-layout(location = 0) in vec4 in_position;
-layout(location = 1) in vec4 in_color;
-
-layout(location = 0) out vec4 out_color;
-
-out gl_PerVertex
-{
-	vec4 gl_Position;
-};
-
-void main()
-{
-	out_color = in_color;
-	gl_Position = in_position;
-}

+ 0 - 24
shaders/DownscaleBlur.frag.glsl

@@ -1,24 +0,0 @@
-// Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#include "shaders/Common.glsl"
-
-layout(ANKI_TEX_BINDING(0, 0)) uniform sampler2D u_tex;
-
-layout(location = 0) in vec2 in_uv;
-layout(location = 0) out vec3 out_color;
-
-void main()
-{
-	const vec2 TEXEL_SIZE = 1.0 / TEXTURE_SIZE;
-
-	out_color = textureLod(u_tex, in_uv, 0.0).rgb;
-	out_color += textureLod(u_tex, in_uv + TEXEL_SIZE, 0.0).rgb;
-	out_color += textureLod(u_tex, in_uv - TEXEL_SIZE, 0.0).rgb;
-	out_color += textureLod(u_tex, in_uv + vec2(TEXEL_SIZE.x, -TEXEL_SIZE.y), 0.0).rgb;
-	out_color += textureLod(u_tex, in_uv + vec2(-TEXEL_SIZE.x, TEXEL_SIZE.y), 0.0).rgb;
-
-	out_color /= 5.0;
-}

+ 0 - 22
shaders/Final.frag.glsl

@@ -1,22 +0,0 @@
-// Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-// The final pass
-
-#include "shaders/Common.glsl"
-#include "shaders/Pack.glsl"
-
-layout(ANKI_TEX_BINDING(0, 0)) uniform sampler2D u_tex;
-
-layout(location = 0) in highp vec2 in_texCoord;
-layout(location = 0) out vec3 out_color;
-
-void main()
-{
-	vec2 uv = in_texCoord;
-
-	vec3 col = textureLod(u_tex, uv, 0.0).rgb;
-	out_color = col;
-}

+ 0 - 1
src/anki/Resource.h

@@ -12,7 +12,6 @@
 #include <anki/resource/TextureAtlas.h>
 #include <anki/resource/TextureAtlas.h>
 #include <anki/resource/Material.h>
 #include <anki/resource/Material.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/TextureResource.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/resource/GenericResource.h>
 #include <anki/resource/GenericResource.h>
 #include <anki/resource/Mesh.h>
 #include <anki/resource/Mesh.h>
 #include <anki/resource/DummyRsrc.h>
 #include <anki/resource/DummyRsrc.h>

+ 0 - 1
src/anki/renderer/Bloom.h

@@ -9,7 +9,6 @@
 #include <anki/renderer/ScreenSpaceLensFlare.h>
 #include <anki/renderer/ScreenSpaceLensFlare.h>
 #include <anki/Gr.h>
 #include <anki/Gr.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/TextureResource.h>
-#include <anki/resource/ShaderResource.h>
 
 
 namespace anki
 namespace anki
 {
 {

+ 0 - 1
src/anki/renderer/Dbg.cpp

@@ -9,7 +9,6 @@
 #include <anki/renderer/LightShading.h>
 #include <anki/renderer/LightShading.h>
 #include <anki/renderer/FinalComposite.h>
 #include <anki/renderer/FinalComposite.h>
 #include <anki/renderer/DebugDrawer.h>
 #include <anki/renderer/DebugDrawer.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/Scene.h>
 #include <anki/Scene.h>
 #include <anki/util/Logger.h>
 #include <anki/util/Logger.h>
 #include <anki/util/Enum.h>
 #include <anki/util/Enum.h>

+ 5 - 5
src/anki/renderer/DebugDrawer.cpp

@@ -5,7 +5,6 @@
 
 
 #include <anki/renderer/DebugDrawer.h>
 #include <anki/renderer/DebugDrawer.h>
 #include <anki/renderer/Renderer.h>
 #include <anki/renderer/Renderer.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/renderer/Renderer.h>
 #include <anki/renderer/Renderer.h>
 #include <anki/renderer/FinalComposite.h>
 #include <anki/renderer/FinalComposite.h>
@@ -32,9 +31,10 @@ Error DebugDrawer::init(Renderer* r)
 	GrManager& gr = r->getGrManager();
 	GrManager& gr = r->getGrManager();
 
 
 	// Create the prog and shaders
 	// Create the prog and shaders
-	ANKI_CHECK(r->getResourceManager().loadResource("shaders/Dbg.vert.glsl", m_vert));
-	ANKI_CHECK(r->getResourceManager().loadResource("shaders/Dbg.frag.glsl", m_frag));
-	m_prog = gr.newInstance<ShaderProgram>(m_vert->getGrShader(), m_frag->getGrShader());
+	ANKI_CHECK(r->getResourceManager().loadResource("programs/Dbg.ankiprog", m_prog));
+	const ShaderProgramResourceVariant* variant;
+	m_prog->getOrCreateVariant(variant);
+	m_grProg = variant->getProgram();
 
 
 	// Create the vert buffs
 	// Create the vert buffs
 	for(BufferPtr& v : m_vertBuff)
 	for(BufferPtr& v : m_vertBuff)
@@ -62,7 +62,7 @@ void DebugDrawer::prepareFrame(CommandBufferPtr& jobs)
 	m_cmdb->setVertexAttribute(0, 0, PixelFormat(ComponentFormat::R32G32B32A32, TransformFormat::FLOAT), 0);
 	m_cmdb->setVertexAttribute(0, 0, PixelFormat(ComponentFormat::R32G32B32A32, TransformFormat::FLOAT), 0);
 	m_cmdb->setVertexAttribute(1, 0, PixelFormat(ComponentFormat::R32G32B32A32, TransformFormat::FLOAT), sizeof(Vec4));
 	m_cmdb->setVertexAttribute(1, 0, PixelFormat(ComponentFormat::R32G32B32A32, TransformFormat::FLOAT), sizeof(Vec4));
 
 
-	m_cmdb->bindShaderProgram(m_prog);
+	m_cmdb->bindShaderProgram(m_grProg);
 
 
 	m_frameVertCount = 0;
 	m_frameVertCount = 0;
 	m_crntDrawVertCount = 0;
 	m_crntDrawVertCount = 0;

+ 3 - 4
src/anki/renderer/DebugDrawer.h

@@ -10,8 +10,8 @@
 #include <anki/Gr.h>
 #include <anki/Gr.h>
 #include <anki/collision/CollisionShape.h>
 #include <anki/collision/CollisionShape.h>
 #include <anki/physics/PhysicsDrawer.h>
 #include <anki/physics/PhysicsDrawer.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/util/Array.h>
 #include <anki/util/Array.h>
+#include <anki/resource/ShaderProgramResource.h>
 
 
 namespace anki
 namespace anki
 {
 {
@@ -86,9 +86,8 @@ private:
 	static const U MAX_VERTS_PER_FRAME = 1024 * 1024;
 	static const U MAX_VERTS_PER_FRAME = 1024 * 1024;
 
 
 	Renderer* m_r;
 	Renderer* m_r;
-	ShaderResourcePtr m_frag;
-	ShaderResourcePtr m_vert;
-	ShaderProgramPtr m_prog;
+	ShaderProgramResourcePtr m_prog;
+	ShaderProgramPtr m_grProg;
 	Array<BufferPtr, MAX_FRAMES_IN_FLIGHT> m_vertBuff;
 	Array<BufferPtr, MAX_FRAMES_IN_FLIGHT> m_vertBuff;
 
 
 	CommandBufferPtr m_cmdb;
 	CommandBufferPtr m_cmdb;

+ 0 - 1
src/anki/renderer/DepthDownscale.h

@@ -8,7 +8,6 @@
 #include <anki/renderer/RenderingPass.h>
 #include <anki/renderer/RenderingPass.h>
 #include <anki/Gr.h>
 #include <anki/Gr.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/TextureResource.h>
-#include <anki/resource/ShaderResource.h>
 
 
 namespace anki
 namespace anki
 {
 {

+ 6 - 11
src/anki/renderer/DownscaleBlur.cpp

@@ -22,16 +22,6 @@ Error DownscaleBlur::initSubpass(U idx, const UVec2& inputTexSize)
 	pass.m_width = inputTexSize.x() / 2;
 	pass.m_width = inputTexSize.x() / 2;
 	pass.m_height = inputTexSize.y() / 2;
 	pass.m_height = inputTexSize.y() / 2;
 
 
-	// frag shader
-	ANKI_CHECK(m_r->createShaderf("shaders/DownscaleBlur.frag.glsl",
-		pass.m_frag,
-		"#define TEXTURE_SIZE vec2(%f, %f)\n",
-		F32(inputTexSize.x()),
-		F32(inputTexSize.y())));
-
-	// prog
-	m_r->createDrawQuadShaderProgram(pass.m_frag->getGrShader(), pass.m_prog);
-
 	// RT
 	// RT
 	pass.m_rt = m_r->createAndClearRenderTarget(m_r->create2DRenderTargetInitInfo(pass.m_width,
 	pass.m_rt = m_r->createAndClearRenderTarget(m_r->create2DRenderTargetInitInfo(pass.m_width,
 		pass.m_height,
 		pass.m_height,
@@ -77,6 +67,11 @@ Error DownscaleBlur::initInternal(const ConfigSet&)
 		size /= 2;
 		size /= 2;
 	}
 	}
 
 
+	ANKI_CHECK(getResourceManager().loadResource("programs/DownscaleBlur.ankiprog", m_prog));
+	const ShaderProgramResourceVariant* variant;
+	m_prog->getOrCreateVariant(variant);
+	m_grProg = variant->getProgram();
+
 	return ErrorCode::NONE;
 	return ErrorCode::NONE;
 }
 }
 
 
@@ -114,7 +109,7 @@ void DownscaleBlur::run(RenderingContext& ctx)
 		}
 		}
 
 
 		cmdb->setViewport(0, 0, pass.m_width, pass.m_height);
 		cmdb->setViewport(0, 0, pass.m_width, pass.m_height);
-		cmdb->bindShaderProgram(pass.m_prog);
+		cmdb->bindShaderProgram(m_grProg);
 
 
 		cmdb->beginRenderPass(pass.m_fb);
 		cmdb->beginRenderPass(pass.m_fb);
 		m_r->drawQuad(cmdb);
 		m_r->drawQuad(cmdb);

+ 3 - 2
src/anki/renderer/DownscaleBlur.h

@@ -49,13 +49,14 @@ private:
 	class Subpass
 	class Subpass
 	{
 	{
 	public:
 	public:
-		ShaderResourcePtr m_frag;
-		ShaderProgramPtr m_prog;
 		TexturePtr m_rt;
 		TexturePtr m_rt;
 		FramebufferPtr m_fb;
 		FramebufferPtr m_fb;
 		U32 m_width, m_height;
 		U32 m_width, m_height;
 	};
 	};
 
 
+	ShaderProgramResourcePtr m_prog;
+	ShaderProgramPtr m_grProg;
+
 	DynamicArray<Subpass> m_passes;
 	DynamicArray<Subpass> m_passes;
 
 
 	ANKI_USE_RESULT Error initInternal(const ConfigSet& cfg);
 	ANKI_USE_RESULT Error initInternal(const ConfigSet& cfg);

+ 0 - 1
src/anki/renderer/Drawer.cpp

@@ -5,7 +5,6 @@
 
 
 #include <anki/renderer/Drawer.h>
 #include <anki/renderer/Drawer.h>
 #include <anki/renderer/RenderQueue.h>
 #include <anki/renderer/RenderQueue.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/resource/Material.h>
 #include <anki/resource/Material.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/renderer/Renderer.h>
 #include <anki/renderer/Renderer.h>

+ 0 - 1
src/anki/renderer/LensFlare.h

@@ -7,7 +7,6 @@
 
 
 #include <anki/renderer/RenderingPass.h>
 #include <anki/renderer/RenderingPass.h>
 #include <anki/Gr.h>
 #include <anki/Gr.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/TextureResource.h>
 
 
 namespace anki
 namespace anki

+ 0 - 1
src/anki/renderer/LightShading.h

@@ -7,7 +7,6 @@
 
 
 #include <anki/renderer/RenderingPass.h>
 #include <anki/renderer/RenderingPass.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/TextureResource.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/resource/ShaderProgramResource.h>
 #include <anki/resource/ShaderProgramResource.h>
 
 
 namespace anki
 namespace anki

+ 5 - 3
src/anki/renderer/MainRenderer.cpp

@@ -69,8 +69,10 @@ Error MainRenderer::create(ThreadPool* threadpool,
 	// Init other
 	// Init other
 	if(!m_rDrawToDefaultFb)
 	if(!m_rDrawToDefaultFb)
 	{
 	{
-		ANKI_CHECK(m_r->getResourceManager().loadResource("shaders/Final.frag.glsl", m_blitFrag));
-		m_r->createDrawQuadShaderProgram(m_blitFrag->getGrShader(), m_blitProg);
+		ANKI_CHECK(resources->loadResource("programs/Blit.ankiprog", m_blitProg));
+		const ShaderProgramResourceVariant* variant;
+		m_blitProg->getOrCreateVariant(variant);
+		m_blitGrProg = variant->getProgram();
 
 
 		ANKI_R_LOGI("The main renderer will have to blit the offscreen renderer's result");
 		ANKI_R_LOGI("The main renderer will have to blit the offscreen renderer's result");
 	}
 	}
@@ -115,7 +117,7 @@ Error MainRenderer::render(RenderQueue& rqueue)
 		cmdb->beginRenderPass(m_defaultFb);
 		cmdb->beginRenderPass(m_defaultFb);
 		cmdb->setViewport(0, 0, m_width, m_height);
 		cmdb->setViewport(0, 0, m_width, m_height);
 
 
-		cmdb->bindShaderProgram(m_blitProg);
+		cmdb->bindShaderProgram(m_blitGrProg);
 		cmdb->bindTexture(0, 0, m_r->getFinalComposite().getRt());
 		cmdb->bindTexture(0, 0, m_r->getFinalComposite().getRt());
 
 
 		m_r->drawQuad(cmdb);
 		m_r->drawQuad(cmdb);

+ 2 - 2
src/anki/renderer/MainRenderer.h

@@ -61,8 +61,8 @@ private:
 	UniquePtr<Renderer> m_r;
 	UniquePtr<Renderer> m_r;
 	Bool8 m_rDrawToDefaultFb = false;
 	Bool8 m_rDrawToDefaultFb = false;
 
 
-	ShaderResourcePtr m_blitFrag;
-	ShaderProgramPtr m_blitProg;
+	ShaderProgramResourcePtr m_blitProg;
+	ShaderProgramPtr m_blitGrProg;
 
 
 	FramebufferPtr m_defaultFb;
 	FramebufferPtr m_defaultFb;
 	U32 m_width = 0; ///< Default FB size.
 	U32 m_width = 0; ///< Default FB size.

+ 0 - 29
src/anki/renderer/Renderer.cpp

@@ -24,8 +24,6 @@
 #include <anki/renderer/DepthDownscale.h>
 #include <anki/renderer/DepthDownscale.h>
 #include <anki/renderer/TemporalAA.h>
 #include <anki/renderer/TemporalAA.h>
 
 
-#include <cstdarg> // For var args
-
 namespace anki
 namespace anki
 {
 {
 
 
@@ -106,9 +104,6 @@ Error Renderer::initInternal(const ConfigSet& config)
 	m_dummyBuff = getGrManager().newInstance<Buffer>(
 	m_dummyBuff = getGrManager().newInstance<Buffer>(
 		getDummyBufferSize(), BufferUsageBit::UNIFORM_ALL | BufferUsageBit::STORAGE_ALL, BufferMapAccessBit::NONE);
 		getDummyBufferSize(), BufferUsageBit::UNIFORM_ALL | BufferUsageBit::STORAGE_ALL, BufferMapAccessBit::NONE);
 
 
-	// quad setup
-	ANKI_CHECK(m_resources->loadResource("shaders/Quad.vert.glsl", m_drawQuadVert));
-
 	// Init the stages. Careful with the order!!!!!!!!!!
 	// Init the stages. Careful with the order!!!!!!!!!!
 	m_indirect.reset(m_alloc.newInstance<Indirect>(this));
 	m_indirect.reset(m_alloc.newInstance<Indirect>(this));
 	ANKI_CHECK(m_indirect->init(config));
 	ANKI_CHECK(m_indirect->init(config));
@@ -616,28 +611,4 @@ Error Renderer::buildCommandBuffers(RenderingContext& ctx)
 	return ErrorCode::NONE;
 	return ErrorCode::NONE;
 }
 }
 
 
-Error Renderer::createShader(CString fname, ShaderResourcePtr& shader, CString extra)
-{
-	return m_resources->loadResourceToCache(shader, fname, &extra[0], "r_");
-}
-
-Error Renderer::createShaderf(CString fname, ShaderResourcePtr& shader, CString fmt, ...)
-{
-	Array<char, 512> buffer;
-	va_list args;
-
-	va_start(args, fmt);
-	I len = std::vsnprintf(&buffer[0], sizeof(buffer), &fmt[0], args);
-	va_end(args);
-	ANKI_ASSERT(len > 0 && len < I(sizeof(buffer) - 1));
-	(void)len;
-
-	return m_resources->loadResourceToCache(shader, fname, &buffer[0], "r_");
-}
-
-void Renderer::createDrawQuadShaderProgram(ShaderPtr frag, ShaderProgramPtr& prog)
-{
-	prog = m_gr->newInstance<ShaderProgram>(m_drawQuadVert->getGrShader(), frag);
-}
-
 } // end namespace anki
 } // end namespace anki

+ 0 - 14
src/anki/renderer/Renderer.h

@@ -10,7 +10,6 @@
 #include <anki/Math.h>
 #include <anki/Math.h>
 #include <anki/Gr.h>
 #include <anki/Gr.h>
 #include <anki/resource/Forward.h>
 #include <anki/resource/Forward.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/core/Timestamp.h>
 #include <anki/core/Timestamp.h>
 #include <anki/core/StagingGpuMemoryManager.h>
 #include <anki/core/StagingGpuMemoryManager.h>
 #include <anki/util/ThreadPool.h>
 #include <anki/util/ThreadPool.h>
@@ -252,11 +251,6 @@ anki_internal:
 		return m_tessellation;
 		return m_tessellation;
 	}
 	}
 
 
-	const ShaderPtr& getDrawQuadVertexShader() const
-	{
-		return m_drawQuadVert->getGrShader();
-	}
-
 	/// My version of gluUnproject
 	/// My version of gluUnproject
 	/// @param windowCoords Window screen coords
 	/// @param windowCoords Window screen coords
 	/// @param modelViewMat The modelview matrix
 	/// @param modelViewMat The modelview matrix
@@ -283,9 +277,6 @@ anki_internal:
 		return distance / m_lodDistance;
 		return distance / m_lodDistance;
 	}
 	}
 
 
-	/// Create a shader program that has as a vertex shader the m_drawQuadVert and the given fragment progam
-	void createDrawQuadShaderProgram(ShaderPtr frag, ShaderProgramPtr& prog);
-
 	/// Create the init info for a 2D texture that will be used as a render target.
 	/// Create the init info for a 2D texture that will be used as a render target.
 	ANKI_USE_RESULT TextureInitInfo create2DRenderTargetInitInfo(U32 w,
 	ANKI_USE_RESULT TextureInitInfo create2DRenderTargetInitInfo(U32 w,
 		U32 h,
 		U32 h,
@@ -297,9 +288,6 @@ anki_internal:
 
 
 	ANKI_USE_RESULT TexturePtr createAndClearRenderTarget(const TextureInitInfo& inf);
 	ANKI_USE_RESULT TexturePtr createAndClearRenderTarget(const TextureInitInfo& inf);
 
 
-	ANKI_USE_RESULT Error createShader(CString fname, ShaderResourcePtr& shader, CString extra);
-	ANKI_USE_RESULT Error createShaderf(CString fname, ShaderResourcePtr& shader, CString fmt, ...);
-
 	GrManager& getGrManager()
 	GrManager& getGrManager()
 	{
 	{
 		return *m_gr;
 		return *m_gr;
@@ -411,8 +399,6 @@ private:
 	F32 m_lodDistance; ///< Distance that used to calculate the LOD
 	F32 m_lodDistance; ///< Distance that used to calculate the LOD
 	Bool8 m_tessellation;
 	Bool8 m_tessellation;
 
 
-	ShaderResourcePtr m_drawQuadVert;
-
 	RenderableDrawer m_sceneDrawer;
 	RenderableDrawer m_sceneDrawer;
 
 
 	U64 m_frameCount; ///< Frame number
 	U64 m_frameCount; ///< Frame number

+ 0 - 1
src/anki/renderer/RenderingPass.h

@@ -9,7 +9,6 @@
 #include <anki/util/StdTypes.h>
 #include <anki/util/StdTypes.h>
 #include <anki/Gr.h>
 #include <anki/Gr.h>
 #include <anki/resource/ResourceManager.h>
 #include <anki/resource/ResourceManager.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/resource/ShaderProgramResource.h>
 #include <anki/resource/ShaderProgramResource.h>
 #include <anki/core/StagingGpuMemoryManager.h>
 #include <anki/core/StagingGpuMemoryManager.h>
 
 

+ 0 - 1
src/anki/renderer/Ssao.h

@@ -6,7 +6,6 @@
 #pragma once
 #pragma once
 
 
 #include <anki/renderer/RenderingPass.h>
 #include <anki/renderer/RenderingPass.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/Gr.h>
 #include <anki/Gr.h>
 #include <anki/core/Timestamp.h>
 #include <anki/core/Timestamp.h>

+ 0 - 2
src/anki/resource/InstantiationMacros.h

@@ -9,8 +9,6 @@ ANKI_INSTANTIATE_RESOURCE(Animation, AnimationResourcePtr)
 ANKI_INSTANSIATE_RESOURCE_DELIMITER()
 ANKI_INSTANSIATE_RESOURCE_DELIMITER()
 ANKI_INSTANTIATE_RESOURCE(TextureResource, TextureResourcePtr)
 ANKI_INSTANTIATE_RESOURCE(TextureResource, TextureResourcePtr)
 ANKI_INSTANSIATE_RESOURCE_DELIMITER()
 ANKI_INSTANSIATE_RESOURCE_DELIMITER()
-ANKI_INSTANTIATE_RESOURCE(ShaderResource, ShaderResourcePtr)
-ANKI_INSTANSIATE_RESOURCE_DELIMITER()
 ANKI_INSTANTIATE_RESOURCE(Material, MaterialResourcePtr)
 ANKI_INSTANTIATE_RESOURCE(Material, MaterialResourcePtr)
 ANKI_INSTANSIATE_RESOURCE_DELIMITER()
 ANKI_INSTANSIATE_RESOURCE_DELIMITER()
 ANKI_INSTANTIATE_RESOURCE(Mesh, MeshResourcePtr)
 ANKI_INSTANTIATE_RESOURCE(Mesh, MeshResourcePtr)

+ 0 - 1
src/anki/resource/Model.cpp

@@ -8,7 +8,6 @@
 #include <anki/resource/Material.h>
 #include <anki/resource/Material.h>
 #include <anki/resource/Mesh.h>
 #include <anki/resource/Mesh.h>
 #include <anki/resource/MeshLoader.h>
 #include <anki/resource/MeshLoader.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/misc/Xml.h>
 #include <anki/misc/Xml.h>
 #include <anki/util/Logger.h>
 #include <anki/util/Logger.h>
 
 

+ 0 - 1
src/anki/resource/ResourceManager.cpp

@@ -11,7 +11,6 @@
 #include <anki/resource/Model.h>
 #include <anki/resource/Model.h>
 #include <anki/resource/Script.h>
 #include <anki/resource/Script.h>
 #include <anki/resource/DummyRsrc.h>
 #include <anki/resource/DummyRsrc.h>
-#include <anki/resource/ShaderResource.h>
 #include <anki/resource/ParticleEmitterResource.h>
 #include <anki/resource/ParticleEmitterResource.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/TextureResource.h>
 #include <anki/resource/GenericResource.h>
 #include <anki/resource/GenericResource.h>

+ 0 - 4
src/anki/resource/ResourceManager.h

@@ -128,10 +128,6 @@ public:
 	template<typename T>
 	template<typename T>
 	ANKI_USE_RESULT Error loadResource(const CString& filename, ResourcePtr<T>& out);
 	ANKI_USE_RESULT Error loadResource(const CString& filename, ResourcePtr<T>& out);
 
 
-	/// Load a resource to cache.
-	template<typename T, typename... TArgs>
-	ANKI_USE_RESULT Error loadResourceToCache(ResourcePtr<T>& out, TArgs&&... args);
-
 anki_internal:
 anki_internal:
 	U32 getMaxTextureSize() const
 	U32 getMaxTextureSize() const
 	{
 	{

+ 0 - 15
src/anki/resource/ResourceManager.inl.h

@@ -65,19 +65,4 @@ Error ResourceManager::loadResource(const CString& filename, ResourcePtr<T>& out
 	return err;
 	return err;
 }
 }
 
 
-template<typename T, typename... TArgs>
-Error ResourceManager::loadResourceToCache(ResourcePtr<T>& out, TArgs&&... args)
-{
-	StringAuto fname(m_tmpAlloc);
-
-	Error err = T::createToCache(args..., *this, fname);
-
-	if(!err)
-	{
-		err = loadResource(fname.toCString(), out);
-	}
-
-	return err;
-}
-
 } // end namespace anki
 } // end namespace anki

+ 0 - 117
src/anki/resource/ShaderResource.cpp

@@ -1,117 +0,0 @@
-// Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#include <anki/resource/ShaderResource.h>
-#include <anki/resource/ShaderLoader.h>
-#include <anki/resource/ResourceManager.h>
-#include <anki/core/App.h> // To get cache dir
-#include <anki/util/File.h>
-#include <anki/util/Filesystem.h>
-#include <anki/util/Hash.h>
-#include <anki/util/Assert.h>
-
-namespace anki
-{
-
-ShaderResource::ShaderResource(ResourceManager* manager)
-	: ResourceObject(manager)
-{
-}
-
-ShaderResource::~ShaderResource()
-{
-}
-
-Error ShaderResource::load(const ResourceFilename& filename)
-{
-	return load(filename, " ");
-}
-
-Error ShaderResource::load(const ResourceFilename& filename, const CString& extraSrc)
-{
-	auto alloc = getTempAllocator();
-
-	ShaderLoader pars(&getManager());
-	ANKI_CHECK(pars.parseFile(filename));
-
-	// Allocate new source
-	StringAuto source(alloc);
-
-	if(extraSrc.getLength() > 0)
-	{
-		source.append(extraSrc);
-	}
-
-	source.append(pars.getShaderSource());
-
-	// Create
-	m_shader = getManager().getGrManager().newInstance<Shader>(pars.getShaderType(), source.toCString());
-
-	m_type = pars.getShaderType();
-
-	return ErrorCode::NONE;
-}
-
-Error ShaderResource::createToCache(const ResourceFilename& filename,
-	const CString& preAppendedSrcCode,
-	const CString& filenamePrefix,
-	ResourceManager& manager,
-	StringAuto& out)
-{
-	auto alloc = manager.getTempAllocator();
-
-	if(preAppendedSrcCode.getLength() < 1)
-	{
-		// Early exit, nothing to mutate
-		out.create(filename);
-		return ErrorCode::NONE;
-	}
-
-	// Create suffix
-	StringAuto unique(alloc);
-
-	unique.create(filename);
-	unique.append(preAppendedSrcCode);
-
-	U64 h = computeHash(&unique[0], unique.getLength());
-
-	StringAuto suffix(alloc);
-	suffix.toString(h);
-
-	// Create out
-	out = StringAuto(alloc);
-	ShaderType inShaderType;
-	ANKI_CHECK(fileExtensionToShaderType(filename, inShaderType));
-	out.sprintf("%s%s%s", &filenamePrefix[0], &suffix[0], &shaderTypeToFileExtension(inShaderType)[0]);
-
-	// Compose cached filename
-	StringAuto newFilename(alloc);
-
-	newFilename.sprintf("%s/%s", &manager.getCacheDirectory()[0], &out[0]);
-
-	if(fileExists(newFilename.toCString()))
-	{
-		return ErrorCode::NONE;
-	}
-
-	// Read file and append code
-	StringAuto src(alloc);
-
-	ResourceFilePtr file;
-	ANKI_CHECK(manager.getFilesystem().openFile(filename, file));
-	ANKI_CHECK(file->readAllText(alloc, src));
-
-	StringAuto srcfull(alloc);
-	srcfull.sprintf("%s%s", &preAppendedSrcCode[0], &src[0]);
-
-	// Write cached file
-	File f;
-	ANKI_CHECK(f.open(newFilename.toCString(), FileOpenFlag::WRITE));
-	ANKI_CHECK(f.writeText("%s\n", &srcfull[0]));
-
-	return ErrorCode::NONE;
-}
-
-} // end namespace anki

+ 0 - 58
src/anki/resource/ShaderResource.h

@@ -1,58 +0,0 @@
-// Copyright (C) 2009-2017, Panagiotis Christopoulos Charitos and contributors.
-// All rights reserved.
-// Code licensed under the BSD License.
-// http://www.anki3d.org/LICENSE
-
-#pragma once
-
-#include <anki/resource/ResourceObject.h>
-#include <anki/Gr.h>
-
-namespace anki
-{
-
-/// @addtogroup resource
-/// @{
-
-/// Shader resource
-class ShaderResource : public ResourceObject
-{
-public:
-	ShaderResource(ResourceManager* manager);
-
-	~ShaderResource();
-
-	const ShaderPtr& getGrShader() const
-	{
-		return m_shader;
-	}
-
-	/// Resource load
-	ANKI_USE_RESULT Error load(const ResourceFilename& filename);
-
-	/// Load and add extra code on top of the file
-	ANKI_USE_RESULT Error load(const CString& ResourceFilename, const CString& extraSrc);
-
-	/// Used by @ref Material and @ref Renderer to create custom shaders in the cache
-	/// @param filename The file pathname of the shader prog
-	/// @param preAppendedSrcCode The source code we want to write on top of the shader prog
-	/// @param filenamePrefix Add that at the base filename for additional ways to identify the file in the cache
-	/// @param out The file pathname of the new shader prog. It's filenamePrefix + hash + .glsl
-	static ANKI_USE_RESULT Error createToCache(const ResourceFilename& filename,
-		const CString& preAppendedSrcCode,
-		const CString& filenamePrefix,
-		ResourceManager& manager,
-		StringAuto& out);
-
-	ShaderType getType() const
-	{
-		return m_type;
-	}
-
-private:
-	ShaderPtr m_shader;
-	ShaderType m_type;
-};
-/// @}
-
-} // end namespace anki