Sprite와 Texture의 차이점은 무엇입니까?


27

나는 대학에 배정 될 과제를 가지고 있으며, 비디오 게임에 사용 된 텍스처와 그 진화 방법에 대해 논의해야합니다.

내 주요 질문은 스프라이트 사용 또는 다른 텍스처 방법 사용의 근본적인 차이점은 무엇입니까?

약간의 연구를 해본 결과 Sprites는 이미지를 단일 파일로 저장하고 애니메이션 등에 사용할 수 있으며 오래된 비디오 게임에서 일반적으로 사용되었으며 일반적으로 스프라이트를 모든 게임 비주얼로 사용했습니다. 이제는 현대 게임에서 기술이 발전하고 범프 매핑과 같은 다른 텍스처를 사용할 수 있으므로 스프라이트가 덜 사용되는 경향이 있습니다. 스프라이트는 오늘날 건강 막대 또는 장거리 텍스처와 같은 기능을 수용하기 위해 여전히 사용되지만.

그러나 스프라이트보다 텍스처를 사용하는 것의 주요 장점은 무엇입니까?



5
하나는 음료이고 다른 하나는 그렇지 않습니다. (이 농담으로 사과드립니다)
CAD97

답변:


37

하루가 끝나면 스프라이트와 텍스처는 이미지 일뿐입니다. 래스터 색상 데이터 블록입니다 (때로는 이미지가 아닌 데이터를 입력하기 위해 경계를 약간 밀어도). 구별은 주로 우리가 그것들을 어떻게 사용하는지에 있습니다.

원근감 왜곡없이 의도 된 렌더링 목적을 화면의 2D 격자에 직접 그려야하는 경우 일반적으로 이미지 (또는 여러 개의 개별 조각을 포함하는 이미지의 일부)를 "스프라이트"라고합니다. 따라서 실행중인 게임에서 보는 것은 기본적으로 이미지 파일 자체에서 보는 것입니다 (색조 색조 / 팔레트 스와핑 / 투명 효과 제외). 이는 2D 게임의 배경 타일 및 문자 / 대화 형 개체, 입자 및 오래된 스타일의 나무 및 관목 렌더링과 같은 "빌보드"카드 및 3D 게임의 사용자 인터페이스 요소 및 아이콘에도 적용됩니다.

반대로, 원근감있게 그려 질 수있는 3D 객체의 다각형에 대한 표면 세부 정보를 제공하기 위해 이미지를 사용하는 경우 일반적으로 해당 이미지를 "텍스처"라고합니다. 그 이름은 반사, 왜곡 맵, 오버레이, 마스크 또는 기타와 같은 손끝으로 느낄 수있는 질감으로 인해 더 이상 텍스처에 관한 것이 아니라도 이미지 데이터의 다른 용도로 옮겨졌습니다. 좀 더 구체적으로 이름이 지정되지 않은 느낌이 드는 이미지의 일반적인 용도는 느슨한 명명법의 "텍스처"에 집중되는 경향이 있습니다.

그것은 두 퍼지 사이의 경계를 만들고 특히 엄격하지는 않습니다. 폭발 효과를 위해 광고판 입자를 그리는 데 사용할 일련의 화재 및 연기 기둥이 포함 된 이미지가있는 경우이를 "스프라이트 시트"또는 "플립 북 텍스처"라고합니다. 또는 2D 게임의 모든 배경 타일로 구성된 타일셋 이미지가있는 경우 데이터와 내 2D 게임에서의 사용이 구분할 수 없지만 3D 게임용으로 개발 된 아틀라스 텍스처와 유사하게 오늘날 "텍스처 아틀라스"라고 할 수 있습니다. 다른 사람이 스프라이트 시트라고 부르는 것에서 화면에 단일 이미지를 표시하는 데 목적이있는 사각형의 직사각형이있는 경우 사용에 대해 강조하려는 대상에 따라 "텍스처 쿼드"또는 "스프라이트"라고 할 수 있습니다.

(이 마지막 예에서 "스프라이트"는 게임 자산의 소스 이미지 세그먼트와이 이미지 세그먼트를 사용하는 렌더링 된 게임 개체의 인스턴스를 나타냅니다.이 용어를 약간 일치하지 않는 다른 방법입니다)

