From b73e94b7bfbbbaed40ef234fff654a8bbc2dd0cc Mon Sep 17 00:00:00 2001 From: xiangsilian Date: Thu, 23 Oct 2025 21:16:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/shaders/bg.frag.spv | Bin 636 -> 564 bytes app/src/main/assets/shaders/bg.vert.spv | Bin 1836 -> 1764 bytes .../assets/shaders/simple_shader.frag.spv | Bin 572 -> 500 bytes .../assets/shaders/simple_shader.vert.spv | Bin 1504 -> 1432 bytes app/src/main/assets/shaders/texture.frag | 13 +++---------- app/src/main/assets/shaders/texture.frag.spv | Bin 1508 -> 1436 bytes app/src/main/assets/shaders/texture.vert.spv | Bin 2368 -> 2296 bytes app/src/main/cpp/main.cpp | 15 --------------- compile_shader.bat | 8 ++++++++ vulkan/Application.cpp | 4 ++++ vulkan/FaceApp.cpp | 13 +++++++++---- 11 files changed, 24 insertions(+), 29 deletions(-) create mode 100644 compile_shader.bat diff --git a/app/src/main/assets/shaders/bg.frag.spv b/app/src/main/assets/shaders/bg.frag.spv index 705a77558ccef94e61b6967822580f734dac8db7..8642dc5704b508f079a488ae44f9ab3ac07cefba 100644 GIT binary patch delta 23 ecmeyvvW114nMs+Qfq{{Mn}K5@cjm@D2N(f2Vg)(? delta 95 zcmdnO@`r_+nMs+Qfq{{Mn}K&CccwcF0~dq4PrSRozq^lXd~!iSd~r!-PHKEkW?pK1 hN@h`Na!F=cDgy%x0|%12%)I2B(i9{G8;cJz0sxXf9Bu#r diff --git a/app/src/main/assets/shaders/bg.vert.spv b/app/src/main/assets/shaders/bg.vert.spv index 9569f0bee7234b446fb51655775cd7dcc0f9d32b..f2616950c8816ebb4ddf2f07fcb4c6a68718c940 100644 GIT binary patch delta 23 ecmZ3(_k@?5nMs+Qfq{{Mn}K5@cjCq^6>I=B=LFgS delta 95 zcmaFDyM~XOnMs+Qfq{{Mn}K&CccMEB0~dq4PrSRozq^lXd~!iSd~r!-PHKEkW?pK1 gN@h`Na!F=cDgy%x0|%12%)I2B(i9{G8?!6f0E*fi4gdfE diff --git a/app/src/main/assets/shaders/simple_shader.frag.spv b/app/src/main/assets/shaders/simple_shader.frag.spv index da37f7ede672fe162b5322c32f5938a7836409a7..828f1e56b1fa987e9bc5cdb272d43039ab4f4c08 100644 GIT binary patch delta 23 ecmdnP@`ah3nMs+Qfq{{Mn}K5@cjm@D4U7ObP6YV? delta 95 zcmeyuyoZIGnMs+Qfq{{Mn}K&CccwcF0~dq4PrSRozq^lXd~!iSd~r!-PHKEkW?pK1 gN@h`Na!F=cDgy%x0|%12%)I2B(i9{G8;ctm0g>SxEdT%j diff --git a/app/src/main/assets/shaders/simple_shader.vert.spv b/app/src/main/assets/shaders/simple_shader.vert.spv index cf7123fbe1f034fcf872b733a735c8a4efd9c7f3..c82b6ee1f0d6fe05b6e481ed7af46eec53dd1611 100644 GIT binary patch delta 23 ecmaFBJ%gK@nMs+Qfq{{Mn}K5@cjCq^I;;RPR0MDU delta 95 zcmbQi{eYXBnMs+Qfq{{Mn}K&CccMEB0~dq4PrSRozq^lXd~!iSd~r!-PHKEkW?pK1 gN@h`Na!F=cDgy%x0|%12%)I2B(i9{G8?$v;0e>MIqyPW_ diff --git a/app/src/main/assets/shaders/texture.frag b/app/src/main/assets/shaders/texture.frag index 4b643fd..4103ffd 100644 --- a/app/src/main/assets/shaders/texture.frag +++ b/app/src/main/assets/shaders/texture.frag @@ -1,4 +1,4 @@ -#version 450 +#version 450 layout (binding = 1) uniform sampler2D samplerColor; layout (binding = 2) uniform sampler2D samplerColor_ex; @@ -18,21 +18,14 @@ void main() vec4 textureColor = color; - //if (textureColor.a < 0.1) - //{ - //textureColor = vec4(0.2, 0.2, 0.2, 0.5); - // discard; - //} - - // (0,0,1) ĵ + // 计算与 (0,0,1) 的点乘 float ndot = dot(N, vec3(0.0, 0.0, -1.0)); - // ֤ >= 0 + // 保证结果 >= 0 ndot = max(ndot, 0.0); vec4 blendedColor = mix(color_ex, color, ndot); outFragColor = blendedColor; -// outFragColor = vec4(1, 0, 0, 1); } \ No newline at end of file diff --git a/app/src/main/assets/shaders/texture.frag.spv b/app/src/main/assets/shaders/texture.frag.spv index 6bbc39db4e7864325193b710f078485bd09183db..39391f12ef6f1b57cf56e98fa94dca72e5bb17fc 100644 GIT binary patch delta 23 ecmaFDJ%^i{nMs+Qfq{{Mn}K5@ckadmDy#rAR0N0s delta 95 zcmbQk{e+vFnMs+Qfq{{Mn}K&Ccdk1N0~dq4PrSRozq^lXd~!iSd~r!-PHKEkW?pK1 gN@h`Na!F=cDgy%x0|%12%)I2B(i9{G8_QK$0foUEyZ`_I diff --git a/app/src/main/assets/shaders/texture.vert.spv b/app/src/main/assets/shaders/texture.vert.spv index edeb674ca95c98df78aaafa192d0e03f5ef2d55b..d407944c045e5ee26a47e32f8c83eb21172ddc26 100644 GIT binary patch delta 23 ecmX>g^h1!FnMs+Qfq{{Mn}K5@ckadm4IBVDaRn>@ delta 95 zcmew%ctD7onMs+Qfq{{Mn}K&Ccdk1N0~dq4PrSRozq^lXd~!iSd~r!-PHKEkW?pK1 gN@h`Na!F=cDgy%x0|%12%)I2B(i9{G8_OFx0H8!1U;qFB diff --git a/app/src/main/cpp/main.cpp b/app/src/main/cpp/main.cpp index 57f3879..b6ac97e 100644 --- a/app/src/main/cpp/main.cpp +++ b/app/src/main/cpp/main.cpp @@ -85,23 +85,8 @@ void processWithVulkan(uint8_t* data, int width, int height, int format, TextureLoadProcessWithVulkan(data, width, height, rowStride, dataSize); } -extern "C" -JNIEXPORT void JNICALL -Java_com_hmwl_face_FaceActivity_processImageNative(JNIEnv *env, jobject thiz, jobject buffer, - jint width, jint height, jint format, - jint row_stride, jint pixel_stride, - jint rotation) { -} - - -extern "C" -JNIEXPORT void JNICALL -Java_com_hmwl_face_FaceActivity_passDataToNative(JNIEnv *env, jobject thiz, jobject buffer, - jint point_count, jint width, jint height) { - -} extern "C" JNIEXPORT void JNICALL Java_com_hmwl_face_1sdk_FaceActivity_processImageNative(JNIEnv *env, jobject thiz, jobject buffer, diff --git a/compile_shader.bat b/compile_shader.bat new file mode 100644 index 0000000..3ea63b7 --- /dev/null +++ b/compile_shader.bat @@ -0,0 +1,8 @@ +glslangValidator -V app/src/main/assets/shaders/bg.frag -o app/src/main/assets/shaders/bg.frag.spv +glslangValidator -V app/src/main/assets/shaders/bg.vert -o app/src/main/assets/shaders/bg.vert.spv + +glslangValidator -V app/src/main/assets/shaders/texture.frag -o app/src/main/assets/shaders/texture.frag.spv +glslangValidator -V app/src/main/assets/shaders/texture.vert -o app/src/main/assets/shaders/texture.vert.spv + +glslangValidator -V app/src/main/assets/shaders/simple_shader.frag -o app/src/main/assets/shaders/simple_shader.frag.spv +glslangValidator -V app/src/main/assets/shaders/simple_shader.vert -o app/src/main/assets/shaders/simple_shader.vert.spv \ No newline at end of file diff --git a/vulkan/Application.cpp b/vulkan/Application.cpp index 4749ecf..1afe375 100644 --- a/vulkan/Application.cpp +++ b/vulkan/Application.cpp @@ -737,6 +737,10 @@ void Application::createTexture(VkDevice device, VkPhysicalDevice physicalDevice void Application::processWithVulkan(uint8_t* data, int width, int height, int rowStride, size_t dataSize, Texture& out_texture, bool srgb) { + if(!isInited()) + { + return; + } std::unique_lock lock(mtx); if (out_texture.image == VK_NULL_HANDLE) { diff --git a/vulkan/FaceApp.cpp b/vulkan/FaceApp.cpp index b60d57f..5c7dc78 100644 --- a/vulkan/FaceApp.cpp +++ b/vulkan/FaceApp.cpp @@ -512,13 +512,13 @@ void FaceApp::render(VkCommandBuffer commandBuffer) std::unique_lock lock_point(mtx_point); //Application::render(commandBuffer); - //vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, m_pipelineLayout_bg, 0, 1, &m_descriptor_set_bg, 0, NULL); - //vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, m_graphicsPipeline_bg); + vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, m_pipelineLayout_bg, 0, 1, &m_descriptor_set_bg, 0, NULL); + vkCmdBindPipeline(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, m_graphicsPipeline_bg); - //vkCmdPushConstants(commandBuffer, m_pipelineLayout_bg, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(float), &myFloatValue); + vkCmdPushConstants(commandBuffer, m_pipelineLayout_bg, VK_SHADER_STAGE_VERTEX_BIT, 0, sizeof(float), &myFloatValue); - //vkCmdDraw(commandBuffer, 6, 1, 0, 0); + vkCmdDraw(commandBuffer, 6, 1, 0, 0); vkCmdBindDescriptorSets(commandBuffer, VK_PIPELINE_BIND_POINT_GRAPHICS, m_pipelineLayout, 0, 1, &m_descriptor_set, 0, NULL); @@ -674,6 +674,11 @@ void FaceApp::uploadVertexData() { void FaceApp::update_face_vertex_buffer(float* pos, int pointCount) { + if(!isInited()) + { + return; + } + std::lock_guard lock(mtx_point); last_update_time = getCurrentTimeMillis();