2013-06-28 2 views
0

텍스처 좌표가없는 OpenGL의 평범하지 않은 메쉬 (모든 메쉬) 표면에 노이즈를 적용하는 데 문제가 있습니다. 기본적으로 표면에 노이즈 텍스처를 적용하려고하지만 텍스처 좌표가 없기 때문에 노이즈 텍스처를 적용 할 수 없습니다. 버텍스 쉐이더에서 텍스쳐 좌표를 생성하는 것은 큐브, 스퓌 어와 또는 객체 평면 좌표인지 여부에 관계없이 항상 약간의 텍스처 얼룩이 있습니다. 표면은 물체 평면 (XY)과 번짐OpenGL에서 텍스쳐 좌표가없는 OpenGL에서 노이즈를 적용합니다.

smearing with object planar http://img195.imageshack.us/img195/987/c3cz.png

변경 I는 랜덤 잡음 생성했던

Z 평면을 따라 좌표 걸쳐 큐브지도 번짐

smearing with cube map http://img811.imageshack.us/img811/3923/0ouu.png

좌표 프래그먼트 쉐이더 (fragment shader)는 모든 프레임을 바꾸기 때문에 필요하지 않습니다.

메시 표면 전체에 정적 인 균일 한 노이즈 분포가 필요합니다.

아무도 아이디어를 얻지 못했습니다.

답변

1

조각 쉐이더에서 각 픽셀에 대한 3D 모델 공간 좌표를 얻고 그 값에 따라 3D 노이즈를 사용할 수 있습니다.

+0

모델 공간 조각 좌표가 괜찮 으면 Texture3D 렌더링 대상에 쓰기가 잘되어야하지만 모델 공간 조각 좌표를 사용하여 다른 패스에서 텍스처를 샘플링 할 수 있습니까? – Stinomus

+1

위의 내 의견은 귀하의 답변에서 의미 한 바를 오해 한 것일 수 있습니다. 나는 지금 당신이 의미하는 바를 이해할 것입니다.이 값들을 텍스처로 굽는 대신 각 조각의 모델 공간 좌표를 계산하는 것을 의미하며 각 프레임마다 결정적인 노이즈 기능을 사용하는 것이 더 의미가 있습니다. – Stinomus

+0

@Stinomus 네, 그게 제가 말했던 것입니다. – Vasaka