일부 엔진 및 라이브러리는 이러한 구별을 자체 명명법으로 렌더링하여 인코딩합니다. 예를 들어 Unity에서는 이미지 자산을 "스프라이트"로 가져 오도록 선택할 수 있습니다. 이렇게하면 스프라이트 시트 슬라이싱 및 패킹과 같은 UI 이미지 또는 2D 게임 자산에 일반적으로 필요한 추가 옵션 세트와 참조 기능을 사용할 수 있습니다 장면 및 객체 설정에서 이미지의 개별 요소로 이미지의 일부. 이러한 경우 "스프라이트"는 종종 "이미지 (텍스처) 와 메타 데이터 "를 의미하지만 여전히 일반 텍스처와 동일하게 렌더링됩니다. 추가 패키징은 편리하므로 이미지를 사용하려는 모든 곳에서 UV 오프셋 등을 미세 관리 할 필요가 없습니다.


"텍스처"는 일반적으로 투명한 픽셀을 포함하거나 허용합니까? 표면이 카메라 축에 수직인지 여부에 관계없이 투명한 픽셀을 "스프라이트"로 포함하는 픽셀 매핑 된 평면으로 동작하는 물체를 생각합니다.
supercat

2
그들은 "텍스처"타이틀을 포기하지 않고 확실히 할 수 있습니다. 알파 테스트 / 디더링 또는 알파 블렌딩 투명도로 렌더링 된 경우에도 사람들이 렌더링, 말, 잎 또는 체인 링크 펜스의 이미지를 "단풍 텍스처"또는 "울타리 텍스처"로 참조하는 것이 일반적입니다. . 리프 케이스가 카메라를 향한 광고판으로 렌더링되는 경우 리프 케이스를 "단엽 스프라이트"라고 할 수도 있지만 스프라이트 이름이 3D 펜스와 같은 원근 지오메트리에 사용되는 경우에는 스프라이트 이름을 적용하는 것이 일반적이지 않습니다.
DMGregory

불투명 텍스처 매핑 오브젝트를 렌더링 할 때, 렌더링 엔진은 불투명 표면이 내부를 숨기므로 내부가 어떻게 보일지 걱정할 필요가 없습니다. 불투명 부분을 수행 한 다음 부분적으로 투명한 부분을 별도의 부분적으로 투명한 표면으로 렌더링하면 나무 또는 체인 링크 울타리와 같은 것이 가장 잘 렌더링 될 것이라고 생각합니다. 카메라를 향하지 않으면 일부 사람들이 "스프라이트"라고 부르는 것과 일치하지 않을 수도 있지만 "일반"객체와 동일하지 않을 수도 있습니다.
supercat

실제로는 일반적으로 수행 방식입니다. 펜스 기둥 및 트렁크의 지오메트리는 불투명 패스로 렌더링 된 다음 펜스 스팬 및 단풍 / 가지의 지오메트리는 알파 테스트 또는 알파 블렌드 패스로 렌더링됩니다.
DMGregory

1
나는 보통 "투명한 질감"또는 "알파 질감"/ "알파가있는 질감"을들 수 있습니다. 딱딱한 가장자리 / 알파 테스트 된 투명성 인 경우에는 때때로 "컷 아웃"/ "컷 아웃 질감"일 수 있습니다.
DMGregory

7

스프라이트는 컴퓨터 게임의 역사에서 나온 유물입니다. 약 8 비트 Ataris를 생각해보십시오. 1980. 화면에 위치가 있고 특정 방식으로 화면에 결합되는 적용 범위 비트 마스크 (또는 특수한 "투명한"색상)가있는 작은 이미지. 적용 범위 맵에 따라 스프라이트에 "구멍"이있는 구멍이 있습니다. 일반적으로 "정상 작동"방식으로, 그리고 덮어 쓴 원본 화면 픽셀을 저장하고 복원하여 물건이 움직이는 것처럼 쉽게 착각 할 수있는 방식으로.

예전에는 스프라이트가 컴퓨터의 하드웨어 기능 이었기 때문에 화면 내용을 자동으로 저장 한 상태에서 그림을 그리거나 빼낼 수 있었으며, 매우 제한된 수 (및 겹치지 않음) 만 사용할 수있었습니다. 이전에는 크기가 16x16과 같이 매우 작고 제한적이었습니다.

