プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • Web技術
  • 【WebGL】「カクつく」問題、gtlf
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【WebGL】「カクつく」問題、gtlf

04.08

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

カクツク問題

原因

1コマ毎の描画処理が重くfpsを一定に保つことができないため。特に3D表現をしようとすると処理負荷が高く凝った表現をしようとするとfpsを保つことが難しくなる。

対策

テクスチャが重いからjpegにする。

JPEGはCPU上でデコードされてフルサイズでGPUに乗る

JPEGにしようがpngにしようがこれは変わらないです。

いくつかのフォーマットは圧縮されたままVRAMに乗せることができます

モバイルなどでメモリの消費量を下げることができます。

テクスチャ圧縮

GPUやドライバによってサポートされている形式が異なります。各デバイスごとに必要な圧縮形式で圧縮しておいてランタイム時にその端末にあった圧縮形式のファイルを取りに行く形にしないといけない。(少しめんどくさい)

ただ、ユーザーにとっては帯域も使われないですし、VRAMも使われないのでより快適な動作環境を提供することが可能になります。

圧縮テクスチャ形式
  • S3TC(PCサポート率高)
  • ETC(Androidサポート率高)
  • PVRTC(iOS向けサポート率高)

エクステンションでの高速化

WebGL2.0でエクステンション次第で使えたりします。

OES_vertex_array_obect拡張で使える(96%)
ANGLE_instanced_arrays(93%)パーティクルなどの演出で使える(フォールバックが極めて面倒)
OES_texture_float(76%)
WEBGL_draw_buffers(デスクトップで68%)

レンダリングの回数を減らすことができます。(3回を1回にするなど)

glTFとは?

  • Khronos(クロノス)が標準化しようとしているJSONで3Dモデルやシーンを表現するフォーマット
  • 例えるなら3Dフォーマットにおけるjpegを目指しています。

audioの標準はmp3ですし、videoの標準はH.264ですし、画像の標準はjpegです。3Dモデルの標準はglTFって感じです。

特徴

ランタイム時のためのモデルフォーマット

編集が目的ではない。

ダウンロードしてきたらすぐ表示することが目的

JSでのパースが非常に容易

WebGLで使うことが想定されているのでJavaScriptでのパースが非常に容易です。

WebGLでの表示が非常に簡単です。

メタ情報の中に含まれてる定数はWebGLの中で使われる定数と対応しているのでその点んいついて考える必要がありません。(逆に言えば、WebGL以外のプラットフォームで使う場合は考慮が必要になります。)

無駄なデータが省かれています。

例えば、パースをする必要がない座標などはバイナリになっていて小さくなっています。パースが必要な部分と必要ない部分できっちり分かれている作りになっていて無駄なデータがないです。

各種エクスポーター/コンバーターを備えている

エクスポーター
  • three.js
コンバーター
  • Blender
  • Unity

Paint3Dにも出力機能がついた

glTFにはマイクロソフトも積極的です。

Sketchfabで100000以上のモデルデータをダウンロード可能

Apple Watchのページでも使われました。

メッシュにカスタムプロパティを付与できる。

ここに値を入れておくとBabylonに持って行ったときにJavaScriptからいろいろ使える。

2.0の仕様が策定されました。

  • PBR
  • スキンアニメーション

種類

glb

バイナリ形式で一つだけファイルが出力されます。その中にJSONと頂点情報、外部テクスチャが含まれている。

コピーする際などは1ファイルのコピーだけで済むので楽。

gltf

JSON(モデル情報) + 埋め込みテクスチャ(テクスチャなどのバイナリ情報が文字列エンコードされて埋め込まれる)

JSON + 外部テクスチャ(texturesというフォルダができてそこに出力される。)

スポンサーリンク
  • 2022 04.08
  • miyabisan2
  • コメントを書く
  • Web技術
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2023 09.13

    【Web技術】配信のための画像の知識

  2. 2023 09.16

    【Web技術】キャッシュに関わるHTTPヘッダーについて

  3. 2018 05.27

    ファイルの「圧縮」と「アーカイブ」と「解凍」、gzip圧縮について

  4. 2023 09.14

    【Web技術】CDNについて

  5. 2022 04.11

    【WebGL】WebGLの基本、知っておいた方が良い「CPU」と「GPU」の知識

  6. 2023 09.16

    【Web技術】Cache-Control調査

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Three.js】基本

【オブジェクト指向】「継承以外」で「似たような処理」を…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Git
  • GitLab
  • GraphQL
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • WebRTC
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー