MCPcopy Create free account
hub / github.com/christophhart/HISE / compileRawCode

Method compileRawCode

hi_scripting/scripting/api/ScriptingGraphics.cpp:797–875  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

795}
796
797void ScriptingObjects::ScriptShader::compileRawCode(const String& code)
798{
799 compiledCode = code;
800
801 shaderCode = {};
802
803 for (auto& p : preprocessors)
804 {
805 shaderCode << "#define " << p.name << " " << p.value.toString() << "\n";
806 }
807
808 shaderCode << getHeader();
809
810 shaderCode << compiledCode;
811
812 shader = new OpenGLGraphicsContextCustomShader(shaderCode);
813
814 WeakReference<ScriptShader> safeShader(this);
815
816 iTime = Time::getMillisecondCounterHiRes();
817
818 shader->onShaderActivated = [safeShader](juce::OpenGLShaderProgram& pr)
819 {
820 if (safeShader == nullptr)
821 return;
822
823 auto thisTime = (float)(Time::getMillisecondCounterHiRes() - safeShader->iTime) * 0.001f;
824
825 auto lr = safeShader->localRect;
826 auto gr = safeShader->globalRect;
827
828 auto scale = safeShader->scaleFactor;
829
830 auto makeArray = [](var v1, var v2, var v3 = {})
831 {
832 Array<var> l;
833 l.add(v1);
834 l.add(v2);
835 if (!v3.isVoid())
836 l.add(v3);
837
838 return var(l);
839 };
840
841 safeShader->uniformData.set("iTime", thisTime);
842 safeShader->uniformData.set("uOffset", makeArray(gr.getX() - lr.getX() * scale, gr.getY() - lr.getY() * scale));
843 safeShader->uniformData.set("iResolution", makeArray(lr.getWidth(), lr.getHeight(), 1.0f));
844 safeShader->uniformData.set("uScale", scale);
845
846 for (const auto& p : safeShader->uniformData)
847 {
848 const auto& v = p.value;
849
850 auto name = p.name.toString().getCharPointer().getAddress();
851
852 if (v.isArray())
853 {
854 if (v.getArray()->size() == 2) // vec2

Callers

nothing calls this directly

Calls 15

varFunction · 0.85
setUniformMethod · 0.80
toStringMethod · 0.45
addMethod · 0.45
isVoidMethod · 0.45
setMethod · 0.45
getXMethod · 0.45
getYMethod · 0.45
getWidthMethod · 0.45
getHeightMethod · 0.45
getAddressMethod · 0.45
isArrayMethod · 0.45

Tested by

no test coverage detected