본문 바로가기

전체 글63

08. 기본 수식 사용법 Constants (상수) float1, 2, 3, 4 ... 등등 Time : 지속적으로 올라가는 시간 Vertex Color : 특정 영역을 마스킹 할때 이걸로 하면 영역이 상당히 가볍게된다. 픽셀 쉐이더에 넘어오기 전에 사용하기 때문이다. 노멀라이징 되어서 나온다. 보통 DCC 레벨에서 영역 지정하고 보내는 편 https://www.youtube.com/watch?v=RrzOX1I7Pz4 https://www.youtube.com/watch?v=wyuLGnljyWA Coordinates TexCoord[0] : UV 혹은 0~1으로 진행하는 2차원 벡터 생성 PixelNormalWorldSpace : 월드공간계 기준으로 각 픽셀이 바라보는 노멀방향을 보여준다 VertexNormalWorldSpace.. 2023. 6. 2.
[셰이더 프로그래밍] 04. 기초적인 조명 쉐이더 (난반사) 빛을 구성하는 요소는 크게 난반사광 (Diffuse light) 정반사광 (specular light) 으로 나뉘어져 있다. 난반사광 수학적으로 난반사광은 어떻게 계산할 수 있을까? 게임에서 주로 사용하는 것은 람베르트 모델이다. 표면법선 과 입사광이 이루는 각의 코사인 값을 구하면 그것이 난반사광의 양이라고 얘기했다. 먼저 코사인 그래프를 살펴보자, 위 그래프를 보면 입사광과 표면 법선의 각도가 0일때, 결과(y축의 값) 가 1이 되었다. 그리고 각도가 늘어날수록 점점 작아지다가 90도가 되면 0이 된다. 여기서 더 나아가면 그 후로는 음수값이 된다. 실제 세계에선 빛의 각도에 따라 결과가 어떻게 될까? 앞의 그림에서 평면이 가장 빛날 때는 당연히 해가 중천일때다. 해가 저물어감에 따라 표면도 점점 어.. 2023. 6. 1.
벡터의 내적 내적의 정의 물체가 빛을 밭으면 밝은 부분과 어두운 부분이 생기는데 이런 명암을 컴퓨터그래픽으로 모델링 할 때 벡터의 내적 연산이 이용된다. 또한 위 사진에서 사과의 뒷부분(보이지 않는 곳)을 렌더링에서 제외시키기위한 계산에서도 벡터의 내적이 사용된다. 검은색으로 그려진 선은 각 폴리곤으로부터 카메라쪽을 향하는 벡터를 나타낸 것이다. 이 두 벡터 사이의 각도가 90도 이하라면 해당 폴리곤은 카메라를 바라보고 있다고 판단할 수 있다 (a,b) 반대로 각도가 90도보다 크다면 카메라를 등지고 있다고 판단 할수도 있겠다. (c,d) 그렇다면 이걸 어떻게 계산해야할지 살펴보자. 내적의 계산과정 백터의 내적을 계산하기 위해서는 먼저 차원이 같은 두 벡터가 필요하다. 벡터의 각 성분들끼리 곱셈을 한 뒤 그 결과를 .. 2023. 6. 1.
[셰이더 프로그래밍] 03. 텍스쳐매핑 텍스처매핑과 UV좌표 앞에서 3D물체를 이루는 구성요소는 삼각형이며 정점 3개로 삼각형을 만들 수 있다고 설명했었다. 그렇다면 삼각형 위에 이미지를 입히려면 어떤 방법을 써야할까? 먼저 이 삼각형의 왼쪽 꼭짓점에 해당 이미지의 오른쪽 귀퉁이 픽섹을 출력할 것 같은 명령을 내릴 수 있어야 한다. 삼각형은 정점 3개로 이루어져 있기 때문에 각 정점을 텍스쳐 위에 있는 한 픽셀에 대응시켜주면 된다. 그럼 텍스쳐 위에서 한 픽셀은 어떻게 가리킬 수 있을까? 텍스쳐란 결국 이미지 파일임으로 X=60 Y=101 에 있는 픽셀이라고 정의하면 될까? 만약 이렇게 정의한다면 추후 이미지 파일의 크기를 2배 늘리면 이것을 다시 X=120 Y=202으로 바꿔줘야만 할 것이다. 좋은 방법은 아니다. 그렇기때문에 텍스쳐 또한 .. 2023. 5. 31.