カテゴリー別アーカイブ: OpenGL ES

ShaderConductor : Microsoftのオープンソースシェーダ言語変換ツール

MicrosoftがShaderConductorというシェーダ変換ツールを公開しています.

ShaderConductor
https://github.com/Microsoft/ShaderConductor

このツールは,HLSLから以下のシェーダを出力ができるものになっています.

  • DXIL (Direct3D12)
  • SPIR-V (Vulkan)
  • GLSL (OpenGL)
  • ESSL (OpenGL ES)
  • MSL (Metal)
  • HLSL (Direct3D9/10/11)

DXILとSPIR-V はDirectXShaderCompilerから出力を行い,残りはSPIR-VをSPIR-V-Crossを使って出力するというものになっています.

DirectXShaderCompilerによるVulkan向けSPIR-V出力に関しては下記の記事などが参考になると思います.EA SEEDの事例ですがVulkan向けのシェーダをHLSLで開発する話があります.DirectXShaderCompilerからのフローはだいぶ完成度が高まっている感じはあります.

Running Microsoft FXC in Docker
https://www.wihlidal.com/blog/pipeline/2018-09-17-linux-fxc-docker/

Khronos Munich 2018 – Halcyon and Vulkan
https://www.ea.com/seed/news/khronos-munich-2018-halcyon-vulkan

日本語での関連記事は新masafumi’s Diaryの方で書いています.

EA SEEDのHalcyonのDirect3D12やVulkan向けのシェーダの話
http://masafumi.cocolog-nifty.com/masafumis_diary/2018/10/ea-seedhalcyond.html

HalcyonのVulkan対応の話
http://masafumi.cocolog-nifty.com/masafumis_diary/2018/10/halcyonvulkan-c.html

Filament : Googleのオープンソースリアルタイムレンダリングエンジン

GoogleがFilamentというオープンソースのリアルタイムレンダリングエンジンを公開しています.

Filament
https://github.com/google/filament

このエンジンはC++とJava/JNIがあり,Android,Linux,macOS,Windowsをサポートします.

バックエンドとしてOpenGL 4.1, OpenGL ES 3.0(Android), Vulkanがあります.macOSはOpenGLかMoltenVkによるVulkanで動作させる形になるようです.

物理ベースのクラスターフォワードレンダリングを採用していますが,ライトの単位なども物理的な単位ベースのようです.

  • Clustered forward renderer
  • Cook-Torrance microfacet specular BRDF
  • Lambertian diffuse BRDF
  • HDR/linear lighting
  • Metallic workflow
  • Clear coat
  • Anisotropic lighting
  • Approximated translucent (subsurface) materials (direct and indirect lighting)
  • Cloth shading
  • Normal mapping & ambient occlusion mapping
  • Image-based lighting
  • Physically-based camera (shutter speed, sensitivity and aperture)
  • Physical light units
  • Point light, spot light and directional light
  • ACES-like tone-mapping
  • Temporal dithering
  • FXAA or MSAA
  • Dynamic resolution (on Android)

将来サポートしたい機能としては以下のような要素があるようです.

  • IES light profiles
  • Area lights
  • Fog
  • Color grading
  • Bloom
  • TAA
  • etc.

GDC 2018 Khronos group関連セッションスライド公開

GDC 2018 Khronos group関連セッションスライド公開になっています.

2018 GDC
https://www.khronos.org/developers/library/2018-gdc-webgl-and-gltf

公開されているのは,以下の8セッションのものになります.

  • OpenXR : A look at OpenXR : Mar18.pdf
  • WebGL and Why You Should Target It : Mar18.pdf
  • WebGL and glTF : Draco at GDC : Mar18.pdf
  • WebGL and glTF : GDC : Mar18.pdf
  • WebGL and glTF : KHR : TTX : Mar18.pdf
  • WebGL and glTF : Mike Bond Dimension GDC : Mar18.pdf
  • WebGL and glTF : Mike Erwin Unreal glTF GDC : Mar18.pdf
  • WebGL and glTF : Mixed Reality with glTF : Mar18.pdf

GAPID:GoogleのOpenGL ES, VulkanのグラフィックスAPIデバッガ

GoogleがOpenGL ES, VulkanのグラフィックスAPIデバッガ GAPIDを公開しています.

このツールは,Android,Windows, Linux,OS XでOpenGL ES, Vulkan上でグラフィックスAPIの呼び出しをデバッグできるツールです.

Save development time with our new 3D debugging tool
https://www.blog.google/products/google-vr/save-development-time-our-new-3d-debugging-tool/

ツール概要
https://developers.google.com/vr/develop/android/gapid

ソース
https://github.com/google/gapid

OSごとに取得できるものは違います(OS XはVulkanがいけない)が,PC上でも取れるので実機に行く前にPC環境で動作を調べたりなどに便利そうですね.

