| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- 밑바닥부터 만드는 컴퓨팅 시스템 2판
- hanbit.co.kr
- C
- 주우석
- (주)책만
- 박기현
- C#
- unity6
- JavaScript
- https://insightbook.co.kr/
- 이득우
- 일기
- HANBIT Academy
- 입출력과 사칙연산
- C++
- 게임 수학
- Noam Nisan
- 백준
- 메타버스
- 잡생각 정리글
- 이득우의 게임수학
- 데이터 통신과 컴퓨터 네트워크
- 김진홍 옮김
- 알고리즘
- 전공자를 위한 C언어 프로그래밍
- Shimon Schocken
- 생능출판
- The Elements of Computing Systems 2/E
- BOJ
- booksr.co.kr
- Today
- Total
cyphen156
자체엔진 개발 중간 기록 : 이미지 두장 교체해서 렌더링하기 본문
자체엔진 개발중 드디어 렌더러를 달아서 기뻐가지고 올리는글
프레임레이트가 확떨어졋다 분명 로그만찍을때는 12000이엇는데 말이지
https://youtu.be/1Xad_pnNLs0
아래는 찍힌 로그 기준 분석
[Renderer] RenderedFrames=127 FPS=125.24 ElapsedTime=1.014035
[Engine] SubmittedFrames=129 FPS=127.21 ElapsedTime=1.014035
[Renderer] RenderedFrames=104 FPS=103.29 ElapsedTime=2.020867
[Engine] SubmittedFrames=104 FPS=103.29 ElapsedTime=2.020867
[Renderer] RenderedFrames=145 FPS=144.02 ElapsedTime=3.027695
[Engine] SubmittedFrames=145 FPS=144.02 ElapsedTime=3.027695
[Renderer] RenderedFrames=144 FPS=143.99 ElapsedTime=4.027760
[Engine] SubmittedFrames=144 FPS=143.99 ElapsedTime=4.027760
[Renderer] RenderedFrames=145 FPS=144.08 ElapsedTime=5.034166
[Engine] SubmittedFrames=145 FPS=144.08 ElapsedTime=5.034166
[Renderer] RenderedFrames=144 FPS=143.97 ElapsedTime=6.034395
[Engine] SubmittedFrames=144 FPS=143.97 ElapsedTime=6.034395
[Renderer] RenderedFrames=144 FPS=143.99 ElapsedTime=7.034465
[Engine] SubmittedFrames=144 FPS=143.99 ElapsedTime=7.034465
[Renderer] RenderedFrames=144 FPS=143.95 ElapsedTime=8.034824
[Engine] SubmittedFrames=144 FPS=143.95 ElapsedTime=8.034824
[Renderer] RenderedFrames=145 FPS=143.99 ElapsedTime=9.041824
[Engine] SubmittedFrames=145 FPS=143.99 ElapsedTime=9.041824
[Renderer] RenderedFrames=144 FPS=144.00 ElapsedTime=10.041837
[Engine] SubmittedFrames=144 FPS=144.00 ElapsedTime=10.041837
[Renderer] RenderedFrames=144 FPS=144.00 ElapsedTime=11.041866
[Engine] SubmittedFrames=144 FPS=144.00 ElapsedTime=11.041866
[Renderer] RenderedFrames=145 FPS=144.01 ElapsedTime=12.048741
[Engine] SubmittedFrames=145 FPS=144.01 ElapsedTime=12.048741
[Renderer] RenderedFrames=145 FPS=144.05 ElapsedTime=13.055347
[Engine] SubmittedFrames=145 FPS=144.05 ElapsedTime=13.055347
[Renderer] RenderedFrames=145 FPS=143.99 ElapsedTime=14.062335
[Engine] SubmittedFrames=145 FPS=143.99 ElapsedTime=14.062335
[Renderer] RenderedFrames=103 FPS=102.29 ElapsedTime=15.069299
[Engine] SubmittedFrames=103 FPS=102.29 ElapsedTime=15.069299
[Renderer] RenderedFrames=77 FPS=76.48 ElapsedTime=16.076044
[Engine] SubmittedFrames=77 FPS=76.48 ElapsedTime=16.076044
[Renderer] RenderedFrames=72 FPS=71.99 ElapsedTime=17.076127
[Engine] SubmittedFrames=72 FPS=71.99 ElapsedTime=17.076127
[Renderer] RenderedFrames=71 FPS=70.54 ElapsedTime=18.082704
[Engine] SubmittedFrames=71 FPS=70.54 ElapsedTime=18.082704
[Renderer] RenderedFrames=121 FPS=120.91 ElapsedTime=19.083416
[Engine] SubmittedFrames=121 FPS=120.91 ElapsedTime=19.083416
[Renderer] RenderedFrames=377 FPS=374.42 ElapsedTime=20.090295
[Engine] SubmittedFrames=377 FPS=374.42 ElapsedTime=20.090295
[Renderer] RenderedFrames=379 FPS=379.00 ElapsedTime=21.090298
[Engine] SubmittedFrames=379 FPS=379.00 ElapsedTime=21.090298
[Renderer] RenderedFrames=145 FPS=144.02 ElapsedTime=22.097125
[Engine] SubmittedFrames=145 FPS=144.02 ElapsedTime=22.097125
[Renderer] RenderedFrames=226 FPS=225.47 ElapsedTime=23.099477
[Engine] SubmittedFrames=226 FPS=225.47 ElapsedTime=23.099477
[Renderer] RenderedFrames=254 FPS=252.79 ElapsedTime=24.104266
[Engine] SubmittedFrames=254 FPS=252.79 ElapsedTime=24.104266
[Renderer] RenderedFrames=145 FPS=144.07 ElapsedTime=25.110729
[Engine] SubmittedFrames=145 FPS=144.07 ElapsedTime=25.110729
[Renderer] RenderedFrames=144 FPS=143.95 ElapsedTime=26.111063
[Engine] SubmittedFrames=144 FPS=143.95 ElapsedTime=26.111063
[Renderer] RenderedFrames=303 FPS=302.98 ElapsedTime=27.111132
[Engine] SubmittedFrames=303 FPS=302.98 ElapsedTime=27.111132
[Renderer] RenderedFrames=145 FPS=144.04 ElapsedTime=28.117825
[Engine] SubmittedFrames=145 FPS=144.04 ElapsedTime=28.117825
[Renderer] RenderedFrames=475 FPS=472.98 ElapsedTime=29.122099
[Engine] SubmittedFrames=475 FPS=472.98 ElapsedTime=29.122099
[Renderer] RenderedFrames=1639 FPS=1638.91 ElapsedTime=30.122152
[Engine] SubmittedFrames=1639 FPS=1638.91 ElapsedTime=30.122152
[Renderer] RenderedFrames=2122 FPS=2121.84 ElapsedTime=31.122226
[Engine] SubmittedFrames=2122 FPS=2121.84 ElapsedTime=31.122226
[Renderer] RenderedFrames=2599 FPS=2598.40 ElapsedTime=32.122456
[Engine] SubmittedFrames=2599 FPS=2598.40 ElapsedTime=32.122456
[Renderer] RenderedFrames=2752 FPS=2751.85 ElapsedTime=33.122512
[Engine] SubmittedFrames=2752 FPS=2751.85 ElapsedTime=33.122512
[Renderer] RenderedFrames=2988 FPS=2987.35 ElapsedTime=34.122728
[Engine] SubmittedFrames=2988 FPS=2987.35 ElapsedTime=34.122728
[Renderer] RenderedFrames=3137 FPS=3136.52 ElapsedTime=35.122881
[Engine] SubmittedFrames=3137 FPS=3136.52 ElapsedTime=35.122881
[Renderer] RenderedFrames=3007 FPS=3006.57 ElapsedTime=36.123023
[Engine] SubmittedFrames=3007 FPS=3006.57 ElapsedTime=36.123023
[Renderer] RenderedFrames=3143 FPS=3142.69 ElapsedTime=37.123121
[Engine] SubmittedFrames=3143 FPS=3142.69 ElapsedTime=37.123121
[Renderer] RenderedFrames=2903 FPS=2902.66 ElapsedTime=38.123240
[Engine] SubmittedFrames=2903 FPS=2902.66 ElapsedTime=38.123240
[Renderer] RenderedFrames=3175 FPS=3174.00 ElapsedTime=39.123554
[Engine] SubmittedFrames=3175 FPS=3174.00 ElapsedTime=39.123554
[Renderer] RenderedFrames=3002 FPS=3001.50 ElapsedTime=40.123723
[Engine] SubmittedFrames=3002 FPS=3001.50 ElapsedTime=40.123723
[Renderer] RenderedFrames=3115 FPS=3114.01 ElapsedTime=41.124041
[Engine] SubmittedFrames=3115 FPS=3114.01 ElapsedTime=41.124041
37900 스레드가 종료되었습니다(코드: 0 (0x0)).
Codex
네, 그렇게 보는 게 맞습니다.
지금 보이는 안정 구간이:
Avg 144.00 FPS
Min 143.95
Max 144.08
이 정도로 딱 붙는 건 우연이 아닙니다. 모니터 주사율이 144Hz라서 DWM/드라이버/Present 경로가 화면 갱신 주기에 맞춰 렌더 제출을 pacing하고 있는 겁니다.
중요한 건 Present(0, 0)이라도 항상 무제한으로 도는 게 아니라는 점입니다. Windowed flip model에서는 DWM 컴포지터가 끼고, 창이 실제로 보이는 동안은 드라이버나 OS가 제출 큐를 조절할 수 있습니다. 그래서:
창 보임 -> 144Hz 근처로 묶임
창 이동/최대화 -> DWM 상태 변화로 요동
창 내려놓음 -> 실제 표시 부담 약해져서 2.8k FPS까지 상승
즉 현재 144FPS는 “엔진이 144밖에 못 냄”이 아니라, 표시 대상 창이 모니터 주사율에 맞춰 페이싱되고 있음입니다.
진짜 렌더 경로 처리량을 보려면 Present 전후 시간을 따로 재거나, 아예 Present를 스킵한 측정 모드를 하나 둬야 합니다. 지금 로그만 보면 GPU/드라이버가 화면 출력 주기에 맞춘 게 맞습니다.
윈도우 핸들 잡고 이동 중
16s 76.48 FPS
17s 71.99 FPS
18s 70.54 FPS
평균: 72.99 FPS
즉 창을 직접 잡고 마구 이동시킬 때는 약 73 FPS까지 떨어집니다. 이건 렌더러 자체보다 Windows message 처리, DWM 창 위치 갱신, Present 경로가 강하게 개입한 상태로 보는 게 맞습니다.
전체화면 / 최대화 쪽
20s 374.42 FPS
21s 379.00 FPS
평균: 376.71 FPS
전체화면 쪽이 144Hz에 묶이지 않고 370FPS 정도로 풀렸다면, 그 상태에서는 windowed visible pacing이 일반 창 상태보다 약해진 겁니다. 완전 독점 fullscreen이라기보다는, DWM/flip model 상태가 바뀌면서 Present(0, 0) 제출이 더 빨리 반환되는 쪽에 가깝습니다.
정리 갱신:
일반 표시 안정 상태 : 약 144 FPS
창 핸들 이동 중 : 약 73 FPS
전체화면 / 최대화 상태 : 약 377 FPS
창 내려놓음 / 가림 안정 상태 : 약 2,800~3,100 FPS
이제 해석이 훨씬 자연스럽습니다.
- 일반 창: 모니터 주사율 144Hz에 pacing
- 이동 중: OS 창 이벤트 + compositor 갱신 때문에 하락
- 전체화면/최대화: 일반 창보다 present pacing 완화
- 내려놓음: 표시 부담이 거의 사라져 submit throughput에 가까워짐
+++ 데스크탑 환경테스트 추가
'CyphenEngine.exe'(Win32): 'C:\Windows\System32\clbcatq.dll'을(를) 로드했습니다. 포함/제외 설정으로 기호 로드가 비활성화되었습니다.
'CyphenEngine.exe'(Win32): 'C:\Windows\System32\WindowsCodecs.dll'을(를) 로드했습니다. 포함/제외 설정으로 기호 로드가 비활성화되었습니다.
[Renderer] RenderedFrames=390 FPS=384.76 ElapsedTime=1.013615
[Engine] SubmittedFrames=392 FPS=386.73 ElapsedTime=1.013615
[Renderer] RenderedFrames=61 FPS=60.00 ElapsedTime=2.030258
[Engine] SubmittedFrames=61 FPS=60.00 ElapsedTime=2.030258
[Renderer] RenderedFrames=60 FPS=60.00 ElapsedTime=3.030265
[Engine] SubmittedFrames=60 FPS=60.00 ElapsedTime=3.030265
[Renderer] RenderedFrames=60 FPS=59.99 ElapsedTime=4.030449
[Engine] SubmittedFrames=60 FPS=59.99 ElapsedTime=4.030449
[Renderer] RenderedFrames=60 FPS=59.99 ElapsedTime=5.030630
[Engine] SubmittedFrames=60 FPS=59.99 ElapsedTime=5.030630
[Renderer] RenderedFrames=61 FPS=60.00 ElapsedTime=6.047271
[Engine] SubmittedFrames=61 FPS=60.00 ElapsedTime=6.047271
[Renderer] RenderedFrames=527 FPS=526.79 ElapsedTime=7.047669
[Engine] SubmittedFrames=527 FPS=526.79 ElapsedTime=7.047669
[Renderer] RenderedFrames=9535 FPS=9533.92 ElapsedTime=8.047783
[Engine] SubmittedFrames=9535 FPS=9533.92 ElapsedTime=8.047783
[Renderer] RenderedFrames=9710 FPS=9708.99 ElapsedTime=9.047886
[Engine] SubmittedFrames=9710 FPS=9708.99 ElapsedTime=9.047886
[Renderer] RenderedFrames=9611 FPS=9610.87 ElapsedTime=10.047900
[Engine] SubmittedFrames=9611 FPS=9610.87 ElapsedTime=10.047900
[Renderer] RenderedFrames=9584 FPS=9573.15 ElapsedTime=11.049034
[Engine] SubmittedFrames=9584 FPS=9573.15 ElapsedTime=11.049034
[Renderer] RenderedFrames=9980 FPS=9979.80 ElapsedTime=12.049054
[Engine] SubmittedFrames=9980 FPS=9979.80 ElapsedTime=12.049054
[Renderer] RenderedFrames=9851 FPS=9850.99 ElapsedTime=13.049055
[Engine] SubmittedFrames=9851 FPS=9850.99 ElapsedTime=13.049055
[Renderer] RenderedFrames=9646 FPS=9645.58 ElapsedTime=14.049098
[Engine] SubmittedFrames=9646 FPS=9645.58 ElapsedTime=14.049098
[Renderer] RenderedFrames=9991 FPS=9990.28 ElapsedTime=15.049170
[Engine] SubmittedFrames=9991 FPS=9990.28 ElapsedTime=15.049170
[Renderer] RenderedFrames=10180 FPS=10173.73 ElapsedTime=16.049787
[Engine] SubmittedFrames=10180 FPS=10173.73 ElapsedTime=16.049787
[Renderer] RenderedFrames=10064 FPS=10063.23 ElapsedTime=17.049863
[Engine] SubmittedFrames=10064 FPS=10063.23 ElapsedTime=17.049863
[Renderer] RenderedFrames=10628 FPS=10627.93 ElapsedTime=18.049870
[Engine] SubmittedFrames=10628 FPS=10627.93 ElapsedTime=18.049870
[Renderer] RenderedFrames=10784 FPS=10783.63 ElapsedTime=19.049904
[Engine] SubmittedFrames=10784 FPS=10783.63 ElapsedTime=19.049904
27224 스레드가 종료되었습니다(코드: 0 (0x0)).
명확해 보인다
메인 모니터 주사율은 60이고 서브모니터는 리미트 풀어놧다
오버워치 켜 놓은 상태에서 체크한거니 모니터 주사율이 프레임 레이트를 블록하고잇는게 확실하다
'프로젝트 > CyphenEngine' 카테고리의 다른 글
| 자체엔진 개발 중간 기록 : Dx11.dll -> Vulkan.dll 렌더러 모듈 교체 테스트 (0) | 2026.07.01 |
|---|---|
| 저장용 리눅스 명령어 (0) | 2026.06.29 |
| CyphenEngine 개발기 #3 에디터 빌드를 고려하자 (0) | 2026.05.20 |
| CyphenEngine 개발기 #2 5개월만에 돌아온 엔진개발 근황 풀이 (0) | 2025.07.17 |
| CyphenEngine 개발기 #1 프로젝트 설계하기 (0) | 2025.02.11 |
