Released as UPM package on OpenUPM.
- Add Scoped Registry "https://package.openupm.com"
- Add scope "jp.nobnak" in the registry
- Add package "Xorwow random" in Package Manager.
Include Namespaces.
using Xorwow;
using Xorwow.Extension;
Instantiate Xorwow.XorwowService class.
XorwowService _xorwow = new XorwowService(size * size);
Set Xorwow State Buffer on Compute Shader
compute.SetXorwowStateBuf(0, _xorwow);
Include Xorwow.cginc in Computer Shader
#include "Packages/jp.nobnak.random-xorwow/ShaderLibrary/Xorwow.cginc"
Get Random Value in Compute Shader.
uint randomUint = XorwowRandom(stateIndex);
float randomFloat = XorwowRandomFloat(stateIndex);
Finally, Call Dispose Method in OnDestroy()
_xorwow.Dispose();
Include Namespaces.
using Xorwow;
using Xorwow.Extension;
Instantiate Xorwow.XorwowService class.
XorwowService _xorwow = new XorwowService(size * size);
Set Xorwow State Buffer on Material and Make it a Random Write Target
Graphics.ClearRandomWriteTargets();
mat.SetXorwowStateBuf(_xorwow);
Graphics.SetRandomWriteTarget(1, _xorwow.XorwowStateBuf); // If number of Render Targets is 1
_outputTex.DiscardContents();
Graphics.Blit(null, _outputTex, mat);
Graphics.ClearRandomWriteTargets();
Include Xorwow.cginc in Fragment Shader
#include "Packages/jp.nobnak.random-xorwow/ShaderLibrary/Xorwow.cginc"
Get Random Value in Fragment Shader
float r = XorwowRandomFloat(i);
Finally, Destroy Xorwow State Buffer in OnDestroy()
_xorwow.Dispose();
- Marsaglia, G. (2003). Xorshift RNGs. Journal Of Statistical Software, 8(14), 1–6. Retrieved from http://www.jstatsoft.org/v08/i14/paper