본문 바로가기

TIL

[TIL]2024-2-27 / 45일차 - 심화 팀플 2일차

1. 오늘의 코드카타 - 명예의 전당(1)

 

답안 : 

//리스트를 만들어야할 것
//리스트.Count가==k일 때 리스트가 오름차 순이라면
//리스트[0]과 score[i]의 값을 비교하여 [i]가 더 높다면
//리스트에서 지우는 메소드 찾아보니 RemoveAt[0]
//[i]를 Add하고 [i]가 [0]보다 높은 것 과는 별개로 다른 것들 보다 높을 수 있으니
//재정렬 한번 해야함
//answer를 score.Length로 잡아줘야 하는 듯

using System;
using System.Collections.Generic; //리스트에 필요
using System.Linq;


public class Solution {
    public int[] solution(int k, int[] score) {
        int[] answer = new int[score.Length];
        List<int> ranking = new List<int>();
        
        for(int i = 0; i < score.Length; i++)
        {
            if(ranking.Count == k)
            {
                if(ranking[0] > score[i])
                {
                    answer[i] = ranking[0];
                    continue;
                }
                ranking.RemoveAt(0);
            }
            ranking.Add(score[i]);
            ranking.Sort();
            answer[i] = ranking[0];
        }
        return answer;
    }
}

 

2. 오늘의 작업 

 

팀플 기능 구현 부분은

일부 필요한 매니저 (PoolManager, ResourceManager, AttackManager)들을 만들고

공격기능 구현을 하고 있으나 애로사항이 발생하여 내일 완성되면 정리하고자 한다.

 

로직은 예전에 해본 것과 비슷하게 인풋 => AttackManager => Weapon : IWeapon => Bullet : Bullet으로 넘어가는 방식이다.

 

이후는 오늘 특강 세션 내용을 정리하고자 한다.

 

렌더링 용어들

  1. Vertices (버텍스)
    • 버텍스는 그래픽 객체의 꼭짓점을 나타냅니다.
    • 2D 평면에서는 버텍스는 (x, y) 좌표로 표현되며, 3D 공간에서는 (x, y, z) 좌표로 표현됩니다.
    • 객체의 형태와 구조를 정의하는 데 사용됩니다.
  2. Edges (모서리)
    • 모서리는 두 개의 버텍스를 연결하는 선분을 의미합니다.
    • 3D 객체를 구성하는 각각의 면을 정의하는 데 사용됩니다.
    • 모서리는 보통 폴리곤이나 다각형의 경계를 형성합니다.
  3. Faces (면)
    • 면은 버텍스나 모서리로 둘러싸인 평평한 영역을 말합니다.
    • 3D 모델에서 가장 중요한 구성 요소 중 하나이며, 일반적으로 폴리곤으로 표현됩니다.
    • 객체의 외관을 결정하는 데 중요한 역할을 합니다.
  4. Polygons (다각형)
    • 다각형은 폐점된 평평한 도형을 나타냅니다.
    • 버텍스나 모서리로 둘러싸인 영역으로, 두 개 이상의 삼각형으로 구성될 수 있습니다.
    • 폴리곤은 일반적으로 3D 모델의 표면을 나타내는 데 사용됩니다.
  5. Surfaces (표면)
    • 표면은 3D 모델의 외부 영역을 나타냅니다.
    • 일반적으로 객체의 외부를 형성하는 면이나 다각형을 포함합니다.
    • 렌더링 과정에서 빛과 재질의 효과가 표면에 적용됩니다.

 

렌더링 파이프라인(Rendering Pipeline)

렌더링 파이프라인(Rendering Pipeline)은 컴퓨터 그래픽스에서 3D 모델이나 장면을 화면에 표시하는 과정을 단계적으로 나열한 것입니다. 각 단계는 객체를 입력으로 받아 최종적으로 화면에 출력하는 데 필요한 정보를 계산하고 처리합니다.

  1. 고정 기능 파이프라인 (Fixed Function Pipeline)
    • 고정 기능 파이프라인은 이전에는 주로 사용되었으나 현재는 더 이상 권장되지 않는 방식입니다.
    • 그래픽 카드에 하드웨어로 구현된 고정된 단계들로 구성되어 있습니다.
    • 사용자는 각 단계를 직접 수정하거나 변경할 수 없으며, 제한된 기능을 사용해야 합니다.
    • 대부분의 고급 그래픽 효과를 구현하기 어려우며, 유연성이 부족합니다.
  2. 가능 기능 파이프라인 (Programmable Pipeline)
    • 가능 기능 파이프라인은 고정 기능 파이프라인의 한계를 극복하기 위해 개발되었습니다.
    • 그래픽 카드의 프로그래밍 가능한 스테이지를 사용하여 사용자가 단계를 직접 제어할 수 있습니다.
    • 사용자 정의 쉐이더를 사용하여 더 많은 그래픽 효과를 구현할 수 있으며, 높은 유연성을 제공합니다.
    • 대부분의 현대적인 그래픽 애플리케이션에서 사용되는 방식입니다.
  3. 전체 실시간 렌더링 파이프라인 (Full Real-Time Rendering Pipeline)
    • 실시간 렌더링을 위해 최적화된 파이프라인입니다.
    • 주로 게임 및 시뮬레이션 등의 실시간 그래픽 애플리케이션에서 사용됩니다.
    • 전체 파이프라인은 전통적인 렌더링 파이프라인에 더해 추가적인 단계 및 최적화가 포함됩니다.
    • 실시간 렌더링에서 필요한 모든 단계를 다루고 최신 기술을 적용합니다.
  4. 레이 트레이싱 파이프라인 (Ray Tracing Pipeline)
    • 레이 트레이싱은 광선이 물체와 상호작용하는 방식을 시뮬레이션하는 기술입니다.
    • 최근 그래픽 카드와 API 업데이트로 레이 트레이싱이 실시간 그래픽스에서 가능해졌습니다.
    • 기존의 레스터라이제이션 방식과는 다른 파이프라인을 사용하여 레이 트레이싱을 구현합니다.

유니티에서 사용되는 렌더링 파이프라인

유니티에서는 그래픽 처리를 위해 다양한 렌더링 파이프라인이 사용됩니다. 최신 버전의 유니티에서는 주로 Scriptable Render Pipeline(SRP)이라고 불리는 사용자 정의 렌더링 파이프라인을 사용합니다. 주요한 SRP에는 다음과 같은 것들이 있습니다.

  1. 유니버설 렌더링 파이프라인(Universal Render Pipeline, URP)
    • 경량화된 렌더링 파이프라인으로 모바일 및 다중 플랫폼에 적합합니다.
    • 효율적인 성능과 모바일 기기의 제한된 자원을 고려하여 설계되었습니다.
  2. 하이브리드 렌더링 파이프라인(Hybrid Render Pipeline, HRD)
    • 유니티 2018 이후 버전에서 사용 가능한 렌더링 파이프라인입니다.
    • 범용성과 성능을 모두 고려하여 개발되었습니다.
  3. 유니티 렌더링 파이프라인(Unity Built-in Render Pipeline, BRP)
    • 유니티 엔진의 기본 렌더링 파이프라인으로, 간단한 설정과 사용이 가능합니다.
    • 기본적인 렌더링 파이프라인으로 대부분의 프로젝트에 적합합니다.

렌더링 파이프라인 과정