From b528d5bac9d376400c785e572961e25fe7c37975 Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Sat, 18 Jul 2020 18:55:36 +0200 Subject: [PATCH] [orx-shader-phrases] Add Shader.preprocessedFromUrls() --- .../src/main/kotlin/ShaderPreprocessor.kt | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/orx-shader-phrases/src/main/kotlin/ShaderPreprocessor.kt b/orx-shader-phrases/src/main/kotlin/ShaderPreprocessor.kt index d282ae6c..7ad01958 100644 --- a/orx-shader-phrases/src/main/kotlin/ShaderPreprocessor.kt +++ b/orx-shader-phrases/src/main/kotlin/ShaderPreprocessor.kt @@ -1,7 +1,9 @@ package org.openrndr.extra.shaderphrases +import org.openrndr.draw.Shader import org.openrndr.draw.codeFromURL import org.openrndr.extra.shaderphrases.annotations.ShaderPhrases +import org.openrndr.internal.Driver /** * Preprocess shader source. @@ -67,6 +69,9 @@ fun preprocessShader(source: String, symbols: Set = emptySet()): String return processed.joinToString("\n") } +fun String.preprocess() = preprocessShader(this) + + /** * Preprocess shader source from url * Looks for "#pragma import" statements and injects found phrases. @@ -75,4 +80,21 @@ fun preprocessShader(source: String, symbols: Set = emptySet()): String */ fun preprocessShaderFromUrl(url: String, symbols: Set = emptySet()): String { return preprocessShader(codeFromURL(url), symbols) -} \ No newline at end of file +} + +fun Shader.Companion.preprocessedFromUrls( + vsUrl: String, + tcsUrl: String? = null, + tesUrl: String? = null, + gsUrl: String? = null, + fsUrl: String): Shader { + + val vsCode = codeFromURL(vsUrl).preprocess() + val tcsCode = tcsUrl?.let { codeFromURL(it) }?.preprocess() + val tesCode = tesUrl?.let { codeFromURL(it) }?.preprocess() + val gsCode = gsUrl?.let { codeFromURL(it) }?.preprocess() + val fsCode = codeFromURL(fsUrl).preprocess() + val name = "$$vsUrl / $gsUrl / $fsUrl" + return Shader.createFromCode(vsCode, tcsCode, tesCode, gsCode, fsCode, name) +} +