From b8bcd21a19058bd8e3c48af9a872c5767738b552 Mon Sep 17 00:00:00 2001 From: Edwin Jakobs Date: Wed, 5 Mar 2025 19:11:35 +0100 Subject: [PATCH] [orx-shade-styles] Add `visualizeNormals` shade style. --- orx-shade-styles/build.gradle.kts | 1 + .../kotlin/spatial/VisualizeNormals.kt | 11 ++++++ .../kotlin/spatial/DemoVisualizeNormals01.kt | 34 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 orx-shade-styles/src/commonMain/kotlin/spatial/VisualizeNormals.kt create mode 100644 orx-shade-styles/src/jvmDemo/kotlin/spatial/DemoVisualizeNormals01.kt diff --git a/orx-shade-styles/build.gradle.kts b/orx-shade-styles/build.gradle.kts index 7dcbea87..2065386a 100644 --- a/orx-shade-styles/build.gradle.kts +++ b/orx-shade-styles/build.gradle.kts @@ -26,6 +26,7 @@ kotlin { implementation(project(":orx-shapes")) implementation(project(":orx-image-fit")) implementation(project(":orx-camera")) + implementation(project(":orx-obj-loader")) } } } diff --git a/orx-shade-styles/src/commonMain/kotlin/spatial/VisualizeNormals.kt b/orx-shade-styles/src/commonMain/kotlin/spatial/VisualizeNormals.kt new file mode 100644 index 00000000..1ad0672a --- /dev/null +++ b/orx-shade-styles/src/commonMain/kotlin/spatial/VisualizeNormals.kt @@ -0,0 +1,11 @@ +package org.openrndr.extra.shadestyles.spatial + +import org.openrndr.draw.shadeStyle + +val visualizeNormals by lazy { + shadeStyle { + fragmentTransform = """ + x_fill = vec4(normalize(v_viewNormal)*0.5+0.5, 1.0) ; + """.trimIndent() + } +} \ No newline at end of file diff --git a/orx-shade-styles/src/jvmDemo/kotlin/spatial/DemoVisualizeNormals01.kt b/orx-shade-styles/src/jvmDemo/kotlin/spatial/DemoVisualizeNormals01.kt new file mode 100644 index 00000000..30748fb1 --- /dev/null +++ b/orx-shade-styles/src/jvmDemo/kotlin/spatial/DemoVisualizeNormals01.kt @@ -0,0 +1,34 @@ +package spatial + +import org.openrndr.WindowMultisample +import org.openrndr.application +import org.openrndr.draw.DrawPrimitive +import org.openrndr.extra.camera.Orbital +import org.openrndr.extra.objloader.loadOBJasVertexBuffer +import org.openrndr.extra.shadestyles.spatial.visualizeNormals +import org.openrndr.math.Vector3 + +fun main() { + application { + configure { + width = 720 + height = 720 + multisample = WindowMultisample.SampleCount(8) + } + + program { + val obj = loadOBJasVertexBuffer("demo-data/obj-models/suzanne/Suzanne.obj") + + extend(Orbital()) { + eye = Vector3(0.0, 0.0, 2.0) + } + extend { + + drawer.shadeStyle = visualizeNormals + drawer.vertexBuffer(obj, DrawPrimitive.TRIANGLES) + + } + + } + } +} \ No newline at end of file