본문 바로가기

전체 글119

1.2 도형 - Draw Rectangle - 2 이전에 Rectangle 그리는 방법을 배웠습니다. 다른 방식의 사각형 렌더링 예제를 구현 해보도록 하겠습니다.그리고 두개의 사각형을 그려보도록 하겠습니다. 전 예제에서는 사각형을 그리기 위해서는좌측하단, 우측상단 두개의 좌표를 구하면서 시작을 했었습니다. 이번에는 소스를 보면서 시작 하도록 하겠습니다.float rect(float2 pt, float2 size, float2 center) { float2 p = pt - center; float2 halfSize = size * 0.5; float2 result = step(-halfSize, p) - step(halfSize, p); return result.x * result.y;}pt에서 cente.. 2023. 7. 9.
1.2 도형 - Draw Rectangle - 1 지난 시간 원에 이어서 사각형을 렌더링 해봅시다.결국은 동일한 원리 이지만, 이해를 돕기 위해 2가지 방법을 설명 드립니다. 사각형을 렌더링 함수를 rect라고 정의 하겠습니다.함수의 인자는 3가지 입니다.1) float2 position 2) float2 size 3) float2 center첫 번째는 모든 픽셀 정점의 위치 값두 번째는 사각형의 가로 세로 길이세 번째는 사각형의 중심 rect함수의 리턴값이 1이면 해당 픽셀이 사각형 내부로 정의 합니다. 사각형의 영역을 정의하기 위해서는 2개의 정보가 필요합니다.사각형 기준으로 좌측하단 좌표와, 우측상단 좌표, 이 두가지 좌표만 있으면 사각형을 그릴수 있습니다.1> 먼저 좌표를 구해봅시다. 좌측 하단좌표 A지점의 좌표는center 좌표에서 x좌표는 (.. 2023. 7. 9.
1.1 도형 - draw Circle 지난시간 step 함수를 사용해서 정점 범위 기준으로 4분면 렌더링을 해보고, smoothstep을 사용해서 특정 부분 블렌딩을 해보았습니다. 이번엔 원을 그려봅시다. 원 정점좌표를 만드는 것이 아니라, 원에 해당하는 픽셀들을 선택한 후 픽셀의 색을 입히는 과정입니다. step함수와 length 함수를 사용해서 작성합니다. 클립스페이스 좌표계의 정중앙은 원점 입니다. 원점과 픽셀 간 길이를 내가 원하는 반지름과 비교하여 작은 경우만 색을 칠해주면 됩니다. isCircle = 1 - step(radius, length(position)); length 함수를 사용해서 원점과 픽셀간 거리를 구하고, step함수를 사용하면 다음과 같은 리턴값을 얻습니다. radius < 원점과 픽셀간 거리 : 원 외부 영역 .. 2023. 7. 9.
기초 3. 블렌딩 해보자 (step, smoothstep) 이번에도 2강에 이어서 블렌딩을 해보자.기존 코드와 달라진 것은 frag 쉐이더 함수내부 사용한 API가 바뀐 것 외에 없다. 하지만 vertex shader를 복습을 하고 넘어가자.UnityObejctToClipPos 함수는 로컬 좌표계를 클립 좌표계로 이동한다.유니티 클립 좌표계는 범위가 -0.5 ~ 0.5와 같다.frag shader에서 전달받고 곱하기 2를 해서 좌표계의 범위는 -1 ~ 1이 된다. 아래에서 사용한 함수는 step 함수와 smoothstep 함수이다.참고 > https://developer.download.nvidia.com/cg/step.html step(edge, value) - edge > value면 0을 리턴 , edge smoothstep(lowEdge, highEd.. 2023. 7. 6.