본문 바로가기

분류 전체보기

(195)
[ 유니티 쉐이더 스타트업 ] 04 . 쉐이더랩에 관하여 [ 쉐이더 랩 ] [ 쉐이더랩] https://docs.unity3d.com/kr/530/Manual/SL-Shader.html ShaderLab 구문 - Unity 매뉴얼 Unity의 모든 셰이더 파일은 “ShaderLab”이라는 선언형 언어로 작성되어 있습니다. 이 파일에서 중첩 중괄호 구문은 셰이더를 서술하는 다양한 요소를 선언합니다. 예를 들어, 어떤 셰이더 프로퍼 docs.unity3d.com 유니티 쉐이더의 자체 스크립트 언어를 쉐이더랩이라고 한다 . 다양한 경우의 분기를 쉐이더랩이 자동을 작성해줌으로 사용자는 쉐이더랩의 문법에 맞추어 하나의 쉐이더만 작성하면 된다. [ 제작방식의 종류 ] 쉐이더랩을 이용한 제작방식은 크게 세가지로 나뉜다 . ShaderLab (쉐이더랩)으로만 작성하기 Sur..
[ Asset - ObiRope ] 08 . Rope / Rod의 사용 [ Actor 생성하기 ] [ Rope혹은 Rod Actor 의 생성] 물리효과에 반응하는 줄을 생성하기 위해 Obi Rope Actor를 생성하자 . 이때 , Solver와 Updater 가 없다면 자동으로 생성해줄것이다 . 생성시 자동으로 다음의 사항을 수행하지만 , 각자 생성했다면 다음의 사항들이 지켜져야 한다 . Solver의 자식으로 Actor (Rope등)가 들어 있어야 한다 . Updater에서 해당 Solver를 가지고 있어야 한다 . [ BluePrint 생성] BluePrint를 연결해줘야 Actor는 실제로 보여진다 . 우클릭 - Create - Obi - Rope BluePrint를 통해 생성해준다 . 생성된 BluePrint를 Actor에 연결해준다 . 다음과 같이 생성이 완료된다..
[ Asset - ObiRope ] 07 . 최적화 하기 [ 성능 향상하기 ] [ Burst 활성 여부 및 작업 디버거 및 안전 검사 비활성화 ] Obi Solver의 Backend가 Burst 인지 확인한다 . 비활성화시 코드가 벡터화 되지 않으므로 대부분의 수학연산비용이 눈에 띄게 증가하기 때문이다 . Jobs Debugger를 비활성화 한다 . 활성화시 Obi 코드 전체에 검사가 추가되어 속도가 느려지기 때문이다 . Leak Detection을 off 해준다 . 위와 같은 이유로 꺼준다 . [ 최대한 적은수의 SubSteps와 반복의 사용 ] SubSteps 는 Obi의 주요 품질/성능 트레이드오프이다 .(하나가 증가하면 하나는 감소하는 구조) 시뮬레이션의 시간 해상도(즉, 시뮬레이션이 업데이트되는 빈도)를 설정할 수 있습니다. 각 SubSteps 에서 ..
[ Asset - ObiRope ] 06 . 제약 유형 [ 제약 유형 ] [ 제약 유형 ] 충돌 제약 충돌 제약 조건은 입자를 충돌체 외부에 유지 하려고 합니다 . 높은 반복 횟수는 입자당 여러 충돌이 있을 때 더 강력한 충돌 감지를 생성합니다. 입자 충돌 제약 충돌 제약 조건과 동일하지만 입자 간에 충돌이 발생하는 경우입니다. 거리 제약 각 거리 제약 조건은 두 입자를 서로 고정된 거리에 유지하려고 합니다. 이들은 천과 로프의 탄력성을 담당합니다 . 반복 횟수가 많으면 더 높은 강성에 도달할 수 있으므로 로프/옷감의 신축성이 떨어집니다. 핀 제약 핀 제약 조건은 입자 와 rigidbody 에 힘을 가하여 상대적인 위치를 유지하도록 합니다. 이들은 동적 첨부 파일 에 의해 생성되고 사용됩니다 . 높은 반복 횟수는 핀 위치에서 드리프트의 양을 줄여 부착물을 더..
[ Asset - ObiRope ] 05 . Simulation [ Simulation ] [ simulation in obi ] Obi는 모든 물리적 시뮬레이션을 입자 (Particle) 및 제약 조건(constraints)의 집합으로 모델링한다 . 즉 , 입자는 자유롭게 움직이는 물질 덩어리이며 제약 조건은 입자의 동작을 제어하는 ​​규칙이다 . 각 제약 조건은 입자 집합과 (선택적으로) "외부" 세계에 대한 정보(충돌기, 강체, 바람, 기압 등)를 입력으로 받는다. 그런 다음 특정 조건을 충족하도록 입자의 위치를 ​​수정한다. 예를 들어, 거리 제약 조건을 통해 두 입자를 서로 특정 거리 내에 유지하려고 하거나, 충돌 제약 조건을 통해 입자가 충돌체 내부로 들어갈 수 없도록 하거나, 공기 역학적 제약조건을 통해 입자를 주변의 공기 흐름과 일치하는 위치에 배치 할..
[ 유니티 쉐이더 스타트업 ] 03 - 2 . 렌더링 파이프 라인 - 레스터라이저와 프래그먼트 셰이더 [ 레스터라이저] [직전의 상황] 버텍스쉐이더에서 정점3개를 클립공간의 정점3개로 변환하여 레스터이저에게 전달함 레스터라이저는 전달받은 정점으로부터 삼각형을 구성하고, 삼각형을 채우는 프래그먼트를 생성하여 프래그먼트 쉐이더에게 전달할 것이다 . [ 레스터 라이저 ] 이때 , 프리미티브란 원시적인 도형을 말한다 . 스캔변환은 정점들도부터 프리미티브 생성 , 프리미티브를 채우는 점들을 찾아낸다 . 레스터라이저는 생성된 프래그먼트의 값들을 정점들 사이 어떤 위치에 있냐에 따라 보간하여 값 결정한다 . 뷰포트 변환 2*2*1짜리 직육면체 공간에 있던 정점들을 스크린에 대응되는 공간인 스크린 공간으로 옮겨준다 . 스크린 공간은 실제 윈도우 화면(창의 해상)에 맞춰서 구성된다 . 뷰포트 변환을 적용하게 되면 공간의..
[ Asset - ObiRope ] 04 . Actor [ Obi Actor ] [ Obi Actor ] Actor는 천 조각, 밧줄, 유체 방사체 또는 소프트 바디등으로 나뉜다. 모든 Actor는 BluePrint를 입력으로 받는다. Actor는 BluePrint에 포함된 정보(입자 및 제약 조건)를 인스턴스화하여 Solver 가 시뮬레이션할 수 있도록 한다. 여러 Actor에서 동일한 BluePrint를 재사용할 수 있다. Actor를 시뮬레이션에 포함시키려면 Solver의 자식 이어야 한다. 런타임에 Actor 부모를 새 Solver로 바꾸 거나 원하는 경우 현재 Solver의 계층 구조에서 제거할 수 있다 . 시뮬레이션을 시작하고 실행하는 데 필요한 단계는 만들려는Actor 유형에 관계없이 매우 유사하다. 적절한 유형의 BluePrint 를 생성한다 ..
[ Asset - ObiRope ] 03 . Updater [ Obi Updater ] [ Obi Updater ] ObiUpdater는 실행 중 특정 지점에서 하나 이상의 솔버 시뮬레이션을 진행하는 구성 요소이다 . FixedUpdate() 중 나머지 물리학과 동기화하여 Solver 시뮬레이션을 업데이트하기를 할 수도 있다. 혹은 골격 애니메이션 후 또는 LateUpdate() 중에 물리를 업데이트 할 수 있다 . 시뮬레이션을 업데이트하는 시기와 방법을 완전히 제어하기 위해 자체 업데이트 구성 요소를 작성할 수도 있다. 일반적으로 Scene에는 하나의 Updater만 있는게 좋다 . 만약 여러 Updater가 있어야 한다면 적어도 동일한 Solver를 참조하는 것은 피해야 한다 . 또한 Updater 에서 참조하지 않는다면 Solver의 시뮬레이션은 업데이트 ..