Noise Shader

개편된 다이버스트를 둘러보다 4강 Shader 알고리즘의 원리 3번째 이라는 글을 발견하고 공부해봤습니다. 예전에 한번 처음부터 정주행 한다고 한번 쭉 본적이 있었는데 그 때는 못 본 글 같은데 여튼 Bitmap 과 Shader 에 관련한 글이 연재 되어있어서 이것들도 나중에 정독해봐야 할 듯 합니다.

override protected function calc($param:Object = null):void
{
	var originalColor:Vector.<Number>, shakeColor:Vector.<Number>, targetX:Number, targetY:Number;

	$param.rate = 1;

	//원래색을 구해온다.
	originalColor = sampleNearest( _outCoord[0], _outCoord[1] );

	//strength 만큼 랜덤위치 값을 가져온다.
	targetX = _outCoord[0] - Math.floor( $param.strength * Math.random() );
	targetY = _outCoord[1] - Math.floor( $param.strength * Math.random() );

	if (targetX >= 0 && targetX < $param.width - 1) {
		if (targetY >= 0 && targetY < $param.height-1) {
			shakeColor = sampleNearest( targetX, targetY );

			originalColor = shakeColor;
		}

	}

	_color = originalColor;
}

우선은 히카님이 올려놓은 예제를 이해하는데 촛점을 두었습니다. 아~~~ 잘만들어진 소스는 정말 아름다워요ㅠㅠ 클래스를 추상화하고 커맨드를 실행하는 부분만도 크게 도움이 되었습니다. 여튼 실제로 실행하는 부분은 일자무식하게 랜덤 위치에서 값을 가져와 원래 위치와 바꿔치기 하였습니다.

앞으로 이 부분을 잘 공부하면 다양한 노이즈 패턴도 만들 수 있을 것 같습니다.

2 thoughts on “Noise Shader”

    1. 2D 와 3D… 총괄적인 CG 작업을 정말 잘 이해하기 위해서는 Bitmap 과 Shader 의 이해가 꼭 필요 할 것 같습니다. 앞으로 모힐시대에는 더할나위 없구요. 이 것들을 공부하는데 있어 다이버스터 만큼 도움 되는 곳이 없네요. 앞으로도 좋은 글 계속 남겨주시기 바랍니다! (블로그 운영 안하겠다는 생각 하지 마시구요.. ㅎㅎㅎ)

Leave a Reply to sewonist Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.