Get Fetch+MVP+Texture working. Add FSTexture
diff --git a/tests/tony_render_tests.cpp b/tests/tony_render_tests.cpp
index 3e52a75..0787b53 100644
--- a/tests/tony_render_tests.cpp
+++ b/tests/tony_render_tests.cpp
@@ -1102,7 +1102,7 @@
RotateTriangleVSUniform(Projection, View, Model, MVPBuffer);
}
-TEST_F(XglRenderTest, TriangleWithVertexFetchAndMVP)
+TEST_F(XglRenderTest, CubeWithVertexFetchAndMVP)
{
static const char *vertShaderText =
"#version 140\n"
@@ -1152,7 +1152,6 @@
XglShaderObj vs(m_device,vertShaderText,XGL_SHADER_STAGE_VERTEX );
XglShaderObj ps(m_device,fragShaderText, XGL_SHADER_STAGE_FRAGMENT);
- // vs.BindShaderEntitySlotToMemory(0, XGL_SLOT_VERTEX_INPUT, (XGL_OBJECT) &meshBuffer.m_constantBufferView);
vs.BindShaderEntitySlotToMemory(0, XGL_SLOT_SHADER_RESOURCE, (XGL_OBJECT) &MVPBuffer.m_constantBufferView);
XglPipelineObj pipelineobj(m_device);
@@ -1161,7 +1160,6 @@
XglDescriptorSetObj descriptorSet(m_device);
descriptorSet.AttachMemoryView(&MVPBuffer.m_constantBufferView);
- descriptorSet.AttachMemoryView(&meshBuffer.m_constantBufferView);
m_memoryRefManager.AddMemoryRef(&meshBuffer.m_constantBufferMem);
m_memoryRefManager.AddMemoryRef(&MVPBuffer.m_constantBufferMem);
@@ -1248,7 +1246,65 @@
}
-TEST_F(XglRenderTest, TriangleWithVertexFetchAndMVPAndTexture)
+TEST_F(XglRenderTest, FSTriangle)
+{
+ // The expected result from this test is a red and green checkered triangle
+ static const char *vertShaderText =
+ "#version 140\n"
+ "#extension GL_ARB_separate_shader_objects : enable\n"
+ "#extension GL_ARB_shading_language_420pack : enable\n"
+ "layout (location = 0) out vec2 samplePos;\n"
+ "void main() {\n"
+ " vec2 vertices[3];"
+ " vertices[0] = vec2(-0.5, -0.5);\n"
+ " vertices[1] = vec2( 0.5, -0.5);\n"
+ " vertices[2] = vec2( 0.5, 0.5);\n"
+ " vec2 positions[3];"
+ " positions[0] = vec2( 0.0, 0.0);\n"
+ " positions[1] = vec2( 1.0, 0.0);\n"
+ " positions[2] = vec2( 1.0, 1.0);\n"
+ " samplePos = positions[gl_VertexID % 3];\n"
+ " gl_Position = vec4(vertices[gl_VertexID % 3], 0.0, 1.0);\n"
+ "}\n";
+
+ static const char *fragShaderText =
+ "#version 140\n"
+ "#extension GL_ARB_separate_shader_objects : enable\n"
+ "#extension GL_ARB_shading_language_420pack : enable\n"
+ "layout (location = 0) in vec2 samplePos;\n"
+ "layout (binding = 0) uniform sampler2D surface;\n"
+ "layout (location=0) out vec4 outColor;\n"
+ "void main() {\n"
+ " vec4 texColor = textureLod(surface, samplePos, 0.0);\n"
+ " outColor = texColor;\n"
+ "}\n";
+
+ ASSERT_NO_FATAL_FAILURE(InitState());
+ ASSERT_NO_FATAL_FAILURE(InitViewport());
+
+ XglShaderObj vs(m_device,vertShaderText,XGL_SHADER_STAGE_VERTEX );
+ XglShaderObj ps(m_device,fragShaderText, XGL_SHADER_STAGE_FRAGMENT);
+ XglSamplerObj sampler(m_device);
+ XglTextureObj texture(m_device);
+
+ ps.BindShaderEntitySlotToImage(0, XGL_SLOT_SHADER_RESOURCE, (XGL_OBJECT) &texture.m_textureViewInfo);
+ ps.BindShaderEntitySlotToSampler(0, (XGL_OBJECT) &sampler.m_sampler);
+
+ XglPipelineObj pipelineobj(m_device);
+ pipelineobj.AddShader(&vs);
+ pipelineobj.AddShader(&ps);
+
+ XglDescriptorSetObj descriptorSet(m_device);
+ descriptorSet.AttachImageView(&texture.m_textureViewInfo);
+ descriptorSet.AttachSampler(&sampler.m_sampler);
+
+ m_memoryRefManager.AddMemoryRef(&texture.m_textureMem);
+
+ GenericDrawTriangleTest(pipelineobj, descriptorSet, 1);
+ QueueCommandBuffer(NULL, 0);
+}
+
+TEST_F(XglRenderTest, CubeWithVertexFetchAndMVPAndTexture)
{
static const char *vertShaderText =
"#version 140\n"
@@ -1258,14 +1314,13 @@
" mat4 mvp;\n"
"} myBufferVals;\n"
"layout (location=0) in vec4 pos;\n"
- "layout (location=1) in vec4 inColor;\n"
- "layout (location=0) out vec2 UVout;\n"
+ "layout (location=0) out vec2 UV;\n"
"void main() {\n"
" vec2 positions[3];"
" positions[0] = vec2( 0.0, 0.0);\n"
" positions[1] = vec2( 0.25, 0.1);\n"
" positions[2] = vec2( 0.1, 0.25);\n"
- " UVout = positions[gl_VertexID % 3];\n"
+ " UV = positions[gl_VertexID % 3];\n"
" gl_Position = myBufferVals.mvp * pos;\n"
"}\n";
@@ -1275,10 +1330,9 @@
"#extension GL_ARB_shading_language_420pack : enable\n"
"layout (binding=0) uniform sampler2D surface;\n"
"layout (location=0) out vec4 outColor;\n"
- "layout (location=0) in vec2 UVin;\n"
+ "layout (location=0) in vec2 UV;\n"
"void main() {\n"
- " outColor= textureLod(surface, UVin, 0.0);\n"
- " outColor= vec4(1.0,0.0,0.0,1.0);\n"
+ " outColor= textureLod(surface, UV, 0.0);\n"
"}\n";
glm::mat4 Projection = glm::perspective(glm::radians(45.0f), 1.0f, 0.1f, 100.0f);
@@ -1312,7 +1366,7 @@
// vs.BindShaderEntitySlotToMemory(0, XGL_SLOT_VERTEX_INPUT, (XGL_OBJECT) &meshBuffer.m_constantBufferView);
vs.BindShaderEntitySlotToMemory(0, XGL_SLOT_SHADER_RESOURCE, (XGL_OBJECT) &mvpBuffer.m_constantBufferView);
- // ps.BindShaderEntitySlotToImage(0, XGL_SLOT_SHADER_RESOURCE, (XGL_OBJECT) &texture.m_textureViewInfo);
+ ps.BindShaderEntitySlotToImage(0, XGL_SLOT_SHADER_RESOURCE, (XGL_OBJECT) &texture.m_textureViewInfo);
ps.BindShaderEntitySlotToSampler(0, (XGL_OBJECT) &sampler.m_sampler);
XglPipelineObj pipelineobj(m_device);
@@ -1320,8 +1374,9 @@
pipelineobj.AddShader(&ps);
XglDescriptorSetObj descriptorSet(m_device);
+
descriptorSet.AttachMemoryView(&mvpBuffer.m_constantBufferView);
- descriptorSet.AttachMemoryView(&meshBuffer.m_constantBufferView);
+ // descriptorSet.AttachMemoryView(&meshBuffer.m_constantBufferView);
descriptorSet.AttachImageView(&texture.m_textureViewInfo);
descriptorSet.AttachSampler(&sampler.m_sampler);