본문 바로가기

Study

(13)
[Unity Shader] 1. 유니티 셰이더 소개 Shader : 셰이더 혹은 셰이더 프로그램은 GPU에서 동작하는 프로그램. Unity의 Shader Type Shader 그래픽스 파이프라인에서 가장 일반적으로 사용되는 셰이더 화면에 표현되는 픽셀의 색상을 정함 유니티에서 Shader Object를 사용하여 작동 Compute Shader 그래픽스 파이프라인외에서 GPU로 연산을 수행 Ray Tracing Shader Ray Tracing 관련 연산을 수행 Unity Shader 용어 정리 Shader 및 Shader program : GPU에서 실행되는 프로그램. 일반적으로 그래픽 파이프라인의 일부인 Shader를 의미. Shader Object : Shader Class의 인스턴스. 한개의 Shader Object는 Shader progam과 다른..
모던 객체 설계 기법 객체지향 설계 패턴을 제작할때 주의해야할 항목들이 있다. 이 항목들을 항상 유의 하면 설계를 해야 좋은 객체지향 설계 패턴을 제작할 수 있다. 줄여서 "SOLID기법" 이라고 한다. Single Responsibility Principle (단일 책임 원칙) 하나의 객체는 하나의 의무만 가지도록 설계한다. Open_Closed Principle (개방 폐쇄 원칙) 기존에 구현된 코드를 변경하지 않으면서 새로운 기능을 추가할 수 있도록 설계한다. Liskov Substitution Principle (리스코프 치환 원칙) 자식 객체를 부모 객체로 변경해도 작동에 문제 없을 정도로 상속을 단순히 사용한다. Interface Segregation Design (인터페이스 분리원칙) 객체가 구현해야 할 기능이 ..
3인칭 카메라 구현 Unity에서 3인칭 카메라를 구현해보자. 우선 3인칭 카메라의 생김새 부터 생각해보자. 일반적인 3인칭 카메라는 3D RPG게임에서 흔하게 찾아볼 수 있다. 이를 구현하기 위해 필요한 요소들을 정리해보자. - 카메라가 회전할 중심점 - 카메라가 중심점으로 부터 떨어져있는 거리(변동 가능해야함.) - 카메라가 중심점에서 구체 회전함. - 카메라부터 정해진 거리 사이에 장애물이 있을경우 카메라가 앞으로 당겨져와야함. 대충 이렇게가 앞에서 만들었던 일인칭 카메라와 다르게 고민해봐야할 요소들이다. 여기서는 바로 중심점이 중요하다. 상대좌표계를 이용하면 이를 간단하게 구현 할 수있다. 대략적인 구상도는 이렇다. CameraArm이라는 오브젝트에 카메라를 자식 오브젝트로 배치한 뒤 CameraArm의 뒤로 Arm..
1인칭 카메라 구현 Unity에서 1인칭 카메라를 구현해보자. 조작 방식은 다음과 같다. 이동 : W(앞), A(왼), S(뒤), D(오), Q(아래), E(위) 회전 : 마우스 우측버튼 클릭후 드래그 확대/축소 : 마우스 휠 부스트 : 왼쪽 Shift 초기화 : 스페이스바 일인칭 카메라의 조작을 담당할 클래스(FPSCameraController)를 생성한다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class FPSCameraController : MonoBehaviour { public float SpeedMove; //카메라 이동 속도 public float SpeedRotate; //카메라 회전 속도 pu..
클래스 Form1은(는) 디자인 가능하지만 파일의 첫 번째 클래스가 아닙니다. Visual Studio에서 디자이너는 파일의 첫 번째 클래스를 사용해야 합니다. 파일에서 첫 번째 클래스가 되도록 해당 클래.. 위 사진은 윈폼 개발중 발생한 에러이다.(이놈때문에 하루 날려먹음 -.,-) -클래스 Form1은(는) 디자인 가능하지만 파일의 첫 번째 클래스가 아닙니다. Visual Studio에서 디자이너는 파일의 첫 번째 클래스를 사용해야 합니다. 파일에서 첫 번째 클래스가 되도록 해당 클래스 코드를 이동한 다음 디자이너를 다시 로드하십시오. 나는 이 오류를 처음에 뭐지? 하고 디자인 창을 닫았다가 문제가 발생한 케이스이다. 해당 오류 발생후 디자인을 닫는 순간... 갑자기 어떠한 방법으로도 Form1.cs의 디자인 창을 열 수가 없게된다!! 그래서 해당 오류의 원인을 확인하고 싶어도 방법이 없는것... 일단 그래서 디자인창 부터 살려보기위해 구글링을 해본 결과 방법은 있었다. 프로젝트 파일을 텍스트 편집기로 연..
위치에 따른 "const"의 의미들 C++코딩중 "const"라는 단어 참 많이 보게된다. 간단하게 설명 하자면 const가 걸린 위치의 값이 변동 되지 않도록 상수화 시키는 명령어 라고 보면 될것이다. 그런데 이 const라는 명령어가 참 다양한 위치에 붙을 수 있고, 그위치마다 하는 짓이 약간씩 다 다르다는게 문제다. 그래서 이걸 좀 정리 해보고자 한다. 변수에서는 [const] [dataType] [const] [Pointer] [const] [VariableName] [const] [자료형] [const] [포인터] [const] [변수명] 멤버 함수에서는 [const] [dataType] [const] [Pointer] [const][Function([const]Parameters)] [const] {Function Codes} ..
UNITY Visual Studio에서 인텔리센스 먹통일때.. 유니티 개발중 어떤이유인지 모르겠으나 갑자기 잘되던 Visual Studio의 인텔리센스가 먹통이됐다. 어제까지만 해도 잘되던게 갑자기 이러니 참 아이러니 하다. 그래도 원인은 모르지만 해결방법은 간단했다. 유니티 에디터에서 Preferences > External Tools로 가보면 이런 설정창이 뜬다. 여기서 맨위의 External Script Editor를 현재 사용하는 스크립트 에디터 (Visual Studio 2022)로 바꿔주면 된다. 이렇게 바꾼뒤에도 고쳐지지 않았다면 현재 Visual Studio 솔루션(.sln)을 지우고 다시 생성해 보자.
Unity Shader - 등고선 shader만들기 일을 하면서 unity상의 지형 모델에 등고선을 표시해줘야 하는 일이 생겼다. 이를 유니티의 Shader를 이용하여 간단한 등고선 Shader를 구현하려 한다. 간단하게 구현한 만큼 고쳐야할 부분도 많으니 참고하길 바란다.... 고쳐져야 할부분: 1. 높이값이 0인부분에 선을 그릴 수 없음. 2. 높이값이 음수일 때와 양수일 때의 선이 그려지는 방향이 반대 Shader "Custom/ContourLine" { Properties { _MainTex ("Texture", 2D) = "white" {} _Color ("Main Color", Color) = (1,1,1,1) _LineColor ("Line Color", Color) = (1,1,1,1) _LineSharpness("Line Sharpness..