Android Windows macOS Linux
OpenGL ES Trace
OpenGL ES Replay
Vulkan Trace
Vulkan Replay
(Must be performed on the same device used to trace)

Draco : Googleによるオープンソースの3Dデータ圧縮ライブラリ

Googleが3Dデータ向けの圧縮のためのオープンソースライブラリDracoを公開していました.

Draco
https://google.github.io/draco/

リポジトリ
https://github.com/google/draco

3DグラフィックスAPI向けにデータを流しやすくということのようですね.通信がありブラウザで使われるWebGL(Three.jsで対応)やglTF, WebVRなどの分野では圧縮は意義がありそうですね.

Dracoについては,glTF 2.0の圧縮形式としてKHR_draco_geometry_compression拡張が提案されているようですね.

Comment period for Draco extension
https://github.com/KhronosGroup/glTF/issues/1114

VSCodeでglTFのプレビューができるglTF Extension for Visual Studio Code

VSCodeでglTFのプレビューができるglTF Extension for Visual Studio Codeが公開されています.

glTF Extension for Visual Studio Code
https://marketplace.visualstudio.com/items?itemName=cesium.gltf-vscode

VSCode上でglTFのJSONを編集しつつBabylonJS,Cesium,ThreeJSの3つのWebGLベースのエンジンで3Dモデルをプレビューすることができます.プレビュー以外にもデータの変換やチェック向きの機能もあるので便利そうですね.

NXT:新しいWeb向けグラフィックスAPI

GoogleのGitHubのリポジトリにNXTという新しいWeb向けグラフィックスAPIのリポジトリが公開されていました.

https://github.com/google/nxt-standalone

Googleのオフィシャルというよりは実験的なプロジェクトのようでANGLEから新しく設計したプロトタイプのようですね.

Chromium向けで,D3D12, Metal, Vulkanの世代のような考え方(…に加えてOSごとにバックエンドになる)を取り入れたりSPIR-Vを導入したりという部分はANGLEから変わる部分かと思います.

書籍:GPU Zen: Advanced Rendering Techniques

GPU Proなどの編集務めたWolfgang Engel氏のGPUテクニック集めた新しい書籍が出たようですね.

書籍のサイト
http://gpuzen.blogspot.jp/

Amazonを見ているとKindle版が紙に比べて格段に値段が安いのでデジタルで読むのがいいのかもしれないですね.

目次なんかを見ていると以前,Eidos Montreaのblogで公開されていた”Deferred+: Next-Gen Culling and Rendering for Dawn Engine”の詳細な記事(30ページ近くの解説.シェーダの提示もあり)が入っています.

Geometry Manipulation (Christopher Oat)

  1. Attributed Vertex Clouds by Willy Scheibel, Stefan Buschmann, Matthias Trapp, and Jürgen Döllner
  2. Rendering Convex Occluders with Inner Conservative Rasterization by Marcus Svensson and Emil Persson

Lighting (Carsten Dachsbacher)

  1. Rendering stable indirect illumination computed from reflective shadow maps by Louis Bavoil and Holger Gruen
  2. Real-Time Participating Media Effects Using Extruded Light Volumes by Nathan Hoobler, Andrei Tatarinov and Alex Dunn

Rendering (Mark Chatfield)

  1. Deferred+: Next-Gen Culling and Rendering for Dawn Engine by Hawar Doghramachi and Jean-Normand Bucci
  2. Programmable per-pixel sample placement with conservative rasterizer by Rahul P. Sathe
  3. Mobile Toon Shading by Felipe Lira, Flávio Villalva, Jesus Sosa, Kléverson Paixão and Teófilo Dutra
  4. High-Quality GPU-efficient Image Detail Manipulation by Kin-Ming Wong and Tien-Tsin Wong
  5. Real-Time Linear-Light Shading with Linearly Transformed Consines by Eric Heitz and Stephen Hill
  6. Profiling and Optimizing WebGL Application Using Google Chrome by Gareth Morgan

Screen-Space (Wessam Bahnassi)

  1. Scalable Adaptive SSAO by Filip Strugar
  2. Robust Screen Space Ambient Occlusion in 1 ms in 1080p on PS4 by Wojciech Sterna
  3. Practical Gather-based Bokeh Depth of Field by Wojciech Sterna

Virtual Reality (Eric Haines)

  1. Efficient Stereo and VR Rendering by Iñigo Quilez
  2. Understanding, Measuring and Analyzing VR Graphics Performance by James Hughes, Reza Nourai, and Ed Hutchins

Compute (Wolfgang Engel)

  1. Optimizing the Graphics Pipeline with Compute by Graham Wihlidal
  2. Real Time Markov Decision Processes for Crowd Simulation by Sergio Ruiz and Benjam´ın Hernández