Unity/Shader 4

등고선

지형의 높이 표현을 하는 방법중 하나로 등고선이 있다. 개발 중 높이 표현을 하려고 하다 등고선이 생각나 쉐이더를 이용해 등고선을 만들어 보았다. 쉐이더는 아래 목록처럼 동작하도록 작성을 해보았다. 월드좌표 Y값 0을 기준으로 일정 간격마다 선이 그려진다. 간격은 조절 가능. 선의 두께 역시 조절 가능. 선의 색상, 알파 값 조절 가능 프로퍼티는 4가지로 아래와 같다. MainColor는 선의 색상, Alpha는 선의 투명도 HeightDepth는 선의 간격을 Thickness는 선의 두께에 해당한다. 그래프는 아래처럼 간단하다. 데모 씬 UI와 테스트 모습은 아래와 같다. 깃 링크 Hanjo92/ShaderAndMesh: Unity Shader Study & Portfolio (github.com) G..

Unity/Shader 2023.08.29

UI 뒷면 컬링하기 - Graph (2023)

개발을 하다보면 왼쪽과 같이 UI를 World Space로 둘 때가 있다. 이렇게 World Space로 둔 UI가 항상 유저(카메라)를 쳐다보지 않는다면 유저는 UI의 뒷면을 보게된다. UI의 경우 앞 뒤의 구분이 없다. 따라서 뒷면에 대한 컬링이 이루어지지 않아 항상 보이게 되고 다른 오브젝트나 UI에 가려지지 않는한 위 사진의 오른쪽처럼 뒤집어져 보이게 된다. 따라서 뒷면인 경우 그리지 않는 등의 작업을 하고싶다면 별도로 처리가 필요하다. 이미지 컴포넌트 뿐만 아니라 UI는 Material을 가질 수 있기 때문에 쉐이더를 만들고 그 쉐이더를 적용한 Material을 붙일 수 있다. UI 처리를 위해 쉐이더를 만들 때는 Create시 Sprite~~로 시작하는 그래프로 만들거나 그래프 옵션에서 Mat..

Unity/Shader 2023.03.20

Flat Shader(Unlit Shader)

유니티에서 오브젝트는 삼각형으로 이루어져 있다 따라서 삼각형을 받아 각 점의 노말을 같게 한다면 삼각형은 평평해 지게 된다 해당효과를 위해 프로퍼티는 쉐이더 파일을 처음 만들고 빛의 방향을 알려 줄 벡터 프로퍼티를 1개만 추가하면 된다. 쉐이더 코드 내부에서 Main Light의 방향을 가져오는 방법이 있지만 편의상 프로퍼티로 처리하였다 유니티에서 삼각형 데이터를 얻기 위해서는 지오메트리 쉐이더를 사용해야 한다 처음 Unlit 쉐이더를 생성하면 버텍스, 픽셀 쉐이더만 있기 때문에 지오메트리 쉐이더를 추가해야 한다. Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma geometry Geometry // 추가하는 부분 다음은 각 점의 노말..

Unity/Shader 2023.03.04

기울기 표현 그리드 - Graph(2023)

격자 형태로 지형을 표현하고 싶은 경우가 있는데 이런 경우 격자 매쉬를 계산을 통해 만들어야 한다 격자는 가로, 세로, 선의 두께, 칸의 개수 등으로 구성된다 [Header("Grid Options")] public float width = 1f; /// 가로 크기 [Range(1, 100)] public int horizonCount = 10; /// 가로 칸의 수 public float height = 1f; /// 세로 크기 [Range(1, 100)] public int verticalCount = 10; /// 세로 칸의 수 [Range(0f,0.1f)] public float thickness = 0.05f; /// 격자 칸의 두께 위 설정 값을 이용해 각 칸의 거리를 구할 수 있다 priva..

Unity/Shader 2023.03.04
728x90
반응형
LIST