From e38d02f6e045bc3a7968a2096f283089c34890c1 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Wed, 17 Jul 2019 12:01:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=9F=E9=99=A4WorldMatrix=E4=B8=AD=E7=9A=84?= =?UTF-8?q?vp=5Fsize?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/Vulkan/indices_rect.cpp | 16 ++++++++-------- example/Vulkan/main.cpp | 5 ----- inc/hgl/math/Matrix.h | 2 -- res/shader/FlatColor.vert | 1 - res/shader/FlatColor3D.vert | 4 ++-- res/shader/FlatTexture.vert | 6 +++++- res/shader/OnlyPosition.vert | 1 - res/shader/OnlyPosition3D.vert | 2 +- res/shader/PositionColor3D.vert | 1 - res/shader/gbuffer_opaque.vert | 2 +- res/shader/glFragCoord.frag | 18 ------------------ res/shader/shader_compile.sh | 3 ++- src/SceneGraph/Camera.cpp | 3 --- 13 files changed, 19 insertions(+), 45 deletions(-) delete mode 100644 res/shader/glFragCoord.frag diff --git a/example/Vulkan/indices_rect.cpp b/example/Vulkan/indices_rect.cpp index 4b749ea4..c7ecce77 100644 --- a/example/Vulkan/indices_rect.cpp +++ b/example/Vulkan/indices_rect.cpp @@ -12,12 +12,15 @@ constexpr uint32_t SCREEN_HEIGHT=128; constexpr uint32_t VERTEX_COUNT=4; +constexpr float SSP=0.25; +constexpr float SSN=1-SSP; + constexpr float vertex_data[VERTEX_COUNT][2]= { - {SCREEN_WIDTH*0, SCREEN_HEIGHT*0}, - {SCREEN_WIDTH*1, SCREEN_HEIGHT*0}, - {SCREEN_WIDTH*0, SCREEN_HEIGHT*1}, - {SCREEN_WIDTH*1, SCREEN_HEIGHT*1} + {SCREEN_WIDTH*SSP, SCREEN_HEIGHT*SSP}, + {SCREEN_WIDTH*SSN, SCREEN_HEIGHT*SSP}, + {SCREEN_WIDTH*SSP, SCREEN_HEIGHT*SSN}, + {SCREEN_WIDTH*SSN, SCREEN_HEIGHT*SSN} }; constexpr uint32_t INDEX_COUNT=6; @@ -62,7 +65,7 @@ private: bool InitMaterial() { material=shader_manage->CreateMaterial(OS_TEXT("res/shader/OnlyPosition.vert.spv"), - OS_TEXT("res/shader/glFragCoord.frag.spv")); + OS_TEXT("res/shader/FlatColor.frag.spv")); if(!material) return(false); @@ -75,9 +78,6 @@ private: { const VkExtent2D extent=sc_render_target->GetExtent(); - wm.vp_size.x=extent.width; - wm.vp_size.y=extent.height; - wm.ortho=ortho(extent.width,extent.height); ubo_mvp=device->CreateUBO(sizeof(WorldMatrix),&wm); diff --git a/example/Vulkan/main.cpp b/example/Vulkan/main.cpp index 57d681b4..bccd93b8 100644 --- a/example/Vulkan/main.cpp +++ b/example/Vulkan/main.cpp @@ -76,9 +76,6 @@ private: { const VkExtent2D extent=sc_render_target->GetExtent(); - wm.vp_size.x=extent.width; - wm.vp_size.y=extent.height; - wm.ortho=ortho(extent.width,extent.height); ubo_mvp=device->CreateUBO(sizeof(WorldMatrix),&wm); @@ -152,8 +149,6 @@ public: void Resize(int w,int h)override { - wm.vp_size.x=w; - wm.vp_size.y=h; wm.ortho=ortho(w,h); ubo_mvp->Write(&wm); diff --git a/inc/hgl/math/Matrix.h b/inc/hgl/math/Matrix.h index f1029f03..10e7ea96 100644 --- a/inc/hgl/math/Matrix.h +++ b/inc/hgl/math/Matrix.h @@ -13,8 +13,6 @@ namespace hgl struct WorldMatrix { - alignas(8) Vector2f vp_size; //viewport尺寸 - alignas(16) Matrix4f ortho; //2D正角视图矩阵 alignas(16) Matrix4f projection; diff --git a/res/shader/FlatColor.vert b/res/shader/FlatColor.vert index cd9183b2..52238b44 100644 --- a/res/shader/FlatColor.vert +++ b/res/shader/FlatColor.vert @@ -5,7 +5,6 @@ layout(location = 1) in vec3 Color; layout(binding = 0) uniform WorldMatrix { - vec2 vp_size; mat4 ortho; mat4 projection; mat4 modelview; diff --git a/res/shader/FlatColor3D.vert b/res/shader/FlatColor3D.vert index c91498ac..2cfe1cb2 100644 --- a/res/shader/FlatColor3D.vert +++ b/res/shader/FlatColor3D.vert @@ -6,11 +6,11 @@ layout(location = 2) in vec3 Normal; layout(binding = 0) uniform WorldMatrix { - mat4 two_dim; + mat4 ortho; mat4 projection; mat4 modelview; mat4 mvp; - mat3 normal; + vec4 view_pos; } world; layout(push_constant) uniform Consts { diff --git a/res/shader/FlatTexture.vert b/res/shader/FlatTexture.vert index 38c51763..124bf17b 100644 --- a/res/shader/FlatTexture.vert +++ b/res/shader/FlatTexture.vert @@ -3,9 +3,13 @@ layout(location = 0) in vec2 Vertex; layout(location = 1) in vec2 TexCoord; -layout(binding = 0) uniform WorldConfig +layout(binding = 0) uniform WorldMatrix { + mat4 ortho; + mat4 projection; + mat4 modelview; mat4 mvp; + vec4 view_pos; } world; layout(location = 0) out vec2 FragmentTexCoord; diff --git a/res/shader/OnlyPosition.vert b/res/shader/OnlyPosition.vert index fd26aee4..ad1792ba 100644 --- a/res/shader/OnlyPosition.vert +++ b/res/shader/OnlyPosition.vert @@ -4,7 +4,6 @@ layout(location = 0) in vec2 Vertex; layout(binding = 0) uniform WorldMatrix { - vec2 vp_size; mat4 ortho; mat4 projection; mat4 modelview; diff --git a/res/shader/OnlyPosition3D.vert b/res/shader/OnlyPosition3D.vert index 6a73d42b..bc46aa1f 100644 --- a/res/shader/OnlyPosition3D.vert +++ b/res/shader/OnlyPosition3D.vert @@ -4,7 +4,7 @@ layout(location = 0) in vec3 Vertex; layout(binding = 0) uniform WorldMatrix { - mat4 two_dim; + mat4 ortho; mat4 projection; mat4 modelview; mat4 mvp; diff --git a/res/shader/PositionColor3D.vert b/res/shader/PositionColor3D.vert index acd5655c..11011ebe 100644 --- a/res/shader/PositionColor3D.vert +++ b/res/shader/PositionColor3D.vert @@ -5,7 +5,6 @@ layout(location = 1) in vec4 Color; layout(binding = 0) uniform WorldMatrix { - vec2 vp_size; mat4 ortho; mat4 projection; mat4 modelview; diff --git a/res/shader/gbuffer_opaque.vert b/res/shader/gbuffer_opaque.vert index f42976d6..5401541c 100644 --- a/res/shader/gbuffer_opaque.vert +++ b/res/shader/gbuffer_opaque.vert @@ -7,7 +7,7 @@ layout(location = 3) in vec3 Tangent; layout(binding = 0) uniform WorldMatrix { - mat4 two_dim; + mat4 ortho; mat4 projection; mat4 modelview; mat4 mvp; diff --git a/res/shader/glFragCoord.frag b/res/shader/glFragCoord.frag deleted file mode 100644 index 5a65321f..00000000 --- a/res/shader/glFragCoord.frag +++ /dev/null @@ -1,18 +0,0 @@ -#version 450 - -layout(binding = 0) uniform WorldMatrix -{ - vec2 vp_size; - mat4 ortho; - mat4 projection; - mat4 modelview; - mat4 mvp; - vec4 view_pos; -} world; - -layout (location = 0) out vec4 outFragcolor; - -void main() -{ - outFragcolor = vec4(gl_FragCoord.rg/world.vp_size,0.0,1.0); -} \ No newline at end of file diff --git a/res/shader/shader_compile.sh b/res/shader/shader_compile.sh index f1515af7..dcc41d62 100755 --- a/res/shader/shader_compile.sh +++ b/res/shader/shader_compile.sh @@ -18,4 +18,5 @@ glslangValidator -V -o Atomsphere.frag.spv Atomsphere.frag glslangValidator -V -o gbuffer_opaque.vert.spv gbuffer_opaque.vert glslangValidator -V -o gbuffer_opaque.frag.spv gbuffer_opaque.frag -glslangValidator -V -o glFragCoord.frag.spv glFragCoord.frag \ No newline at end of file +glslangValidator -V -o gbuffer_composition.vert.spv gbuffer_composition.vert +glslangValidator -V -o gbuffer_composition.frag.spv gbuffer_composition.frag \ No newline at end of file diff --git a/src/SceneGraph/Camera.cpp b/src/SceneGraph/Camera.cpp index 28cae84c..41b3080b 100644 --- a/src/SceneGraph/Camera.cpp +++ b/src/SceneGraph/Camera.cpp @@ -28,9 +28,6 @@ namespace hgl void Camera::Refresh() { - matrix.vp_size.x=width; - matrix.vp_size.y=height; - if(type==CameraType::Perspective) matrix.projection=perspective(fov,width/height,znear,zfar); else