2014-02-28 5 views
0

잠깐 후에 Perlin Noise가 반복되지 않도록 피하고 쉬운 방법이 있습니까? 나는 끝없는 지형을 위해 그것을 사용하고 싶다. 그래서 같은 지형을 반복해서 가지고 싶지 않다. 그래서 나는 이것에 대한 해결책이 필요하다. 또한 프랙탈 브라운 운동과 결합하여 계산 시간을 절약하기 위해 hp로 GPU에 작성합니다.Perlin 노이즈 반복을 피하는 영리한 방법

답변

0

일종의, 예.

반복하지 않으려는 것은 낮은 16 비트 (자주 낮은 8 비트) 만 사용하여 각 버텍스와 연결할 임의 의사 그라디언트 벡터를 결정하기 때문입니다. 임의로 큰 반복 규모를 얻으려면 꼭지점에 래핑 된 해시를 사용하는 것이 좋습니다.

즉 : Xn을 X = & 255 내지 Yn = Y & 255 등 다음 대신 파마하여 여기서 내지 Xn + 파마 [전극 Yn] (새 사이 = (X & 255) ^로 대체 (하자 (x >> 256) & 255)^((x >> 16) & 255)^((x >> 24) & 255)^... {오버플로가 발생하지 않도록 비트 대신에 벡터 할당을 랜덤 화하는 룩업 테이블에서 발생한다. 그래디언트 선택 처리를 위해 퍼미션 [Xi + perm [Yi]]을 사용한다.

이 방법은 포인트의 높은 배수 (큰 스케일) 인덱스가 노이즈 벡터 할당에 계속 영향을 미칩니다.

fBm도 사용하고 있기 때문에 모든 옥타브가 동기화 된 후에는 지형이 진정으로 반복되므로 불협화음 코드를 사용하면 길어질 수 있습니다. {일반적으로 사용되는 단순한 2 ** n이 아닌이 옵션은 실제로 비트 시프트가 아닌 정수 나누기를 사용하기 때문에 계산 시간을 상당히 늘립니다.} 소수의 시퀀스를 사용하면 가능한 극단적 인 반복 길이를 제공해야합니다. 그러나 지속성 매개 변수의 선택에 따라, 이러한 치료는 여분의 플립이나 가치가 없을 수도 있습니다.