From 2d4ed7b25970ee8158e8a1adce23d76bcf448bf5 Mon Sep 17 00:00:00 2001 From: Andreas Grois Date: Sat, 24 Mar 2018 10:27:45 +0100 Subject: Re-Introduce symmetry in compute. Still missing in fragment and png. --- BuddhaTest/src/BuddhaTest.cpp | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'BuddhaTest/src') diff --git a/BuddhaTest/src/BuddhaTest.cpp b/BuddhaTest/src/BuddhaTest.cpp index cc6bc83..bbbd915 100644 --- a/BuddhaTest/src/BuddhaTest.cpp +++ b/BuddhaTest/src/BuddhaTest.cpp @@ -6,6 +6,7 @@ #include #include #include +#include void error_callback(int error, const char* description) { @@ -26,6 +27,17 @@ int main(int argc, char * argv[]) return 2; } + + + float imageRangeMinX = -2.0f; + float imageRangeMinY = -1.125f; + float imageRangeMaxX = 2.0f; + float imageRangeMaxY = 1.125f; + + + + + GLFWwindow* window; /* Initialize the library */ @@ -158,9 +170,24 @@ int main(int argc, char * argv[]) GLint widthUniformComputeHandle = glGetUniformLocation(ComputeShader, "width"); GLint heightUniformComputeHandle = glGetUniformLocation(ComputeShader, "height"); GLint iterationsPerDispatchHandle = glGetUniformLocation(ComputeShader, "iterationsPerDispatch"); + GLint imageRangeComputeHandle = glGetUniformLocation(ComputeShader,"effectiveImageRange"); glUniform4ui(orbitLengthUniformHandle,settings.orbitLengthRed,settings.orbitLengthGreen,settings.orbitLengthBlue,settings.orbitLengthSkip); glUniform1ui(widthUniformComputeHandle, settings.imageWidth); glUniform1ui(heightUniformComputeHandle, settings.imageHeight); + float effectiveImageRange[4]; + effectiveImageRange[0] = imageRangeMinX; + effectiveImageRange[2] = imageRangeMaxX; + if(imageRangeMinY*imageRangeMaxY < 0) + { + effectiveImageRange[1] = std::max(imageRangeMinY,-imageRangeMaxY); + effectiveImageRange[3] = std::max(-imageRangeMinY,imageRangeMaxY); + } + else + { + effectiveImageRange[1] = std::min(std::abs(imageRangeMinY),std::abs(imageRangeMaxY)); + effectiveImageRange[3] = std::max(std::abs(imageRangeMinY),std::abs(imageRangeMaxY)); + } + glUniform4f(imageRangeComputeHandle,effectiveImageRange[0],effectiveImageRange[1],effectiveImageRange[2],effectiveImageRange[3]); const uint32_t maxOrbitlength = std::max(std::max(settings.orbitLengthBlue,settings.orbitLengthGreen),settings.orbitLengthRed); glUniform1ui(totalIterationsUniformHandle, maxOrbitlength); -- cgit v1.2.3