diff --git a/Resources/oscilloscope/empty.jpg b/Resources/oscilloscope/empty.jpg index 51952db..49d2e17 100644 Binary files a/Resources/oscilloscope/empty.jpg and b/Resources/oscilloscope/empty.jpg differ diff --git a/Resources/oscilloscope/no_reflection.jpg b/Resources/oscilloscope/no_reflection.jpg index e83a073..c7904e2 100644 Binary files a/Resources/oscilloscope/no_reflection.jpg and b/Resources/oscilloscope/no_reflection.jpg differ diff --git a/Resources/oscilloscope/noise.jpg b/Resources/oscilloscope/noise.jpg index 7df423f..ef00989 100644 Binary files a/Resources/oscilloscope/noise.jpg and b/Resources/oscilloscope/noise.jpg differ diff --git a/Resources/oscilloscope/real.jpg b/Resources/oscilloscope/real.jpg deleted file mode 100644 index b961a43..0000000 Binary files a/Resources/oscilloscope/real.jpg and /dev/null differ diff --git a/Resources/oscilloscope/real.png b/Resources/oscilloscope/real.png new file mode 100644 index 0000000..f7cf7af Binary files /dev/null and b/Resources/oscilloscope/real.png differ diff --git a/Resources/oscilloscope/real_reflection.jpg b/Resources/oscilloscope/real_reflection.jpg deleted file mode 100644 index b0199ef..0000000 Binary files a/Resources/oscilloscope/real_reflection.jpg and /dev/null differ diff --git a/Resources/oscilloscope/real_reflection.png b/Resources/oscilloscope/real_reflection.png new file mode 100644 index 0000000..97144aa Binary files /dev/null and b/Resources/oscilloscope/real_reflection.png differ diff --git a/Resources/oscilloscope/vector_display.jpg b/Resources/oscilloscope/vector_display.jpg deleted file mode 100644 index 12f1c6a..0000000 Binary files a/Resources/oscilloscope/vector_display.jpg and /dev/null differ diff --git a/Resources/oscilloscope/vector_display.png b/Resources/oscilloscope/vector_display.png new file mode 100644 index 0000000..7be1c01 Binary files /dev/null and b/Resources/oscilloscope/vector_display.png differ diff --git a/Resources/oscilloscope/vector_display_reflection.jpg b/Resources/oscilloscope/vector_display_reflection.jpg deleted file mode 100644 index 66028f4..0000000 Binary files a/Resources/oscilloscope/vector_display_reflection.jpg and /dev/null differ diff --git a/Resources/oscilloscope/vector_display_reflection.png b/Resources/oscilloscope/vector_display_reflection.png new file mode 100644 index 0000000..15e3b46 Binary files /dev/null and b/Resources/oscilloscope/vector_display_reflection.png differ diff --git a/Source/visualiser/RecordingSettings.h b/Source/visualiser/RecordingSettings.h index 9919c48..bca706d 100644 --- a/Source/visualiser/RecordingSettings.h +++ b/Source/visualiser/RecordingSettings.h @@ -95,6 +95,14 @@ public: // not supported by all media players) return 50 * (1.0 - quality) + 1; } + + int getVideoToolboxQuality() { + if (parameters.losslessVideo.getBoolValue()) { + return 100; + } + double quality = juce::jlimit(0.0, 1.0, parameters.qualityEffect.getValue()); + return 100 * quality; + } bool recordingVideo() { return parameters.recordVideo.getBoolValue(); diff --git a/Source/visualiser/VisualiserComponent.cpp b/Source/visualiser/VisualiserComponent.cpp index 8d2fdab..25b5e67 100644 --- a/Source/visualiser/VisualiserComponent.cpp +++ b/Source/visualiser/VisualiserComponent.cpp @@ -421,6 +421,14 @@ void VisualiserComponent::setRecording(bool recording) { " -y" + " -pix_fmt yuv420p" + " -crf " + juce::String(recordingSettings.getCRF()) + +#if JUCE_MAC + #if JUCE_ARM + // use software encoding on Apple Silicon + " -c:v hevc_videotoolbox" + + " -q:v " + juce::String(recordingSettings.getVideoToolboxQuality()) + + " -tag:v hvc1" + + #endif +#endif " -vf vflip" + " \"" + tempVideoFile->getFile().getFullPathName() + "\""; @@ -821,12 +829,12 @@ void VisualiserComponent::setupTextures() { glBindFramebuffer(GL_FRAMEBUFFER, frameBuffer); // Create textures - lineTexture = makeTexture(1024, 1024); + lineTexture = makeTexture(2048, 2048); blur1Texture = makeTexture(512, 512); blur2Texture = makeTexture(512, 512); blur3Texture = makeTexture(128, 128); blur4Texture = makeTexture(128, 128); - renderTexture = makeTexture(1024, 1024); + renderTexture = makeTexture(2048, 2048); screenOpenGLTexture.loadImage(emptyScreenImage); screenTexture = { screenOpenGLTexture.getTextureID(), screenTextureImage.getWidth(), screenTextureImage.getHeight() }; @@ -1072,7 +1080,7 @@ void VisualiserComponent::drawCRT() { activateTargetTexture(blur1Texture); setShader(texturedShader.get()); - texturedShader->setUniform("uResizeForCanvas", lineTexture.width / 1024.0f); + texturedShader->setUniform("uResizeForCanvas", lineTexture.width / 2048.0f); drawTexture({lineTexture}); //horizontal blur 512x512 @@ -1131,7 +1139,7 @@ void VisualiserComponent::drawCRT() { outputShader->setUniform("uFishEye", screenOverlay == ScreenOverlay::VectorDisplay ? VECTOR_DISPLAY_FISH_EYE : 0.0f); outputShader->setUniform("uRealScreen", settings.parameters.screenOverlay->isRealisticDisplay() ? 1.0f : 0.0f); #endif - outputShader->setUniform("uResizeForCanvas", lineTexture.width / 1024.0f); + outputShader->setUniform("uResizeForCanvas", lineTexture.width / 2048.0f); juce::Colour colour = juce::Colour::fromHSV(settings.getHue() / 360.0f, 1.0, 1.0, 1.0); outputShader->setUniform("uColour", colour.getFloatRed(), colour.getFloatGreen(), colour.getFloatBlue()); drawTexture({ @@ -1250,7 +1258,7 @@ Texture VisualiserComponent::createScreenTexture() { glVertexAttribPointer(glGetAttribLocation(simpleShader->getProgramID(), "vertexPosition"), 2, GL_FLOAT, GL_FALSE, 0, nullptr); glBindBuffer(GL_ARRAY_BUFFER, 0); simpleShader->setUniform("colour", 0.01f, 0.05f, 0.01f, 1.0f); - glLineWidth(2.0f); + glLineWidth(4.0f); glDrawArrays(GL_LINES, 0, data.size() / 2); glBindTexture(GL_TEXTURE_2D, targetTexture.value().id); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); diff --git a/Source/visualiser/VisualiserComponent.h b/Source/visualiser/VisualiserComponent.h index 70ea65c..878041d 100644 --- a/Source/visualiser/VisualiserComponent.h +++ b/Source/visualiser/VisualiserComponent.h @@ -209,12 +209,12 @@ private: juce::Image emptyScreenImage = juce::ImageFileFormat::loadFrom(BinaryData::empty_jpg, BinaryData::empty_jpgSize); #if SOSCI_FEATURES - juce::Image oscilloscopeImage = juce::ImageFileFormat::loadFrom(BinaryData::real_jpg, BinaryData::real_jpgSize); - juce::Image vectorDisplayImage = juce::ImageFileFormat::loadFrom(BinaryData::vector_display_jpg, BinaryData::vector_display_jpgSize); + juce::Image oscilloscopeImage = juce::ImageFileFormat::loadFrom(BinaryData::real_png, BinaryData::real_pngSize); + juce::Image vectorDisplayImage = juce::ImageFileFormat::loadFrom(BinaryData::vector_display_png, BinaryData::vector_display_pngSize); juce::Image emptyReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::no_reflection_jpg, BinaryData::no_reflection_jpgSize); - juce::Image oscilloscopeReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::real_reflection_jpg, BinaryData::real_reflection_jpgSize); - juce::Image vectorDisplayReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::vector_display_reflection_jpg, BinaryData::vector_display_reflection_jpgSize); + juce::Image oscilloscopeReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::real_reflection_png, BinaryData::real_reflection_pngSize); + juce::Image vectorDisplayReflectionImage = juce::ImageFileFormat::loadFrom(BinaryData::vector_display_reflection_png, BinaryData::vector_display_reflection_pngSize); OsciPoint REAL_SCREEN_OFFSET = { 0.02, -0.15 }; OsciPoint REAL_SCREEN_SCALE = { 0.6 }; diff --git a/osci-render.jucer b/osci-render.jucer index 36f3f2c..85c4e9d 100644 --- a/osci-render.jucer +++ b/osci-render.jucer @@ -37,13 +37,13 @@ - - - - + + + + diff --git a/sosci.jucer b/sosci.jucer index 57a5126..c703378 100644 --- a/sosci.jucer +++ b/sosci.jucer @@ -32,13 +32,13 @@ - - - - + + + +