Repository navigation
v0.0.222
rePIU v0.0.222
이전 릴리스 v0.0.221 이후의 변경입니다(issue #69). 브라우저 호스트의 세 번째 단계입니다. Glide 렌더러를 OpenGL
3.3 core와 WebGL2(OpenGL ES 3.0)가 함께 가진 기능만으로 다시 썼습니다. Windows·Linux 화면은 예전과 같고, 이제 OpenGL
3.3을 지원하는 GPU 드라이버가 필요합니다(2010년 이후의 거의 모든 GPU).
해결된 issue
| issue | 내용 | 커밋 |
|---|---|---|
| #69 | 웹 이식 2B 단계 3: Glide 렌더러를 GLES 3 / WebGL2 부분집합으로, 네이티브 GL 3.3 core로 확인 | 85071ca |
바뀐 것
렌더러가 브라우저에서 돌 수 있는 모양이 되었습니다. 지금까지 렌더러는 옛 OpenGL의 고정 기능(즉시 모드, 행렬 스택,
알파 테스트 등)을 썼고, 이것은 WebGL에 없습니다.
- 그리기: 즉시 모드를 버텍스 버퍼로, 투영·점 크기·알파 테스트를 셰이더로 옮겼습니다. 색 결합·안개 계산은 그대로입니다.
- 화면 버퍼: 게임은 화면 밖의 front/back 버퍼 두 장에 그리고, 버퍼 교체 때 완성된 그림만 창으로 옮깁니다. 브라우저가
표시 뒤 화면을 비우거나 그리다 만 프레임을 내보내도 게임 그림에 영향이 없습니다. - 후처리(crt·scanline·사용자 셰이더): 화면을 복사하지 않고 바로 읽습니다. 사용자 셰이더 파일은 새 GLSL 문법으로 자동
변환되어 그대로 쓸 수 있습니다. - OpenGL 문맥: Windows·Linux는 OpenGL 3.3 core를 요청합니다. 지원하지 않으면 화면 없이 실행되고 이유가 표준 오류에
찍힙니다.
확인한 것
| 구성 | 확인 |
|---|---|
| 렌더 probe | 포팅 전 렌더러로 뜬 기준 장면 4개와 차이 0화소(Debug·Release) |
| Win32 Release | pumpitea·pumpit8 화면 전후 비교, 사용자 플레이 확인. vsync OFF 처리량 예전과 같음(약 1,100fps) |
| Linux x64·i386 (WSL) | 빌드, core probe, 4.6 / 4.5 Core Profile로 타이틀 화면 |
| 웹(Node) | 고정 기능 stub 없이 링크, core probe, pumpitea 30초 |
| CI | Win32 Debug 빌드와 probe |
알려진 것
- 브라우저에서는 아직 돌지 않습니다. 다음은 브라우저 페이지를 만드는 단계 4입니다.
rePIU v0.0.222
Changes since v0.0.221 (issue #69). The browser host's third phase. The Glide renderer was rewritten to use only
what OpenGL 3.3 core and WebGL2 (OpenGL ES 3.0) share. The Windows and Linux picture is as before, and a GPU driver with
OpenGL 3.3 is now required (nearly every GPU since 2010).
Resolved issues
| issue | Summary | Commit |
|---|---|---|
| #69 | Web port 2B phase 3: the Glide renderer on the GLES 3 / WebGL2 subset, checked on native GL 3.3 core | 85071ca |
Changed
The renderer now has a shape that can run in a browser. Until now it used old OpenGL's fixed function (immediate
mode, the matrix stack, the alpha test and so on), which WebGL does not have.
- Drawing: immediate mode became a vertex buffer, and the projection, point size and alpha test moved into the shader.
The color combine and fog calculations are unchanged. - Screen buffers: the game draws into an offscreen pair of front and back buffers, and only finished pictures reach the
window at the buffer swap. A browser clearing the screen after showing it, or showing a half-drawn frame, cannot touch
the game's picture. - Post-processing (crt, scanline, user shaders): reads the picture directly instead of copying the screen. User shader
files are converted to the newer GLSL automatically and work as they are. - OpenGL context: Windows and Linux ask for OpenGL 3.3 core. Without it the game runs with no picture and standard
error says why.
Checked
| Configuration | Check |
|---|---|
| Render probe | zero differing pixels against four reference scenes captured on the renderer before the port (Debug and Release) |
| Win32 Release | pumpitea and pumpit8 pictures compared before and after, played by the user; vsync-OFF throughput as before (about 1,100 fps) |
| Linux x64 and i386 (WSL) | build, core probe, the title on 4.6 / 4.5 Core Profile |
| Web (Node) | links without the fixed-function stubs, core probe, pumpitea for 30 s |
| CI | Win32 Debug build and probes |
Known
- It does not run in a browser yet. Next is phase 4, the browser page.