마우스 커서는 요즘 스프라이트에 가장 근접한 것입니다 (그리고 그것은 ~ 10-15 년 전까지 일부 시스템에서 실제 스프라이트 였습니다 ).

오늘날에는 그러한 것이 실제로 존재하지 않지만 그 단어는 남아 있습니다. 스프라이트는 기본적으로 작은 2D 이미지로 어딘가에 그리거나 합성합니다. 일반적으로 작은 텍스처 쿼드를 그립니다.

반면에 텍스처는 다소 현대적인 그래픽 API에 사용되는 읽을 수있는 이미지의 개념입니다. 또는 더 정확하게는 크기와 같은 일부 관련 추가 데이터가있는 메모리 영역 (현대 API의 경우 "버퍼")은 일부 수단을 통해 샘플링 할 수 있습니다. 일반적으로 그래픽 처리 장치에서 실행되는 셰이더가 반드시 그런 것은 아닙니다. 보통은 아니지만 반드시 정규화 된 좌표를 사용하거나 필터링 (및 밉 매핑, 특정 경계 모드 및 / 및 ...)을 사용하는 것은 아닙니다.

따라서 텍스처는 스프라이트를 그리는 데 사용하는 데이터의 소스 일 수 있습니다.


3
적절한 스프라이트는 하드웨어에 겹쳐져 있으므로 메모리의 비디오 데이터는 변경되지 않으며 동일한 모드를 사용할 필요가 없습니다 (예 : C64에서는 텍스트 배경 위에 비트 맵 스프라이트를 가질 수 있음). 비트 맵을 저장하고 데이터를 교체하여 렌더링되는 객체를 BOB (Blitter OBjects)라고합니다.
Simon Richter

1
@SimonRichter : 나는 장난감으로 execpt 한 C64에 익숙하지 않지만, Amiga도 올바르게 기억한다면 8 개도 가지고 있습니다. 하드웨어 수준에서 어떻게 작동했는지 확실하지 않지만 직접 오버레이 일 수도 있습니다 (아마도). ST에서 A00D/ AOOCopcode 스프라이트는 확실히 draw / undraw 프레임 버퍼 수정 종류였습니다. 그렇습니다. 전형적인 Amiga의 BOB도 있습니다. 그것은 오늘날의 텍스처에 가장 가까운 것이 었습니다 (모든 크기, 그래픽 프로세서에 한 번 업로드, 여러 번 그리기).
Damon

4

사과와 오렌지를 비교 한 것입니다. 텍스처는 이미지 일 뿐이고 스프라이트는 이미지 이며 사용 방법입니다.

우리는 여전히 2D 게임에 스프라이트를 사용하며, 입자 효과로 3D 게임에 나타납니다. 요즘, 스프라이트는 일반적으로 특정 종류의 텍스처 쿼드 또는 드물게 단일 삼각형을 말합니다. UI 요소조차도 여전히 텍스처 쿼드입니다. 스프라이트라고 부릅니다.

예전에는 스프라이트가 메모리에 사전로드되고 스탬프와 같이 화면의 포인트 (문자 그대로, 화면 메모리)에 블리트 (바이트-바이트 메모리)되었습니다. 어떤 식 으로든 우리는 여전히 그렇게합니다. 스프라이트 애니메이션의 경우, 텍스처의 세그먼트를 쿼드로 렌더링하기 위해 소스 텍스처의 샘플 좌표를 종종 변경합니다. 범프 매핑과 같은 셰이더 효과는 동일한 방식으로 텍스처에서 샘플링되므로 스프라이트의 글로우 효과에 여전히 사용할 수 있습니다.

특히 2D 게임의 경우 스타일 선택입니다. 예를 들어 스프라이트를 사용하여 게임에서 손으로 그린 ​​또는 그린 캐릭터를 구성 할 수 있습니다. 사우스 파크 게임은 기술적으로 그 예입니다.

스프라이트 대신에 텍스처 사용할 수는 없습니다 .


3

여기에 간단하고 짧은 답변이 있습니다. 나는 보통 스프라이트를 적용 할 함수와 텍스처와 함께 전체 오브젝트 자체로 생각합니다. 텍스처에 관해서는, 나는 그것이 무언가에 적용될 수있는 이미지라고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.