/******************************************************************************/ /* Project - MudBun Publisher - Long Bunny Labs http://LongBunnyLabs.com Author - Ming-Lun "Allen" Chou http://AllenChou.net Based on project "webgl-noise" by Ashima Arts. Description : Array and textureless GLSL 2D simplex noise function. Author : Ian McEwan, Ashima Arts. Maintainer : ijm Lastmod : 20110822 (ijm) License : Copyright (C) 2011 Ashima Arts. All rights reserved. Distributed under the MIT License. See LICENSE file. https://github.com/ashima/webgl-noise */ /******************************************************************************/ #ifndef MUDBUN_RANDOM_NOISE #define MUDBUN_RANDOM_NOISE #include "NoiseCommon.cginc" float mbn_rand(float s) { return frac(sin(mbn_mod(s, 6.2831853)) * 43758.5453123); } float mbn_rand(float2 s) { float d = dot(s + 0.1234567, float2(1111112.9819837, 78.237173)); float m = mbn_mod(d, 6.2831853); return frac(sin(m) * 43758.5453123); } float mbn_rand(float3 s) { float d = dot(s + 0.1234567, float3(11112.9819837, 378.237173, 3971977.9173179)); float m = mbn_mod(d, 6.2831853); return frac(sin(m) * 43758.5453123); } float mbn_rand_range(float s, float a, float b) { return a + (b - a) * mbn_rand(s); } float2 mbn_rand_range(float2 s, float2 a, float2 b) { return a + (b - a) * mbn_rand(s); } float3 mbn_rand_range(float3 s, float3 a, float3 b) { return a + (b - a) * mbn_rand(s); } float2 mbn_rand_uvec(float2 s) { return normalize(float2(mbn_rand(s), mbn_rand(s * 1.23456789)) - 0.5); } float3 mbn_rand_uvec(float3 s) { return normalize(float3(mbn_rand(s), mbn_rand(s * 1.23456789), mbn_rand(s * 9876.54321)) - 0.5); } float2 mbn_uvec(float2 s) { return mbn_rand_uvec(s) * mbn_rand(s * 9876.54321); } float3 mbn_uvec(float3 s) { return mbn_rand_uvec(s) * mbn_rand(s * 1357975.31313); } #endif