ゲーム制作技術録

主にUnity/Godot4関連の技術ブログです

【Unity】【URP】自作シェーダーが表示されない(Depth Priming Mode について)

UniversalRP(URP12)で自作シェーダーをオブジェクトに適応すると正常に表示されず透明になってしまう現象についてです。

  • 前提
  • 結論
  • Depth Priming Mode とは
    • Depth Prepassとは
  • なぜ自作シェーダーが描画されない?
  • 参考

Unity 2021.3
UniversalRP 12.1
Forward

そこにいるのに……
続きを読む

【Unity】【Mesh】3Dメッシュの表面積を求める

オブジェクトの表面積(正確にはメッシュの表面積)を求めます。

  • はじめに
  • 計算の流れ
  • メッシュの取得
  • すべての三角ポリゴンを取得
    • 三角ポリゴンの頂点配列
    • 頂点のローカル座標配列
    • 三角ポリゴン数
  • 各頂点のワールド座標を算出
    • 配列定義
    • ローカル座標からワールド座標へ変換
  • すべての三角形の面積を計算する
    • 面積の合計
    • 各ポリゴンの面積を計算して合計に加算
  • 面積の合計を返す
  • 実行結果
  • コード全文

Unity 2021.3

表面積
続きを読む

【Unity】【Mesh】3D空間における三角形ポリゴンの面積を求める

三次元空間における3つの頂点からなる三角形ポリゴンの面積を計算します。

  • メッシュデータの取得
  • 頂点インデックスの取得
  • 頂点座標の取得
    • ローカル座標
    • ワールド座標へ変換
  • 面積の計算
    • 三角形の頂点座標
    • 2ベクトルの外積
    • magnitude / 2
  • 実行結果
  • 次回
  • コード全文
  • 参考

Unity 2021.3

続きを読む

【Unity】【URP12】自作Unlitシェーダーにノーマルマップを実装する

今回は作ったUnlitシェーダーにノーマルマップ(法線マップ、バンプマップ)を実装する記事です。

  • はじめに
  • プロパティを追加する
  • 変数を定義する
  • タンジェントを追加
  • 正弦とワールド空間のタンジェントの計算
  • ノーマルマップを追加する
    • 参考
  • ワールド空間に変換する
  • ノーマルを適応する
  • 実行結果
  • コード全文
  • 参考

Unity 2021.3
UniversalRP 12.1
Forward

ノーマルマップを適応した状態
続きを読む

【Unity】【URP12】自作Unlitシェーダーでセルフシャドウ

今回はURP対応の自作HLSLシェーダーでのセルフシャドウ実装に焦点を置いた話をします。

  • はじめに
  • 必要なデータを取得する
    • ノーマル情報の取得
      • Attributes
      • Varyings
      • 頂点シェーダーにノーマル処理を追加する
      • 確認
    • ライト情報の取得
      • #include
      • MainLightの取得
  • 陰影をつける
    • ノーマルとライト方向の内積
      • ここまでのfrag()全体
  • 影をトゥーンにする
  • コード全文
  • 参考

Unity 2021.3
UniversalRP 12.1
Forward

続きを読む

【Unity】【URP12対応】Unlitから自作シェーダー : HLSLへ書き換え

シェーダーの勉強がてらUnlitからシェーダーを自作したいと思います。
今回はURP対応の、HLSLへの書き換えをメインにしつつ、テクスチャ表示をします。

完成はトゥーンシェーダーになる予定です。

  • はじめに
  • 事前準備
    • オブジェクトの作成
    • シェーダーとマテリアルの作成
    • Depth Priming Mode をDisabledに変更
  • HLSLへ書き換え
    • プロパティ
    • Tags
    • PROGRAM / END
    • #include
    • struct
    • 変数
    • 頂点シェーダー
    • フラグメントシェーダー
  • 実行結果
  • コード全文
  • 終わりに
  • 参考

Unity 2021.3
UniversalRP 12.1
Forward

作成したトゥーンシェーダー
続きを読む

【Godot4】入力の取得(InputEvent)

Godot4とGDScriptでプレイヤーのデバイス入力情報の取得についてまとめました。

  • InputEventについて
  • InputMapについて
  • InputMapにアクションの登録
  • 入力検知の実装
  • 実行結果
  • 参考

Godot 4.1.1

続きを読む