(2줄 요약 있)
여기에 수많은 똑같은 모델들이 있다. 100개는 족히 넘는다.
아주 자세히 보면 각 모델은 직육면체가 여러개 모여 만들어진 집합체다. AAA급 게임에서 보는 복잡한 사람, 몬스터 모델이 절대 아니다.
약간의 수정을 가했다.
왼쪽 하단을 보면 알겠지만 프레임이 말도 안 되게 상승했다.
뭘 수정했을까? 폴리곤 수를 줄였을까? 텍스처 해상도를 낮췄을까?
사실 모델은 그대로다. 폴리곤이든 텍스처든 전부 그대로.
뭘 수정했냐 하면... 모델을 하나로 묶어버렸다.
그러니까 1짤은 쬐끄만 모델을 100개 넘게 생성시킨 거고,
2짤은 그것들을 하나의 파일로 합쳐 모델 1개가 된 것이다.
이렇게 만들면 드로우 콜도 하나가 되어 cpu가 효율적으로 계산할 수 있다.
드로우 콜이란, CPU가 그래픽 API에 "이거 렌더링해" 하고 보내는 명령이다.
그래픽 API는 이 명령을 해석해서 GPU가 렌더링하게 만든다.
이 원리는 다이렉트 X, 불칸, OpenGL 등 어떤 API라도 똑같다. 어떤 게임이든 통용되는 사실이다. 팀포도 마찬가지고.
만약 드로우 콜이 많아지면?
흔히 말하는 병목 현상이 생긴다.
이런 현상은 CPU를 좋은 걸로 사도 해결되지 않을 거다.
4GHz의 벽 + 팀포의 멀티스레딩 때문인데,
4GHz의 벽은 쉽게 말해서 90년대 마냥 CPU의 클럭을 높이는 방법이 한계에 달했단 뜻이다. 실제론 4GHz 이상의 CPU가 나오긴 했지만 발전 속도가 굉장히 느려지긴 했다.
그래서 지금은 CPU의 개발 방향을 멀티코어/스레딩으로 넘어갔는데
팀포는 스레드를 단 4개밖에 안 쓴다. (요즘 CPU 기준 코어 2개)
그러니 최신 CPU 구매가 약간의 성능 향상은 있을지언정 드라마틱한 발전은 없을 거다.
다른 옛날 게임들이 최신 컴퓨터로 랙이 걸리는 이유가 이것 때문이다. 전부 사정 똑같음
그러니 최적화를 하려면 드로우 콜에 영향을 미치는지, 안 미치는지만 보면 된다.
텍스처 낮음? 거리별 lod로 모델 뭉개기? 지금은 알빠노 (그리고 거리별 lod로 모델을 뭉개는 건 더 많은 드로우 콜을 생성시킨다)
다음 커맨드들은 드로우 콜에 큰 영향을 준다:
r_drawworld
r_drawdisp
r_drawstaticprops
r_drawentities
r_drawdecals
r_drawdetailprops
r_drawsprite
r_drawparticles
r_drawropes
r_drawviewmodel
r_shadows
r_3dsky
r_renderoverlayfragment
cl_drawhud
거의 다 r_이 붙지?
얘넬 끄면 렌더링을 안 한단 거다
sv_cheats 1 해야 되거나, 렌더링 안 하면 겜하는데 지장가는 것도 있을 텐데 알아서 설정하셈... 지금 군대라 내가 다 걸러내긴 힘듦
드로우 콜에 영향을 주지만 추가 설명 필요한 것들:
mat_dxlevel: 다이렉트 x 버전 맞추는 거. 다렉 8이 드로우 콜을 낮추긴 하는데, 원리가 원래 작동되어야 할 셰이더들을 꺼버려서 생기는 현상임. 8로 하면 못 들어가는 곳이 간혹 있으니 조심 (경쟁전, 일부 게임모드 대축제 서버, 해외 맵 테스트 서버)
cl_new_impact_effects: 새로운 스레딩 시스템을 쓰는 파티클 활성화. 말을 이렇게 하긴 했는데 멀티스레딩은 그대로다. 알아서 써
cl_burninggibs: 불타는 시체 조각. 자주 볼일 없긴 한데 프레임 신경쓰면 끄셈
r_lod, r_rootlod: 아까 언급했지? 그래픽 울트라를 원하든 프레임을 원하든 무조건 0으로 해놔라
-no_texture_stream: 시작 옵션이다. 텍스처 스트리밍이란 기능을 끄는 건데, 이 기능은 텍스처를 처음에 저품질로 불러오되 로딩 시간을 단축시키는 기능이다. 드로우 콜을 많이 생성시키는 주제에 울트라 그래픽에도 무쓸모다. 그러니 무조건 시작옵션에 적어놓자.
2줄 요약:
이렇게 그래픽 뭉개지 마렴
프레임은 똑같단다
- dc official App
오..
그래픽을 뭉개는건 드로우콜에 아무런 지장이 없는거임? 그렇다고 팀포가 gpu를 갉아먹을만큼 고해상도의 이미지를 쓰거나 복잡한 매쉬를 쓰는게 아니니까 얘네는 풀옵으로 올려도 적당한 수준 컴이면 다 잘돌아간다는건가
드로우 콜은 모델이 있냐 없냐에 따라 결정됨 짤처럼 텍스처랑 폴리곤 뭉개는 건 gpu vram 리소스만 줄일 뿐임 이것도 요즘 gpu론 프레임에 조금도 영향 안 줌 - dc App
그럼 마컨에서 그래픽 뭉개는 옵션들 프레임에 별 의미가 앖던거임? 거기 모델링 뭉개기 관련 옵션들 설명보면 cpu 사용량 중간~높음으로 되어있어서 싹 다 낮췄었는데
ㅇㅇ 20년 전 gpu 쓰는 게 아닌 이상 그래픽 뭉개는 걸론 프레임 상승 안 됨
오 엄청 유익하요 지식이 늘엇다
https://developer.valvesoftware.com/wiki/Draw_call
r_drawworld 끄면안댐 r_drawdisp 끄면안댐 r_drawstaticprops 끄면안댐 r_drawentities 끄면안댐 r_drawdecals 꺼도댐(끄면 총알자국, 피 안생김) r_drawdetailprops 꺼도댐(풀, 돌 그런거)
r_drawsprite 꺼도댐(UI에 표시되는 총구 화염 같은것들) r_drawparticles 꺼도댐(맵에 배치된 효과 기타등등) r_drawropes 꺼도됨(케이블, 전선같은거임) r_drawviewmodel 꺼도댐(뷰모델) r_shadows 꺼도댐(그림자) r_3dsky 꺼도댐(맵밖에보이는구조물) r_renderoverlayfragment 꺼도댐(데칼들, BLU INDUSTRY 같은 글자 도장들) cl_drawhud (허드)