diff --git a/app/src/main/assets/shaders/bg.frag.spv b/app/src/main/assets/shaders/bg.frag.spv index 705a775..8642dc5 100644 Binary files a/app/src/main/assets/shaders/bg.frag.spv and b/app/src/main/assets/shaders/bg.frag.spv differ diff --git a/app/src/main/assets/shaders/bg.vert.spv b/app/src/main/assets/shaders/bg.vert.spv index 9569f0b..f261695 100644 Binary files a/app/src/main/assets/shaders/bg.vert.spv and b/app/src/main/assets/shaders/bg.vert.spv differ diff --git a/app/src/main/assets/shaders/simple_shader.frag.spv b/app/src/main/assets/shaders/simple_shader.frag.spv index da37f7e..828f1e5 100644 Binary files a/app/src/main/assets/shaders/simple_shader.frag.spv and b/app/src/main/assets/shaders/simple_shader.frag.spv differ diff --git a/app/src/main/assets/shaders/simple_shader.vert.spv b/app/src/main/assets/shaders/simple_shader.vert.spv index cf7123f..c82b6ee 100644 Binary files a/app/src/main/assets/shaders/simple_shader.vert.spv and b/app/src/main/assets/shaders/simple_shader.vert.spv differ 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 6bbc39d..39391f1 100644 Binary files a/app/src/main/assets/shaders/texture.frag.spv and b/app/src/main/assets/shaders/texture.frag.spv differ diff --git a/app/src/main/assets/shaders/texture.vert.spv b/app/src/main/assets/shaders/texture.vert.spv index edeb674..d407944 100644 Binary files a/app/src/main/assets/shaders/texture.vert.spv and b/app/src/main/assets/shaders/texture.vert.spv differ 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();