vertex/fragment shaders noise function implementation fun