From fad942eb5e394a0dd41ce836b127d4c0ae831665 Mon Sep 17 00:00:00 2001 From: thecreatorgrey Date: Wed, 24 Jul 2024 17:24:47 -0400 Subject: [PATCH] Added camera noise shader --- .../screenspace_shaders/camera_noise.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 ursina/shaders/screenspace_shaders/camera_noise.py diff --git a/ursina/shaders/screenspace_shaders/camera_noise.py b/ursina/shaders/screenspace_shaders/camera_noise.py new file mode 100644 index 00000000..0cd943ed --- /dev/null +++ b/ursina/shaders/screenspace_shaders/camera_noise.py @@ -0,0 +1,50 @@ +from ursina import Shader + + +camera_noise_shader = Shader( +fragment=''' +#version 430 + +uniform sampler2D tex; +uniform float noise_offset = 1; +uniform float strength = 1; +in vec2 uv; +out vec4 color; + +void main() { + vec3 rgb = texture(tex, uv).rgb; + + float noise = fract(sin(dot(uv+noise_offset, vec2(12.9898, 78.233))) * 43758.5453); + noise -= .5; + noise *= strength; + + rgb += noise; + + color = vec4(rgb.r, rgb.g, rgb.b, 1.0); +} + +''', +geometry='', +default_input={ + 'noise_offset':1, + 'strength':.2 +}) + + + +if __name__ == '__main__': + from ursina import * + app = Ursina() + + e = Entity(model='sphere', color=color.orange) + e = Entity(model='cube', y=-1) + camera.shader = camera_noise_shader + EditorCamera() + + #camera.set_shader_input("strength", .2) + + def update(): + # Since there isn't really a way to generate pseudorandom numbers in GLSL by themselves, this needs to be put here, otherwise the noise will be static. + camera.set_shader_input("noise_offset", random.randint(0, 100)/100) + + app.run()