diff --git a/ClickableTransparentOverlay.sln b/ClickableTransparentOverlay.sln new file mode 100644 index 0000000..c0b6511 --- /dev/null +++ b/ClickableTransparentOverlay.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.168 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClickableTransparentOverlay", "ClickableTransparentOverlay\ClickableTransparentOverlay.csproj", "{F5CF8972-D0DA-4FC0-8796-E7C60101C8EA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x64 = Debug|x64 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F5CF8972-D0DA-4FC0-8796-E7C60101C8EA}.Debug|x64.ActiveCfg = Debug|x64 + {F5CF8972-D0DA-4FC0-8796-E7C60101C8EA}.Debug|x64.Build.0 = Debug|x64 + {F5CF8972-D0DA-4FC0-8796-E7C60101C8EA}.Release|x64.ActiveCfg = Release|x64 + {F5CF8972-D0DA-4FC0-8796-E7C60101C8EA}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {CC9A7790-CFC1-4D4F-AE2C-177A80D122C8} + EndGlobalSection +EndGlobal diff --git a/ClickableTransparentOverlay/ClickableTransparentOverlay.csproj b/ClickableTransparentOverlay/ClickableTransparentOverlay.csproj new file mode 100644 index 0000000..5258ce8 --- /dev/null +++ b/ClickableTransparentOverlay/ClickableTransparentOverlay.csproj @@ -0,0 +1,99 @@ + + + + + Debug + AnyCPU + {F5CF8972-D0DA-4FC0-8796-E7C60101C8EA} + Library + Properties + ClickableTransparentOverlay + ClickableTransparentOverlay + v4.7.2 + 512 + true + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + AnyCPU + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + true + bin\x64\Debug\ + DEBUG;TRACE + full + x64 + prompt + MinimumRecommendedRules.ruleset + + + bin\x64\Release\ + TRACE + true + pdbonly + x64 + prompt + MinimumRecommendedRules.ruleset + + + + ..\packages\MouseKeyHook.5.6.0\lib\net40\Gma.System.MouseKeyHook.dll + + + ..\packages\ImGui.NET.1.66.0\lib\netstandard2.0\ImGui.NET.dll + + + + ..\packages\System.Buffers.4.5.0\lib\netstandard2.0\System.Buffers.dll + + + + + ..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll + + + ..\packages\System.Runtime.CompilerServices.Unsafe.4.5.2\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + + \ No newline at end of file diff --git a/ClickableTransparentOverlay/Properties/AssemblyInfo.cs b/ClickableTransparentOverlay/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..998d9a1 --- /dev/null +++ b/ClickableTransparentOverlay/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ClickableTransparentOverlay")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ClickableTransparentOverlay")] +[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(true)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f5cf8972-d0da-4fc0-8796-e7c60101c8ea")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/ClickableTransparentOverlay/Shaders/GLSL/imgui-frag.glsl b/ClickableTransparentOverlay/Shaders/GLSL/imgui-frag.glsl new file mode 100644 index 0000000..85e5ee9 --- /dev/null +++ b/ClickableTransparentOverlay/Shaders/GLSL/imgui-frag.glsl @@ -0,0 +1,13 @@ +#version 330 core + +uniform sampler2D FontTexture; + +in vec4 color; +in vec2 texCoord; + +out vec4 outputColor; + +void main() +{ + outputColor = color * texture(FontTexture, texCoord); +} diff --git a/ClickableTransparentOverlay/Shaders/GLSL/imgui-vertex.glsl b/ClickableTransparentOverlay/Shaders/GLSL/imgui-vertex.glsl new file mode 100644 index 0000000..997ce0d --- /dev/null +++ b/ClickableTransparentOverlay/Shaders/GLSL/imgui-vertex.glsl @@ -0,0 +1,20 @@ +#version 330 core + +uniform ProjectionMatrixBuffer +{ + mat4 projection_matrix; +}; + +in vec2 in_position; +in vec2 in_texCoord; +in vec4 in_color; + +out vec4 color; +out vec2 texCoord; + +void main() +{ + gl_Position = projection_matrix * vec4(in_position, 0, 1); + color = in_color; + texCoord = in_texCoord; +} diff --git a/ClickableTransparentOverlay/Shaders/HLSL/imgui-frag.hlsl b/ClickableTransparentOverlay/Shaders/HLSL/imgui-frag.hlsl new file mode 100644 index 0000000..63d175f --- /dev/null +++ b/ClickableTransparentOverlay/Shaders/HLSL/imgui-frag.hlsl @@ -0,0 +1,15 @@ +struct PS_INPUT +{ + float4 pos : SV_POSITION; + float4 col : COLOR0; + float2 uv : TEXCOORD0; +}; + +Texture2D FontTexture : register(t0); +sampler FontSampler : register(s0); + +float4 FS(PS_INPUT input) : SV_Target +{ + float4 out_col = input.col * FontTexture.Sample(FontSampler, input.uv); + return out_col; +} \ No newline at end of file diff --git a/ClickableTransparentOverlay/Shaders/HLSL/imgui-frag.hlsl.bytes b/ClickableTransparentOverlay/Shaders/HLSL/imgui-frag.hlsl.bytes new file mode 100644 index 0000000..2a9fbf5 Binary files /dev/null and b/ClickableTransparentOverlay/Shaders/HLSL/imgui-frag.hlsl.bytes differ diff --git a/ClickableTransparentOverlay/Shaders/HLSL/imgui-vertex.hlsl b/ClickableTransparentOverlay/Shaders/HLSL/imgui-vertex.hlsl new file mode 100644 index 0000000..55793c1 --- /dev/null +++ b/ClickableTransparentOverlay/Shaders/HLSL/imgui-vertex.hlsl @@ -0,0 +1,27 @@ +cbuffer ProjectionMatrixBuffer : register(b0) +{ + float4x4 ProjectionMatrix; +}; + +struct VS_INPUT +{ + float2 pos : POSITION; + float2 uv : TEXCOORD0; + float4 col : COLOR0; +}; + +struct PS_INPUT +{ + float4 pos : SV_POSITION; + float4 col : COLOR0; + float2 uv : TEXCOORD0; +}; + +PS_INPUT VS(VS_INPUT input) +{ + PS_INPUT output; + output.pos = mul(ProjectionMatrix, float4(input.pos.xy, 0.f, 1.f)); + output.col = input.col; + output.uv = input.uv; + return output; +} \ No newline at end of file diff --git a/ClickableTransparentOverlay/Shaders/HLSL/imgui-vertex.hlsl.bytes b/ClickableTransparentOverlay/Shaders/HLSL/imgui-vertex.hlsl.bytes new file mode 100644 index 0000000..572a045 Binary files /dev/null and b/ClickableTransparentOverlay/Shaders/HLSL/imgui-vertex.hlsl.bytes differ diff --git a/ClickableTransparentOverlay/Shaders/Metal/imgui-frag.metal b/ClickableTransparentOverlay/Shaders/Metal/imgui-frag.metal new file mode 100644 index 0000000..ff3cbe6 --- /dev/null +++ b/ClickableTransparentOverlay/Shaders/Metal/imgui-frag.metal @@ -0,0 +1,18 @@ +#include +using namespace metal; + +struct PS_INPUT +{ + float4 pos [[ position ]]; + float4 col; + float2 uv; +}; + +fragment float4 FS( + PS_INPUT input [[ stage_in ]], + texture2d FontTexture [[ texture(0) ]], + sampler FontSampler [[ sampler(0) ]]) +{ + float4 out_col = input.col * FontTexture.sample(FontSampler, input.uv); + return out_col; +} \ No newline at end of file diff --git a/ClickableTransparentOverlay/Shaders/Metal/imgui-frag.metallib b/ClickableTransparentOverlay/Shaders/Metal/imgui-frag.metallib new file mode 100644 index 0000000..18a3d73 Binary files /dev/null and b/ClickableTransparentOverlay/Shaders/Metal/imgui-frag.metallib differ diff --git a/ClickableTransparentOverlay/Shaders/Metal/imgui-vertex.metal b/ClickableTransparentOverlay/Shaders/Metal/imgui-vertex.metal new file mode 100644 index 0000000..73d649e --- /dev/null +++ b/ClickableTransparentOverlay/Shaders/Metal/imgui-vertex.metal @@ -0,0 +1,27 @@ +#include +using namespace metal; + +struct VS_INPUT +{ + float2 pos [[ attribute(0) ]]; + float2 uv [[ attribute(1) ]]; + float4 col [[ attribute(2) ]]; +}; + +struct PS_INPUT +{ + float4 pos [[ position ]]; + float4 col; + float2 uv; +}; + +vertex PS_INPUT VS( + VS_INPUT input [[ stage_in ]], + constant float4x4 &ProjectionMatrix [[ buffer(1) ]]) +{ + PS_INPUT output; + output.pos = ProjectionMatrix * float4(input.pos.xy, 0.f, 1.f); + output.col = input.col; + output.uv = input.uv; + return output; +} \ No newline at end of file diff --git a/ClickableTransparentOverlay/Shaders/Metal/imgui-vertex.metallib b/ClickableTransparentOverlay/Shaders/Metal/imgui-vertex.metallib new file mode 100644 index 0000000..2998b94 Binary files /dev/null and b/ClickableTransparentOverlay/Shaders/Metal/imgui-vertex.metallib differ diff --git a/ClickableTransparentOverlay/Shaders/SPIR-V/generate-spirv.bat b/ClickableTransparentOverlay/Shaders/SPIR-V/generate-spirv.bat new file mode 100644 index 0000000..62d1d99 --- /dev/null +++ b/ClickableTransparentOverlay/Shaders/SPIR-V/generate-spirv.bat @@ -0,0 +1,2 @@ +glslangvalidator -V imgui-vertex.glsl -o imgui-vertex.spv -S vert +glslangvalidator -V imgui-frag.glsl -o imgui-frag.spv -S frag diff --git a/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-frag.glsl b/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-frag.glsl new file mode 100644 index 0000000..2d1c1d7 --- /dev/null +++ b/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-frag.glsl @@ -0,0 +1,16 @@ +#version 450 + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +layout(set = 1, binding = 0) uniform texture2D FontTexture; +layout(set = 0, binding = 1) uniform sampler FontSampler; + +layout (location = 0) in vec4 color; +layout (location = 1) in vec2 texCoord; +layout (location = 0) out vec4 outputColor; + +void main() +{ + outputColor = color * texture(sampler2D(FontTexture, FontSampler), texCoord); +} diff --git a/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-frag.spv b/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-frag.spv new file mode 100644 index 0000000..c8d71cc Binary files /dev/null and b/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-frag.spv differ diff --git a/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-vertex.glsl b/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-vertex.glsl new file mode 100644 index 0000000..6fdab3f --- /dev/null +++ b/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-vertex.glsl @@ -0,0 +1,29 @@ +#version 450 + +#extension GL_ARB_separate_shader_objects : enable +#extension GL_ARB_shading_language_420pack : enable + +layout (location = 0) in vec2 vsin_position; +layout (location = 1) in vec2 vsin_texCoord; +layout (location = 2) in vec4 vsin_color; + +layout (binding = 0) uniform Projection +{ + mat4 projection; +}; + +layout (location = 0) out vec4 vsout_color; +layout (location = 1) out vec2 vsout_texCoord; + +out gl_PerVertex +{ + vec4 gl_Position; +}; + +void main() +{ + gl_Position = projection * vec4(vsin_position, 0, 1); + vsout_color = vsin_color; + vsout_texCoord = vsin_texCoord; + gl_Position.y = -gl_Position.y; +} diff --git a/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-vertex.spv b/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-vertex.spv new file mode 100644 index 0000000..795cd0e Binary files /dev/null and b/ClickableTransparentOverlay/Shaders/SPIR-V/imgui-vertex.spv differ diff --git a/ClickableTransparentOverlay/app.config b/ClickableTransparentOverlay/app.config new file mode 100644 index 0000000..8e3c0a1 --- /dev/null +++ b/ClickableTransparentOverlay/app.config @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ClickableTransparentOverlay/deps/cimgui.dll b/ClickableTransparentOverlay/deps/cimgui.dll new file mode 100644 index 0000000..2b1140e Binary files /dev/null and b/ClickableTransparentOverlay/deps/cimgui.dll differ diff --git a/ClickableTransparentOverlay/packages.config b/ClickableTransparentOverlay/packages.config new file mode 100644 index 0000000..63832ef --- /dev/null +++ b/ClickableTransparentOverlay/packages.config @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 18443fc..95a7dd2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ # ClickableTransparentOverlay -A library for creating clickable transparent overlay using windows API & ImGui.NET +A library for creating clickable transparent overlay using Win32 API and ImGui.NET + +# Dependencies +* cimgui lib ( VERSION 1.66 (Released 2018-11-22) x64 ) +* ImGui.NET +* Veldrid +* MouseKeyHook