diff --git a/build/osx/FFGLPlugins.xcodeproj/project.pbxproj b/build/osx/FFGLPlugins.xcodeproj/project.pbxproj index 0cce70d..79f5b15 100644 --- a/build/osx/FFGLPlugins.xcodeproj/project.pbxproj +++ b/build/osx/FFGLPlugins.xcodeproj/project.pbxproj @@ -84,6 +84,40 @@ 1B27092021639CEC002B8B05 /* Constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B27090B21635FB1002B8B05 /* Constants.cpp */; }; 1B27092121639CEC002B8B05 /* GLResources.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B27090A21635FB0002B8B05 /* GLResources.cpp */; }; 1B27092221639CEC002B8B05 /* Particles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B27090C21635FB1002B8B05 /* Particles.cpp */; }; + 5F2332542556E325004FDC0F /* FFGLLog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F442E338253DE801008313C0 /* FFGLLog.cpp */; }; + 5F73502E2497697A00CCCAFA /* FFGLParamFFT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480612306FD13007257C5 /* FFGLParamFFT.cpp */; }; + 5F73502F2497697A00CCCAFA /* FFGLParamOption.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6524807E2306FD14007257C5 /* FFGLParamOption.cpp */; }; + 5F7350302497697A00CCCAFA /* FFGLUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708D421635F82002B8B05 /* FFGLUtilities.cpp */; }; + 5F7350312497697A00CCCAFA /* FFGLPluginManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708B421635F6D002B8B05 /* FFGLPluginManager.cpp */; }; + 5F7350322497697A00CCCAFA /* FFGLScopedBufferBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708DC21635F82002B8B05 /* FFGLScopedBufferBinding.cpp */; }; + 5F7350332497697A00CCCAFA /* FFGLScopedShaderBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708E221635F83002B8B05 /* FFGLScopedShaderBinding.cpp */; }; + 5F7350342497697A00CCCAFA /* FFGLPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480702306FD13007257C5 /* FFGLPlugin.cpp */; }; + 5F7350352497697A00CCCAFA /* FFGLPluginInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708B621635F6D002B8B05 /* FFGLPluginInfo.cpp */; }; + 5F7350362497697A00CCCAFA /* FFGLPluginInfoData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708B721635F6D002B8B05 /* FFGLPluginInfoData.cpp */; }; + 5F7350372497697A00CCCAFA /* FFGL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708B321635F6D002B8B05 /* FFGL.cpp */; }; + 5F7350382497697A00CCCAFA /* FFGLParamEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6524807C2306FD14007257C5 /* FFGLParamEvent.cpp */; }; + 5F7350392497697A00CCCAFA /* FFGLScopedRenderBufferBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65BE5BD7231D65DA00CDDFA7 /* FFGLScopedRenderBufferBinding.cpp */; }; + 5F73503A2497697A00CCCAFA /* FFGLRandom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480662306FD13007257C5 /* FFGLRandom.cpp */; }; + 5F73503B2497697A00CCCAFA /* FFGLScreenQuad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708D521635F82002B8B05 /* FFGLScreenQuad.cpp */; }; + 5F73503C2497697A00CCCAFA /* FFGLSmoothValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480672306FD13007257C5 /* FFGLSmoothValue.cpp */; }; + 5F73503D2497697A00CCCAFA /* FFGLParamRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6524806F2306FD13007257C5 /* FFGLParamRange.cpp */; }; + 5F73503E2497697A00CCCAFA /* FFGLFBO.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708DE21635F82002B8B05 /* FFGLFBO.cpp */; }; + 5F73503F2497697A00CCCAFA /* FFGLParam.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480692306FD13007257C5 /* FFGLParam.cpp */; }; + 5F7350402497697A00CCCAFA /* FFGLThumbnailInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65D4D1BF23193C9200D12558 /* FFGLThumbnailInfo.cpp */; }; + 5F7350412497697A00CCCAFA /* FFGLMixer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480712306FD13007257C5 /* FFGLMixer.cpp */; }; + 5F7350422497697A00CCCAFA /* FFGLPluginSDK.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708BA21635F6E002B8B05 /* FFGLPluginSDK.cpp */; }; + 5F7350432497697A00CCCAFA /* FFGLScopedSamplerActivation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708D221635F82002B8B05 /* FFGLScopedSamplerActivation.cpp */; }; + 5F7350442497697A00CCCAFA /* FFGLParamText.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6524806C2306FD13007257C5 /* FFGLParamText.cpp */; }; + 5F7350452497697A00CCCAFA /* FFGLAudio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480792306FD14007257C5 /* FFGLAudio.cpp */; }; + 5F7350462497697A00CCCAFA /* FFGLScopedVAOBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708DA21635F82002B8B05 /* FFGLScopedVAOBinding.cpp */; }; + 5F7350472497697A00CCCAFA /* FFGLScopedFBOBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65BE5BD6231D65DA00CDDFA7 /* FFGLScopedFBOBinding.cpp */; }; + 5F7350482497697A00CCCAFA /* FFGLParamBool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480762306FD14007257C5 /* FFGLParamBool.cpp */; }; + 5F7350492497697A00CCCAFA /* FFGLParamTrigger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480782306FD14007257C5 /* FFGLParamTrigger.cpp */; }; + 5F73504A2497697A00CCCAFA /* FFGLScopedTextureBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708D321635F82002B8B05 /* FFGLScopedTextureBinding.cpp */; }; + 5F73504C2497697A00CCCAFA /* FFGLEffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 652480652306FD13007257C5 /* FFGLEffect.cpp */; }; + 5F73504D2497697A00CCCAFA /* FFGLShader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B2708E321635F83002B8B05 /* FFGLShader.cpp */; }; + 5F73504E2497697A00CCCAFA /* FFGLSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6524805F2306FD13007257C5 /* FFGLSource.cpp */; }; + 5F73505A249769B100CCCAFA /* SmoothnessTester.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5F735057249769B100CCCAFA /* SmoothnessTester.cpp */; }; 6524807F2306FD14007257C5 /* FFGLSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6524805F2306FD13007257C5 /* FFGLSource.cpp */; }; 652480802306FD14007257C5 /* FFGLSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6524805F2306FD13007257C5 /* FFGLSource.cpp */; }; 652480812306FD14007257C5 /* FFGLSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6524805F2306FD13007257C5 /* FFGLSource.cpp */; }; @@ -284,6 +318,10 @@ 2FD1224818853D700009EBA8 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; 2FD1225318853FFB0009EBA8 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; }; 2FD1226B188540470009EBA8 /* AddSubtract.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AddSubtract.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 5F7350532497697A00CCCAFA /* SmoothnessTester.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SmoothnessTester.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 5F735056249769B100CCCAFA /* bar.h.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = bar.h.glsl; sourceTree = ""; }; + 5F735057249769B100CCCAFA /* SmoothnessTester.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SmoothnessTester.cpp; sourceTree = ""; }; + 5F735058249769B100CCCAFA /* SmoothnessTester.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SmoothnessTester.h; sourceTree = ""; }; 6524805F2306FD13007257C5 /* FFGLSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FFGLSource.cpp; sourceTree = ""; }; 652480602306FD13007257C5 /* FFGLParamTrigger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FFGLParamTrigger.h; sourceTree = ""; }; 652480612306FD13007257C5 /* FFGLParamFFT.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FFGLParamFFT.cpp; sourceTree = ""; }; @@ -369,6 +407,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 5F73504F2497697A00CCCAFA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 65D4D1E323193D0000D12558 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -480,6 +525,7 @@ DB4B64161FF845920069DA80 /* Gradients.bundle */, A9F92EA9201A1C1500527E48 /* Particles.bundle */, 65D4D1E723193D0000D12558 /* CustomThumbnail.bundle */, + 5F7350532497697A00CCCAFA /* SmoothnessTester.bundle */, ); name = Products; sourceTree = ""; @@ -531,6 +577,17 @@ path = ../../source/lib/ffglquickstart; sourceTree = ""; }; + 5F735055249769B100CCCAFA /* SmoothnessTester */ = { + isa = PBXGroup; + children = ( + 5F735056249769B100CCCAFA /* bar.h.glsl */, + 5F735057249769B100CCCAFA /* SmoothnessTester.cpp */, + 5F735058249769B100CCCAFA /* SmoothnessTester.h */, + ); + name = SmoothnessTester; + path = ../../source/plugins/SmoothnessTester; + sourceTree = ""; + }; 65438A59231D3DC000461EA0 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -685,6 +742,7 @@ E8D767450C9195D90089BAEB /* source plugins */ = { isa = PBXGroup; children = ( + 5F735055249769B100CCCAFA /* SmoothnessTester */, 65D4D1C023193C9B00D12558 /* CustomThumbnail */, 1B27090821635FA2002B8B05 /* Particles */, A91E037820173C1F0018E2D0 /* Gradients */, @@ -712,6 +770,23 @@ productReference = 2FD1226B188540470009EBA8 /* AddSubtract.bundle */; productType = "com.apple.product-type.bundle"; }; + 5F73502B2497697A00CCCAFA /* SmoothnessTester */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5F7350502497697A00CCCAFA /* Build configuration list for PBXNativeTarget "SmoothnessTester" */; + buildPhases = ( + 5F73502C2497697A00CCCAFA /* Resources */, + 5F73502D2497697A00CCCAFA /* Sources */, + 5F73504F2497697A00CCCAFA /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SmoothnessTester; + productName = FFGLBrightness; + productReference = 5F7350532497697A00CCCAFA /* SmoothnessTester.bundle */; + productType = "com.apple.product-type.bundle"; + }; 65D4D1C323193D0000D12558 /* CustomThumbnail */ = { isa = PBXNativeTarget; buildConfigurationList = 65D4D1E423193D0000D12558 /* Build configuration list for PBXNativeTarget "CustomThumbnail" */; @@ -810,6 +885,7 @@ DB4B63E51FF845820069DA80 /* Add */, A9F92E9A201A1C1500527E48 /* Particles */, 65D4D1C323193D0000D12558 /* CustomThumbnail */, + 5F73502B2497697A00CCCAFA /* SmoothnessTester */, ); }; /* End PBXProject section */ @@ -822,6 +898,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 5F73502C2497697A00CCCAFA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 65D4D1C423193D0000D12558 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -894,6 +977,47 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 5F73502D2497697A00CCCAFA /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5F73502E2497697A00CCCAFA /* FFGLParamFFT.cpp in Sources */, + 5F73502F2497697A00CCCAFA /* FFGLParamOption.cpp in Sources */, + 5F7350302497697A00CCCAFA /* FFGLUtilities.cpp in Sources */, + 5F7350312497697A00CCCAFA /* FFGLPluginManager.cpp in Sources */, + 5F7350322497697A00CCCAFA /* FFGLScopedBufferBinding.cpp in Sources */, + 5F7350332497697A00CCCAFA /* FFGLScopedShaderBinding.cpp in Sources */, + 5F2332542556E325004FDC0F /* FFGLLog.cpp in Sources */, + 5F7350342497697A00CCCAFA /* FFGLPlugin.cpp in Sources */, + 5F7350352497697A00CCCAFA /* FFGLPluginInfo.cpp in Sources */, + 5F7350362497697A00CCCAFA /* FFGLPluginInfoData.cpp in Sources */, + 5F7350372497697A00CCCAFA /* FFGL.cpp in Sources */, + 5F7350382497697A00CCCAFA /* FFGLParamEvent.cpp in Sources */, + 5F7350392497697A00CCCAFA /* FFGLScopedRenderBufferBinding.cpp in Sources */, + 5F73503A2497697A00CCCAFA /* FFGLRandom.cpp in Sources */, + 5F73503B2497697A00CCCAFA /* FFGLScreenQuad.cpp in Sources */, + 5F73503C2497697A00CCCAFA /* FFGLSmoothValue.cpp in Sources */, + 5F73503D2497697A00CCCAFA /* FFGLParamRange.cpp in Sources */, + 5F73503E2497697A00CCCAFA /* FFGLFBO.cpp in Sources */, + 5F73503F2497697A00CCCAFA /* FFGLParam.cpp in Sources */, + 5F7350402497697A00CCCAFA /* FFGLThumbnailInfo.cpp in Sources */, + 5F7350412497697A00CCCAFA /* FFGLMixer.cpp in Sources */, + 5F7350422497697A00CCCAFA /* FFGLPluginSDK.cpp in Sources */, + 5F7350432497697A00CCCAFA /* FFGLScopedSamplerActivation.cpp in Sources */, + 5F7350442497697A00CCCAFA /* FFGLParamText.cpp in Sources */, + 5F7350452497697A00CCCAFA /* FFGLAudio.cpp in Sources */, + 5F7350462497697A00CCCAFA /* FFGLScopedVAOBinding.cpp in Sources */, + 5F7350472497697A00CCCAFA /* FFGLScopedFBOBinding.cpp in Sources */, + 5F7350482497697A00CCCAFA /* FFGLParamBool.cpp in Sources */, + 5F7350492497697A00CCCAFA /* FFGLParamTrigger.cpp in Sources */, + 5F73504A2497697A00CCCAFA /* FFGLScopedTextureBinding.cpp in Sources */, + 5F73504C2497697A00CCCAFA /* FFGLEffect.cpp in Sources */, + 5F73505A249769B100CCCAFA /* SmoothnessTester.cpp in Sources */, + 5F73504D2497697A00CCCAFA /* FFGLShader.cpp in Sources */, + 5F73504E2497697A00CCCAFA /* FFGLSource.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 65D4D1C523193D0000D12558 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1209,6 +1333,44 @@ }; name = Release; }; + 5F7350512497697A00CCCAFA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ""; + INFOPLIST_FILE = "FFGLPlugin-Info.plist"; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = bundle; + ZERO_LINK = NO; + }; + name = Debug; + }; + 5F7350522497697A00CCCAFA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = YES; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = ""; + INFOPLIST_FILE = "FFGLPlugin-Info.plist"; + INSTALL_PATH = "$(HOME)/Library/Bundles"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = bundle; + ZERO_LINK = NO; + }; + name = Release; + }; 65D4D1E523193D0000D12558 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1432,6 +1594,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 5F7350502497697A00CCCAFA /* Build configuration list for PBXNativeTarget "SmoothnessTester" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5F7350512497697A00CCCAFA /* Debug */, + 5F7350522497697A00CCCAFA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 65D4D1E423193D0000D12558 /* Build configuration list for PBXNativeTarget "CustomThumbnail" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/build/windows/FFGLPlugins.sln b/build/windows/FFGLPlugins.sln index bf233c2..fd5ba6b 100644 --- a/build/windows/FFGLPlugins.sln +++ b/build/windows/FFGLPlugins.sln @@ -18,6 +18,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Particles", "Particles.vcxp EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CustomThumbnail", "CustomThumbnail.vcxproj", "{01FC8291-A59A-4D36-9F2A-31E1D5998BD0}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SmoothnessTester", "SmoothnessTester.vcxproj", "{5081478F-EE1F-45AE-96C1-9E36A486539D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -44,6 +46,10 @@ Global {01FC8291-A59A-4D36-9F2A-31E1D5998BD0}.Debug|x64.Build.0 = Debug|x64 {01FC8291-A59A-4D36-9F2A-31E1D5998BD0}.Release|x64.ActiveCfg = Release|x64 {01FC8291-A59A-4D36-9F2A-31E1D5998BD0}.Release|x64.Build.0 = Release|x64 + {5081478F-EE1F-45AE-96C1-9E36A486539D}.Debug|x64.ActiveCfg = Debug|x64 + {5081478F-EE1F-45AE-96C1-9E36A486539D}.Debug|x64.Build.0 = Debug|x64 + {5081478F-EE1F-45AE-96C1-9E36A486539D}.Release|x64.ActiveCfg = Release|x64 + {5081478F-EE1F-45AE-96C1-9E36A486539D}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -54,6 +60,7 @@ Global {6858F0CB-DE74-406F-B56A-CC5514CAA952} = {26AC2413-23B7-4D1F-BB58-17D67106F3F1} {96F220F8-DF7E-49AB-9E51-394676061B00} = {26AC2413-23B7-4D1F-BB58-17D67106F3F1} {01FC8291-A59A-4D36-9F2A-31E1D5998BD0} = {26AC2413-23B7-4D1F-BB58-17D67106F3F1} + {5081478F-EE1F-45AE-96C1-9E36A486539D} = {26AC2413-23B7-4D1F-BB58-17D67106F3F1} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {28436461-C06F-497A-8594-636977E4CDAF} diff --git a/build/windows/SmoothnessTester.vcxproj b/build/windows/SmoothnessTester.vcxproj new file mode 100644 index 0000000..4b51540 --- /dev/null +++ b/build/windows/SmoothnessTester.vcxproj @@ -0,0 +1,175 @@ + + + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {5081478F-EE1F-45AE-96C1-9E36A486539D} + Win32Proj + 10.0.17763.0 + + + + DynamicLibrary + MultiByte + v141 + + + DynamicLibrary + MultiByte + v141 + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.40219.1 + false + false + + + ..\..\binaries\$(PlatformTarget)\$(Configuration)\ + $(PlatformTarget)\$(Configuration)\$(ProjectName)\ + + + ..\..\binaries\$(PlatformTarget)\$(Configuration)\ + $(PlatformTarget)\$(Configuration)\$(ProjectName)\ + + + + Disabled + WIN32;_DEBUG;_WINDOWS;_USRDLL;AVFFGLADDSUBTRACT_EXPORTS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + + Level3 + ProgramDatabase + ..\..\source\lib\;..\..\source\lib\ffgl\utilities\;%(AdditionalIncludeDirectories) + + + FFGLPlugins.def + true + $(TargetDir)$(TargetName).pdb + Windows + $(OutDir)$(ProjectName).lib + ..\..\..\source\common\opengl\lib + OpenGL32.lib;%(AdditionalDependencies) + + + + + WIN32;NDEBUG;_WINDOWS;_USRDLL;AVFFGLADDSUBTRACT_EXPORTS;%(PreprocessorDefinitions) + MultiThreadedDLL + + + Level3 + ProgramDatabase + ..\..\source\lib\;%(AdditionalIncludeDirectories) + + + FFGLPlugins.def + true + Windows + true + true + $(OutDir)$(ProjectName).lib + ..\..\..\source\common\opengl\lib + OpenGL32.lib;%(AdditionalDependencies) + + + + + + \ No newline at end of file diff --git a/build/windows/SmoothnessTester.vcxproj.filters b/build/windows/SmoothnessTester.vcxproj.filters new file mode 100644 index 0000000..cb9c9ef --- /dev/null +++ b/build/windows/SmoothnessTester.vcxproj.filters @@ -0,0 +1,230 @@ + + + + + lib + + + lib\ffgl + + + lib\ffgl + + + lib\ffgl + + + lib\ffgl + + + lib\ffgl + + + lib\ffgl + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + + lib\ffgl + + + + + lib + + + lib\ffgl + + + lib\ffgl + + + lib\ffgl + + + lib\ffgl + + + lib\ffgl + + + lib\ffgl + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglex + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + lib\ffglquickstart + + + + lib\ffgl + + + + + {052c3355-36a3-48e0-a67b-df93fa0b5704} + + + {c368377b-e6af-4f27-8939-6cf3330af81a} + + + {64103535-951b-4dc5-803c-dd9b50608c56} + + + {61c0cc5e-7bb7-4e9b-824a-5d72e34bfd4f} + + + \ No newline at end of file diff --git a/source/lib/ffglex/FFGLUtilities.cpp b/source/lib/ffglex/FFGLUtilities.cpp index ecb867a..0a2cf5e 100644 --- a/source/lib/ffglex/FFGLUtilities.cpp +++ b/source/lib/ffglex/FFGLUtilities.cpp @@ -10,6 +10,7 @@ #include #include #include +#include // for secondsSinceLaunch namespace ffglex { @@ -174,4 +175,20 @@ void Log( const std::string& message ) printf( "%s", ( message + "\n" ).c_str() ); #endif } + +static std::chrono::steady_clock::time_point m_startTime = std::chrono::steady_clock::time_point::min();// the time in seconds since the first time the method was called +float GetElapsedSeconds() +{ + if( m_startTime == std::chrono::steady_clock::time_point::min() ) + { + m_startTime = std::chrono::high_resolution_clock::now(); + return 0; + } + else + { + auto elapsed = std::chrono::high_resolution_clock::now() - m_startTime; + return (float)( std::chrono::duration_cast< std::chrono::milliseconds >( elapsed ).count() / 1000.0 ); + } +}; + }//End namespace ffglex diff --git a/source/lib/ffglex/FFGLUtilities.h b/source/lib/ffglex/FFGLUtilities.h index 1ee43a5..2c2bedc 100644 --- a/source/lib/ffglex/FFGLUtilities.h +++ b/source/lib/ffglex/FFGLUtilities.h @@ -197,4 +197,9 @@ void Log( const Args&... args ) Log( oss.str() ); } -}//End namespace ffglex \ No newline at end of file +/** +Returns the time in seconds since the first time the method was called. + */ +float GetElapsedSeconds(); + +}//End namespace ffglex diff --git a/source/plugins/SmoothnessTester/SmoothnessTester.cpp b/source/plugins/SmoothnessTester/SmoothnessTester.cpp new file mode 100644 index 0000000..17ad456 --- /dev/null +++ b/source/plugins/SmoothnessTester/SmoothnessTester.cpp @@ -0,0 +1,104 @@ +#include "SmoothnessTester.h" + +#include "bar.h.glsl" + +using namespace ffglex; + +#define PARAM_Width ( 0 ) +#define PARAM_Compare ( 1 ) + +static CFFGLPluginInfo PluginInfo( + PluginFactory< SmoothnessTester >, // Create method + "SS02", // Plugin unique ID + "Smoothness", // Plugin name + 2, // API major version number + 1, // API minor version number + 1, // Plugin major version number + 000, // Plugin minor version number + FF_SOURCE, // Plugin type + "Smoothness Tester", // Plugin description + "Used to visually test the rendering smoothness. The measured frame rate is an average. This plugin allows you to visually check for hiccups." // About +); + +SmoothnessTester::SmoothnessTester() : + m_Width( 0.05f ) +{ + // Input properties + SetMinInputs( 0 ); + SetMaxInputs( 0 ); + + // Parameters + SetParamInfof( PARAM_Width, "Width", FF_TYPE_STANDARD ); + SetParamInfof( PARAM_Compare, "Compare", FF_TYPE_BOOLEAN ); +} +FFResult SmoothnessTester::InitGL( const FFGLViewportStruct* vp ) +{ + bool success = barShader.Compile( bar::vertex, bar::fragment ); + success &= quad.Initialise(); + + if( !success ) + { + DeInitGL(); + return FF_FAIL; + } + + //Use base-class init as success result so that it retains the viewport. + return CFFGLPlugin::InitGL( vp ); +} +FFResult SmoothnessTester::ProcessOpenGL( ProcessOpenGLStruct* pGL ) +{ + ScopedShaderBinding shaderBinding( barShader.GetGLID() ); + + barShader.Set( "Width", m_Width ); + if ( m_Compare ) { + barShader.Set( "Time", GetElapsedSeconds() ); + } else { + barShader.Set( "Time", (float) hostTime / 1000.f ); + } + + quad.Draw(); + + return FF_SUCCESS; +} + +FFResult SmoothnessTester::DeInitGL() +{ + barShader.FreeGLResources(); + quad.Release(); + + return FF_SUCCESS; +} + +FFResult SmoothnessTester::SetFloatParameter( unsigned int dwIndex, float value ) +{ + switch( dwIndex ) + { + case PARAM_Width: + m_Width = value; + break; + case PARAM_Compare: + m_Compare = value > 0.5; + break; + default: + return FF_FAIL; + } + + return FF_SUCCESS; +} + +float SmoothnessTester::GetFloatParameter( unsigned int index ) +{ + switch( index ) + { + case PARAM_Width: + return m_Width; + break; + case PARAM_Compare: + return m_Compare ? 1.0f : 0.0f; + break; + default: + break; + } + + return 0.0f; +} diff --git a/source/plugins/SmoothnessTester/SmoothnessTester.h b/source/plugins/SmoothnessTester/SmoothnessTester.h new file mode 100755 index 0000000..0c578c6 --- /dev/null +++ b/source/plugins/SmoothnessTester/SmoothnessTester.h @@ -0,0 +1,23 @@ +#pragma once +#include + +class SmoothnessTester : public CFFGLPlugin +{ +public: + SmoothnessTester(); + + //CFFGLPlugin + FFResult InitGL( const FFGLViewportStruct* vp ) override; + FFResult ProcessOpenGL( ProcessOpenGLStruct* pGL ) override; + FFResult DeInitGL() override; + + FFResult SetFloatParameter( unsigned int dwIndex, float value ) override; + float GetFloatParameter( unsigned int index ) override; + +private: + float m_Width; + bool m_Compare; + + ffglex::FFGLShader barShader; + ffglex::FFGLScreenQuad quad; +}; diff --git a/source/plugins/SmoothnessTester/bar.h.glsl b/source/plugins/SmoothnessTester/bar.h.glsl new file mode 100755 index 0000000..e5799b4 --- /dev/null +++ b/source/plugins/SmoothnessTester/bar.h.glsl @@ -0,0 +1,40 @@ +#pragma once + +namespace bar { + +static const char vertex[] = R"(#version 410 core + + +// ----- vertex shader start ----- +layout( location = 0 ) in vec4 vPosition; + +uniform float Time; +uniform float Width; + +void main() +{ + float x = vPosition.x; + float y = vPosition.y * Width; + float yOffset = mix(sin(Time), sin(Time * 0.75), x * 0.5 + 0.5); + gl_Position = vec4(x, y + yOffset, vPosition.z, vPosition.w); +} +// ------ vertex shader end ------ + + +)"; +static const char fragment[] = R"(#version 410 core + + +// ----- fragment shader start ---- +out vec4 fragColor; + +void main() +{ + fragColor = vec4(1.0, 1.0, 1.0, 1.0); +} +// ------ fragment shader end ----- + + +)"; + +}