ComputeShader에서 난수의 편향을 조사해 보았습니다.
2093 단어 Unity3D난수UnityComputeShaderGPU
경위
자주 사용하는 간편 GPU 난수 실장으로 파티클의 위치를 계산하면 상당히 편향했기 때문에, 이전부터 신경이 쓰였던 Xorwow와 비교해 보았다
손쉬운 난수 구현
float randSimple(float2 v)
{
return frac(sin(dot(v.xy, float2(12.9898, 78.233))) * 43758.5453);
}
평소에는 인수에 시간 등의 값을 섞어 사용하고 있었기 때문에 문제 없었지만
이번에는 같은 시드에서 같은 상태가 되는 재현성을 원했기 때문에 출력을 입력에 피드백하는 사용법을 했던 곳
꽤 편향된 것처럼 보였다.
환경
windows10
unity5.6.1f1
비교
위가 손쉽게 난수이고 아래가 Xorwow
1프레임에 1회 난수를 계산하고 있어, 흰색 라인이 그 값, 1픽셀씩 출현수분하에 모여 가도록(듯이) 하고 있습니다
생각보다 훨씬 치우쳤다!
출처
Xorwow는 nobnak 님을 사용했습니다.
htps : // 기주 b. 이 m / b k / r를 얻는다.
Reference
이 문제에 관하여(ComputeShader에서 난수의 편향을 조사해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fuqunaga/items/8502f96d79314e0c8575
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
float randSimple(float2 v)
{
return frac(sin(dot(v.xy, float2(12.9898, 78.233))) * 43758.5453);
}
windows10
unity5.6.1f1
비교
위가 손쉽게 난수이고 아래가 Xorwow
1프레임에 1회 난수를 계산하고 있어, 흰색 라인이 그 값, 1픽셀씩 출현수분하에 모여 가도록(듯이) 하고 있습니다
생각보다 훨씬 치우쳤다!
출처
Xorwow는 nobnak 님을 사용했습니다.
htps : // 기주 b. 이 m / b k / r를 얻는다.
Reference
이 문제에 관하여(ComputeShader에서 난수의 편향을 조사해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fuqunaga/items/8502f96d79314e0c8575
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Xorwow는 nobnak 님을 사용했습니다.
htps : // 기주 b. 이 m / b k / r를 얻는다.
Reference
이 문제에 관하여(ComputeShader에서 난수의 편향을 조사해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fuqunaga/items/8502f96d79314e0c8575텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)