[orx-noise] Add uniform hash glsl phrases
This commit is contained in:
117
orx-noise/src/commonMain/kotlin/phrases/UHash.kt
Normal file
117
orx-noise/src/commonMain/kotlin/phrases/UHash.kt
Normal file
@@ -0,0 +1,117 @@
|
||||
package org.openrndr.extra.noise.phrases
|
||||
|
||||
/**
|
||||
* uniform hash shader phrase
|
||||
*/
|
||||
val uhash11 = """
|
||||
#ifndef PHRASE_UHASH11
|
||||
#define PHRASE_UHASH11
|
||||
uint uhash11(uint x) {
|
||||
uint a = x;
|
||||
a = a ^ (a >> 16);
|
||||
a *= 0x7feb352du;
|
||||
a = a ^ (a >> 15);
|
||||
a *= 0x846ca68bu;
|
||||
a = a ^ (a >> 16);
|
||||
return a;
|
||||
}
|
||||
#endif
|
||||
"""
|
||||
|
||||
/**
|
||||
* uniform hash shader phrase
|
||||
*/
|
||||
val fhash11 = """
|
||||
$uhash11
|
||||
#ifndef PHRASE_FHASH11
|
||||
#define PHRASE_FHASH11
|
||||
float fhash11(float x) {
|
||||
uint a = uhash11(floatBitsToUint(x));
|
||||
return float(a) / 4294967296.0;
|
||||
}
|
||||
#endif
|
||||
"""
|
||||
|
||||
/**
|
||||
* uniform hash shader phrase
|
||||
*/
|
||||
val uhash12 = """
|
||||
$uhash11
|
||||
#ifndef PHRASE_UHASH12
|
||||
#define PHRASE_UHASH12
|
||||
uint uhash12(uvec2 x) {
|
||||
uint a = uhash11(x.y + uhash11(x.x));
|
||||
return a;
|
||||
}
|
||||
#endif
|
||||
"""
|
||||
|
||||
/**
|
||||
* uniform hash shader phrase
|
||||
*/
|
||||
val fhash12 = """
|
||||
$uhash12
|
||||
#ifndef PHRASE_FHASH12
|
||||
#define PHRASE_FHASH12
|
||||
float fhash12(vec2 x) {
|
||||
uint a = uhash12(floatBitsToUint(x));
|
||||
return float(a) / 4294967296.0;
|
||||
}
|
||||
#endif
|
||||
"""
|
||||
|
||||
/**
|
||||
* uniform hash shader phrase
|
||||
*/
|
||||
val uhash13 = """
|
||||
$uhash11
|
||||
#ifndef PHRASE_UHASH13
|
||||
#define PHRASE_UHASH13
|
||||
uint uhash13(uvec3 x) {
|
||||
uint a = uhash11(x.z + uhash11(x.y + uhash11(x.x)));
|
||||
return a;
|
||||
}
|
||||
#endif
|
||||
"""
|
||||
|
||||
/**
|
||||
* uniform hash shader phrase
|
||||
*/
|
||||
val fhash13 = """
|
||||
$uhash13
|
||||
#ifndef PHRASE_FHASH13
|
||||
#define PHRASE_FHASH13
|
||||
float fhash13(vec3 x) {
|
||||
uint a = uhash13(floatBitsToUint(x));
|
||||
return float(a) / 4294967296.0;
|
||||
}
|
||||
#endif
|
||||
"""
|
||||
|
||||
/**
|
||||
* uniform hash shader phrase
|
||||
*/
|
||||
val uhash14 = """
|
||||
$uhash11
|
||||
#ifndef PHRASE_UHASH14
|
||||
#define PHRASE_UHASH14
|
||||
uint uhash14(uvec4 x) {
|
||||
uint a = uhash11(x.w + uhash11(x.z + uhash11(x.y + uhash11(x.x))));
|
||||
return a;
|
||||
}
|
||||
#endif
|
||||
"""
|
||||
|
||||
/**
|
||||
* uniform hash shader phrase
|
||||
*/
|
||||
val fhash14 = """
|
||||
$uhash14
|
||||
#ifndef PHRASE_FHASH14
|
||||
#define PHRASE_FHASH14
|
||||
float fhash14(vec4 x) {
|
||||
uint a = uhash14(floatBitsToUint(x));
|
||||
return float(a) / 4294967296.0;
|
||||
}
|
||||
#endif
|
||||
"""
|
||||
28
orx-noise/src/jvmDemo/kotlin/phrases/DemoUHashPhrase01.kt
Normal file
28
orx-noise/src/jvmDemo/kotlin/phrases/DemoUHashPhrase01.kt
Normal file
@@ -0,0 +1,28 @@
|
||||
package phrases
|
||||
|
||||
import org.openrndr.application
|
||||
import org.openrndr.draw.shadeStyle
|
||||
import org.openrndr.extra.noise.phrases.*
|
||||
|
||||
/**
|
||||
* Demonstrate uniform hashing function phrase in a shadestyle
|
||||
*/
|
||||
fun main() {
|
||||
application {
|
||||
program {
|
||||
extend {
|
||||
/** A custom shadestyle */
|
||||
val ss = shadeStyle {
|
||||
fragmentPreamble = """$fhash13"""
|
||||
fragmentTransform = """
|
||||
float cf = fhash13(vec3(c_screenPosition, p_time));
|
||||
x_fill = vec4(cf, cf, cf, 1.0);
|
||||
""".trimIndent()
|
||||
parameter("time", seconds)
|
||||
}
|
||||
drawer.shadeStyle = ss
|
||||
drawer.circle(drawer.bounds.center, 100.0)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user