user-filled buffer로부터 원시 데이터를 읽어들여 그 후 파이프라인 단계에서 사용될 primitive types(line list, triangle strips 등등)데이터로 assemble하는 역할을 수행한다.
VS
input assembler 단계를 통과한 vertices들을 처리하는 단계. transformation, skinning, morphing, and per-vertex lighting과 같은 작업을 수행. vertex shader는 단일 input vertex을 받고 output으로 단일 vertex를 출력한다.
HS
다이렉트11은 테셀레이션(GPU에서 low-detail subdivision surface를 higher-detail primitves로 바꾸는)을 구현하기위한 3가지의 새로운 단계를 support합니다. Hull shader, tesselator, domain shader 단계가 그것입니다.
TS
도메인(quad, tri or line)을 더 많은 작은 오브젝트(triangles, points or lines)로 잘게 나누는 작업을 수행한다.
DS
잘게 나누어진 포인트의 vertex position를 계산하는 단계.
GS
정점을 input으로 받아 application-specified 쉐이더를 적용하고 생성된 정점들을 출력한다. 버텍스 쉐이더와는 다르게 기하쉐이더는 입력으로 full primitive의 정점을 받는다. 기하쉐이더는 edge 인접 원시 데이터들을 입력을 받을 수 있다.
SO
기하 쉐이더단계(또는 정점쉐이더 단계)에서 메모리에 있는 하나 이상의 버퍼로 정점 데이터를 연속적으로 출력하는 단계. 메모리에 출력된 데이터들은 pipeline에서 다시 읽어들일 수 있다.
RS
vector 정보를 레스터 이미지(픽셀)로 변환하는 단계.
PS
픽셀 라이팅이나 post-processing과 같은 쉐이딩을 가능하게하는 단계.
OM
최종출력되는 픽셀의 색상을 생성한다. depth/stencil를 수행하여 실제로 렌더링여부를 결정하고 최종색상을 blend 한다.
C#에서 프로퍼티는 우리가 만든 타입의 값을 외부에서 접근할 수 있도록 하면서 객체 지향에서의 캡슐화를 지원한다.
//property
public int HP
{
get{return hp;}
set
{
hp=value;
sliderHp.value = value;
}
}
private int hp;
..///
//사용 예시
private void AddDamage()
{
HP = HP - 1;
//앞 HP가 Set 뒤 HP가 Get 부분을 담당함
//HP-=1;
}
유니티 길찾기
Window -> AI -> Navigation
1. 맵오브젝트 선택 Navigation static으로 설정
2. 베이크
3. 네비 먹일 오브젝트에 Nav Mesh Agent 컴포넌트 추가
4. 스크립트 생성 using UnityEngine.AI;
5. NavmeshAgent agent; 타겟변수
void Start()
{
agent=GetComponent<NavmeshAgent>();
}
void Update()
{
//변수에 직접 넣거나
agent.destination = target.positon;
//함수에 넣는 방식 agent.SetDestination(target.position) 이 방법이 더 좋음
}
멈추고 싶을때
agent.isStopped = true;
//find 사용 예시 하이라이키 창에 모두 뒤져서 게임메니져를 찾아서 gm에다가 담아 넣는다
GameManager gm = GameObject.Find("GameManager").GetComponent<GameManager>();
//gm 스크립트에 있는 함수 Hit()를 호출 시에는 이렇게 쓴다.
gm.Hit();
Find를 쓰면 편하지만 하이라이키를 다 뒤져서 찾아다니기 때문에 하이라이키에 뭐가 많을 때는 찾기 힘들어져서 메모리 상 좋지 않다고 한다.
마치 컴퓨터가 장롱 속에서 게임 매니저라는 옷을 찾다가 게임이 멈춰버릴 수도 있다는 것?
세 번째 방법으로는
제일 직관적인 방법이다.
//변수 선언
public GameObject 스크립트;
// 인스펙터 창에 해당 오브젝트 끌어온다.
//함수 호출 사용시
스크립트.GetComponent<스크립트이름>().함수()
using TMPro;
public class Example : MonoBehaviour
{
private TextMeshPro numText;
private void Start()
{
numText = GetComponentInChildren<TextMeshPro>();
}
색상 변경 가능
//색상 변경
private void StateNumChange(bool b)
{
if (b)
numText.color = new Color32(255, 255, 255, 255);
else
numText.color = new Color32(100,100,100,255);
}
사실 numText.color = new Color(100,100,100,255); 변경이 안되서