|
|
@@ -25,6 +25,10 @@
|
|
|
|
|
|
#include "CmDebugCamera.h"
|
|
|
|
|
|
+//#define DX11
|
|
|
+//#define DX9
|
|
|
+#define GL
|
|
|
+
|
|
|
using namespace CamelotEngine;
|
|
|
|
|
|
int CALLBACK WinMain(
|
|
|
@@ -34,9 +38,13 @@ int CALLBACK WinMain(
|
|
|
_In_ int nCmdShow
|
|
|
)
|
|
|
{
|
|
|
- //gApplication().startUp("CamelotGLRenderSystem", "CamelotForwardRenderer");
|
|
|
- //gApplication().startUp("CamelotD3D9RenderSystem", "CamelotForwardRenderer");
|
|
|
+#ifdef DX11
|
|
|
gApplication().startUp("CamelotD3D11RenderSystem", "CamelotForwardRenderer");
|
|
|
+#elif defined DX9
|
|
|
+ gApplication().startUp("CamelotD3D9RenderSystem", "CamelotForwardRenderer");
|
|
|
+#else
|
|
|
+ gApplication().startUp("CamelotGLRenderSystem", "CamelotForwardRenderer");
|
|
|
+#endif
|
|
|
|
|
|
RenderSystem* renderSystem = RenderSystem::instancePtr();
|
|
|
RenderWindowPtr renderWindow = gApplication().getPrimaryRenderWindow();
|
|
|
@@ -55,6 +63,32 @@ int CALLBACK WinMain(
|
|
|
GameObjectPtr testModelGO = GameObject::create("TestMesh");
|
|
|
RenderablePtr testRenderable = testModelGO->addComponent<Renderable>();
|
|
|
|
|
|
+#if defined DX9
|
|
|
+ ///////////////// HLSL 9 SHADERS //////////////////////////
|
|
|
+ String fragShaderCode = "sampler2D tex; \
|
|
|
+ float4 ps_main(float2 uv : TEXCOORD0) : COLOR0 \
|
|
|
+ { \
|
|
|
+ float4 color = tex2D(tex, uv); \
|
|
|
+ return color; \
|
|
|
+ }";
|
|
|
+
|
|
|
+ HighLevelGpuProgramHandle fragProgRef = HighLevelGpuProgram::create(fragShaderCode, "ps_main", "hlsl", GPT_FRAGMENT_PROGRAM, GPP_PS_2_0);
|
|
|
+
|
|
|
+ String vertShaderCode = "float4x4 matViewProjection; \
|
|
|
+ void vs_main( \
|
|
|
+ float4 inPos : POSITION, \
|
|
|
+ float2 uv : TEXCOORD0, \
|
|
|
+ out float4 oPosition : POSITION, \
|
|
|
+ out float2 oUv : TEXCOORD0) \
|
|
|
+ { \
|
|
|
+ oPosition = mul(matViewProjection, inPos); \
|
|
|
+ oUv = uv; \
|
|
|
+ }";
|
|
|
+
|
|
|
+ HighLevelGpuProgramHandle vertProgRef = HighLevelGpuProgram::create(vertShaderCode, "vs_main", "hlsl", GPT_VERTEX_PROGRAM, GPP_VS_2_0);
|
|
|
+
|
|
|
+#elif defined DX11
|
|
|
+
|
|
|
GpuProgIncludeHandle gpuProgInclude = Importer::instance().import("C:\\testInclude.gpuproginc");
|
|
|
const String& debugString = gpuProgInclude->getString();
|
|
|
|
|
|
@@ -71,29 +105,6 @@ int CALLBACK WinMain(
|
|
|
|
|
|
HighLevelGpuProgramHandle importedGpuProgram = Importer::instance().import("C:\\testGpuProg.gpuprog", gpuProgImportOptions);
|
|
|
|
|
|
- /////////////////// HLSL 9 SHADERS //////////////////////////
|
|
|
- //String fragShaderCode = "sampler2D tex; \
|
|
|
- // float4 ps_main(float2 uv : TEXCOORD0) : COLOR0 \
|
|
|
- // { \
|
|
|
- // float4 color = tex2D(tex, uv); \
|
|
|
- // return color; \
|
|
|
- // }";
|
|
|
-
|
|
|
- //HighLevelGpuProgramHandle fragProgRef = HighLevelGpuProgram::create(fragShaderCode, "ps_main", "hlsl", GPT_FRAGMENT_PROGRAM, GPP_PS_2_0);
|
|
|
-
|
|
|
- //String vertShaderCode = "float4x4 matViewProjection; \
|
|
|
- // void vs_main( \
|
|
|
- // float4 inPos : POSITION, \
|
|
|
- // float2 uv : TEXCOORD0, \
|
|
|
- // out float4 oPosition : POSITION, \
|
|
|
- // out float2 oUv : TEXCOORD0) \
|
|
|
- // { \
|
|
|
- // oPosition = mul(matViewProjection, inPos); \
|
|
|
- // oUv = uv; \
|
|
|
- // }";
|
|
|
-
|
|
|
- //HighLevelGpuProgramHandle vertProgRef = HighLevelGpuProgram::create(vertShaderCode, "vs_main", "hlsl", GPT_VERTEX_PROGRAM, GPP_VS_2_0);
|
|
|
-
|
|
|
/////////////////// HLSL 11 SHADERS //////////////////////////
|
|
|
String fragShaderCode = "SamplerState samp : register(s0); \
|
|
|
Texture2D tex : register(t0); \
|
|
|
@@ -126,56 +137,34 @@ int CALLBACK WinMain(
|
|
|
}";
|
|
|
|
|
|
HighLevelGpuProgramHandle vertProgRef = HighLevelGpuProgram::create(vertShaderCode, "vs_main", "hlsl", GPT_VERTEX_PROGRAM, GPP_VS_4_0);
|
|
|
-
|
|
|
- /////////////////// CG SHADERS //////////////////////////
|
|
|
- //String fragShaderCode = "sampler2D tex; \
|
|
|
- // float4 ps_main(float2 uv : TEXCOORD0) : COLOR0 \
|
|
|
- // { \
|
|
|
- // float4 color = tex2D(tex, uv); \
|
|
|
- // return color; \
|
|
|
- // }";
|
|
|
-
|
|
|
- //HighLevelGpuProgramHandle fragProgRef = HighLevelGpuProgram::create(fragShaderCode, "ps_main", "cg", GPT_FRAGMENT_PROGRAM, GPP_PS_2_0);
|
|
|
-
|
|
|
- //String vertShaderCode = "float4x4 matViewProjection; \
|
|
|
- // void vs_main( \
|
|
|
- // float4 cm_position : POSITION, \
|
|
|
- // float2 cm_texcoord0 : TEXCOORD0, \
|
|
|
- // out float4 oPosition : POSITION, \
|
|
|
- // out float2 oUv : TEXCOORD0) \
|
|
|
- // { \
|
|
|
- // oPosition = mul(matViewProjection, cm_position); \
|
|
|
- // oUv = cm_texcoord0; \
|
|
|
- // }";
|
|
|
-
|
|
|
- //HighLevelGpuProgramHandle vertProgRef = HighLevelGpuProgram::create(vertShaderCode, "vs_main", "cg", GPT_VERTEX_PROGRAM, GPP_VS_2_0);
|
|
|
-
|
|
|
+#else
|
|
|
///////////////// GLSL SHADERS ////////////////////////////
|
|
|
- //String fragShaderCode = " #version 400 \n \
|
|
|
- // uniform sampler2D tex; \
|
|
|
- // in vec2 texcoord0; \
|
|
|
- // out vec4 fragColor; \
|
|
|
- // void main() \
|
|
|
- // {\
|
|
|
- // vec4 texColor = texture2D(tex, texcoord0.st);\
|
|
|
- // fragColor = texColor; \
|
|
|
- // }";
|
|
|
-
|
|
|
- //HighLevelGpuProgramHandle fragProgRef = HighLevelGpuProgram::create(fragShaderCode, "main", "glsl", GPT_FRAGMENT_PROGRAM, GPP_PS_2_0);
|
|
|
-
|
|
|
- //// TODO - Make sure to document the strict input parameter naming. (Exact supported names are in GLSLParamParser)
|
|
|
- //String vertShaderCode = "#version 400 \n \
|
|
|
- // uniform mainFragBlock { mat4 matViewProjection; }; \
|
|
|
- // in vec4 cm_position; \
|
|
|
- // in vec2 cm_texcoord0; \
|
|
|
- // out vec2 texcoord0; \
|
|
|
- // void main() \
|
|
|
- // { \
|
|
|
- // texcoord0 = cm_texcoord0; \
|
|
|
- // gl_Position = cm_position * matViewProjection; \
|
|
|
- // }";
|
|
|
-
|
|
|
- //HighLevelGpuProgramHandle vertProgRef= HighLevelGpuProgram::create(vertShaderCode, "main", "glsl", GPT_VERTEX_PROGRAM, GPP_VS_2_0);
|
|
|
+ String fragShaderCode = " #version 400 \n \
|
|
|
+ uniform sampler2D tex; \
|
|
|
+ in vec2 texcoord0; \
|
|
|
+ out vec4 fragColor; \
|
|
|
+ void main() \
|
|
|
+ {\
|
|
|
+ vec4 texColor = texture2D(tex, texcoord0.st);\
|
|
|
+ fragColor = texColor; \
|
|
|
+ }";
|
|
|
+
|
|
|
+ HighLevelGpuProgramHandle fragProgRef = HighLevelGpuProgram::create(fragShaderCode, "main", "glsl", GPT_FRAGMENT_PROGRAM, GPP_PS_2_0);
|
|
|
+
|
|
|
+ // TODO - Make sure to document the strict input parameter naming. (Exact supported names are in GLSLParamParser)
|
|
|
+ String vertShaderCode = "#version 400 \n \
|
|
|
+ uniform mainFragBlock { mat4 matViewProjection; }; \
|
|
|
+ in vec4 cm_position; \
|
|
|
+ in vec2 cm_texcoord0; \
|
|
|
+ out vec2 texcoord0; \
|
|
|
+ void main() \
|
|
|
+ { \
|
|
|
+ texcoord0 = cm_texcoord0; \
|
|
|
+ gl_Position = cm_position * matViewProjection; \
|
|
|
+ }";
|
|
|
+
|
|
|
+ HighLevelGpuProgramHandle vertProgRef= HighLevelGpuProgram::create(vertShaderCode, "main", "glsl", GPT_VERTEX_PROGRAM, GPP_VS_2_0);
|
|
|
+#endif
|
|
|
|
|
|
gResources().create(vertProgRef, "C:\\vertProgCg.vprog", true);
|
|
|
gResources().unload(vertProgRef);
|
|
|
@@ -188,7 +177,10 @@ int CALLBACK WinMain(
|
|
|
ShaderPtr testShader = Shader::create("TestShader");
|
|
|
|
|
|
testShader->addParameter("matViewProjection", "matViewProjection", GPDT_MATRIX_4X4);
|
|
|
+
|
|
|
+#ifdef DX11
|
|
|
testShader->addParameter("input", "input", GPDT_STRUCT, 2, 8);
|
|
|
+#endif
|
|
|
|
|
|
testShader->addParameter("samp", "samp", GPOT_SAMPLER2D);
|
|
|
testShader->addParameter("tex", "tex", GPOT_TEXTURE2D);
|
|
|
@@ -217,6 +209,7 @@ int CALLBACK WinMain(
|
|
|
|
|
|
testMaterial->setMat4("matViewProjection", Matrix4::IDENTITY);
|
|
|
|
|
|
+#ifdef DX11
|
|
|
float dbgMultipliers1[2];
|
|
|
dbgMultipliers1[0] = 0.0f;
|
|
|
dbgMultipliers1[1] = 0.0f;
|
|
|
@@ -227,6 +220,7 @@ int CALLBACK WinMain(
|
|
|
|
|
|
testMaterial->setStructData("input", dbgMultipliers1, sizeof(dbgMultipliers1), 0);
|
|
|
testMaterial->setStructData("input", dbgMultipliers2, sizeof(dbgMultipliers2), 1);
|
|
|
+#endif
|
|
|
|
|
|
//testMaterialRef = gResources().load("C:\\testMaterial.mat");
|
|
|
//testMaterialRef.waitUntilLoaded();
|
|
|
@@ -269,8 +263,9 @@ int CALLBACK WinMain(
|
|
|
// Release everything before shutdown
|
|
|
|
|
|
//testMaterial->destroy();
|
|
|
-
|
|
|
+#ifdef DX11
|
|
|
gpuProgInclude.reset();
|
|
|
+#endif
|
|
|
|
|
|
gResources().unload(testTexRef);
|
|
|
gResources().unload(dbgMeshRef);
|