Skip to content

add:Added Tone feature to BaseMap#161

Merged
CA-Tatami merged 45 commits into
mainfrom
pr-160
Sep 1, 2025
Merged

add:Added Tone feature to BaseMap#161
CA-Tatami merged 45 commits into
mainfrom
pr-160

Conversation

@CA-Tatami
Copy link
Copy Markdown
Contributor

@CA-Tatami CA-Tatami commented Aug 12, 2025

#160 のPRを調整したものです。
Base MapにTone機能(Tritone, Pentone)を追加しました。
image


Tone機能の概要

輝度範囲を複数のトーン領域に分割し、入力テクスチャのグレースケール値に基づいて各領域の色を独立して制御します。
グレースケール入力テクスチャを想定しており、異なる輝度範囲を個別の色にマッピングします。

2つのモード

1. Tritone (3トーン)

  • シャドウ、ミッドトーン、ハイライトの3領域
  • 境界値によって領域間の輝度閾値を調整

2. Pentone (5トーン)

  • ダークトーン、シャドウ、ミッドトーン、ハイライト、ブライトトーンの5領域

主な変更点

シェーダー実装

  • ParticlesUberUnlit.hlsl: Tone処理関数の実装
  • 各シェーダーバリアントへのプロパティ追加
  • 最適化シェーダージェネレーターへの対応

エディタ機能

  • BaseMapToneMode.cs: モード定義の追加
  • ParticlesUberCommonGUI.cs: トーンプレビュー機能付きGUIの実装
  • Custom Coord対応による境界値のアニメーション制御

サンプル・テスト

  • Demo00にPentoneエフェクトのサンプルを追加
  • テストシーンにTone機能のテストケースを追加
  • プラットフォーム別テスト画像の更新

CANakanoYui and others added 11 commits August 8, 2025 18:40
- プロパティ名を統一(_BaseMapTriTone → _BaseMapTriToneEnabled など)
- 境界概念を明確化(Boundary統一で一貫性確保)
- エディターGUI表示名を改善(業界標準用語採用)
- MaterialPropertyNames、MaterialProperties、PostProcessorを更新
- 全シェーダーファイルでプロパティ表示名を統一
- ApplyTriTone関数の実装ロジックを維持

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
TriTone(TriColor)機能のUIを大幅に改善しました。

## 変更内容

### インデント構造の改善
- TriToneが有効な場合に表示されるすべてのプロパティにインデントを適用
- 視覚的な階層構造が明確になるように改善

### Boundary設定UIの刷新
- 従来の使いにくいFloatField + MinMaxSliderから、3つの独立したスライダーに変更
- 各スライダーに動的な範囲制約を適用(Shadow ≤ Midtones ≤ Highlights)
- 直感的な操作が可能に

### 視覚的範囲表示バーの追加
- 各トーン領域を色分けして表示する横バーを追加
- Shadow(黒)、Midtones(グレー)、Highlights(明グレー)、Beyond(白)を視覚的に表現
- 各領域の境界値を右端に表示(S:0.250, M:0.500, H:0.750形式)
- 境界線を色付きで表示(赤、黄、緑)

### 表示順序の統一
- Color設定をShadow → Midtones → Highlightsの順序に変更
- Boundary設定と同じ順序で統一

### 視認性の向上
- 各領域の明度差を均等化(0.30刻み)して境界を見やすく
- 背景色に応じたテキスト色の自動調整(暗い背景には白文字、明るい背景には黒文字)

## 技術的詳細
- Unity標準のインデント幅(15ピクセル)を手動で適用
- EditorGUI.DrawRectを使用した視覚的表現
- 小数点表示をF3形式で統一

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Base Mapセクションに新しいTriTone機能の詳細な説明を追加しました。

## 追加内容

### 機能説明
- 輝度範囲を3つのトーン領域(Shadow、Midtones、Highlights)に分割する機能
- グレースケール入力テクスチャを想定し、各領域に独立した色を適用
- 境界値による精密な遷移制御

### パラメータ説明
- Shadow/Midtones/Highlights Color: 各領域に適用される色設定
- Shadow/Midtones/Highlights Boundary: 色遷移の境界値設定
- 実装に基づく正確な境界パラメータの役割を記述

### 技術仕様
- 2段階の色遷移処理(Shadow→Midtones、Midtones→Highlights)
- smoothstep関数による滑らかな色遷移
- デフォルト値: Shadow(0.0), Midtones(0.5), Highlights(1.0)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
@CA-Tatami CA-Tatami changed the title feat: TriTone UI改善とREADME更新 add:Added TriTone feature to BaseMap Aug 12, 2025
CA-Tatami and others added 17 commits August 13, 2025 13:51
Custom Coord対応でApplyTriTone関数がcustomCoords配列にアクセスできない問題を解決。
関数化せずにfragUnlit内で直接処理することで、スコープ問題を回避し、
コードをよりシンプルにしました。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Custom Coord使用時に境界値の順序が逆転する問題を修正。最小間隔0.005を設けることで
smoothstep関数の安全性を確保し、各領域の存在を保証。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Shadow/Highlight + Balance方式に変更
  - BalanceはShadow-Highlight間の相対位置(0-1)として機能
  - より直感的なパラメータ制御を実現

- プロパティ名の最適化
  - _BaseMapTriToneHighlightsColor → _BaseMapTriToneHighlightColor
  - 境界値プロパティを簡潔な名前に変更

- GUI機能の強化
  - リアルタイムグラデーションプレビュー実装
  - After Effects風のインターフェース
  - 個別Custom Coord対応

- パフォーマンス最適化
  - 変更検出による効率的なテクスチャ更新
  - メモリリーク修正(Texture2D自動クリーンアップ)
  - 静的コンストラクタによる安全な初期化

- シェーダー計算の改良
  - RGB値直接使用を維持
  - 効率的な2段階補間実装
  - 自動順序保証の改善

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
## 変更内容

### プレビュー実装の刷新
- テクスチャベースからEditorGUI.DrawRect(256ステップ)に変更
- メモリリーク問題を根本解決(動的テクスチャ生成を完全廃止)
- グラデーション表現を維持しつつ軽量化を実現

### GUI値制限の改善
- 個別変更検出による適切な値制限を実装
- Shadow変更時:Shadowを制限(Highlightを書き換えない)
- Highlight変更時:Highlightを制限(Shadowを書き換えない)
- Balance値を0.01-0.99の範囲に制限

### 表示とレイアウトの修正
- プレビューがTriToneセクション内に適切にインデント表示
- 表記を"Tri-Tone"から"TriTone"に統一
- 不要なコメントと処理を削除してコードを簡潔化

### 技術的改善
- 複雑なテクスチャ管理とメモリクリーンアップロジックを削除
- 100行以上のコード削減
- 静的リソース依存を排除
- リアルタイムでの値更新とプレビュー表示

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
## 変更内容

### グレースケール参照バーの追加
- プレビュー上部に輝度参照用のグレースケールバー(12px)を追加
- 境界値と輝度の対応関係を視覚的に明確化
- 設定精度向上のためのガイド機能として実装

### プレビュー構造の改善
- DrawTriTonePreview()をメイン関数として整理
- DrawGrayscaleReference()で輝度参照表示
- DrawTriToneGradient()でカラーグラデーション表示
- 2段階表示によるBefore/After比較を実現

### UI/UXの改善
- Balance制限を0.01-0.99から0.001-0.999に緩和
- 境界マーカーラベル用に16pxの余白を確保
- グレースケール側の境界マーカーを削除(情報整理)
- プレビューとTone Boundariesテキストの重複を解消

### 視覚的品質向上
- グラデーション解像度を256ステップに維持
- 輝度とカラーの対応関係を直感的に表示
- プロフェッショナルツール(After Effects等)と同等のUI

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- GUIとシェーダーで連続補間による統一処理を実装
- Unity SmoothStepとHLSL smoothstepの動作差異を解決
- GUI表示名を改善(Shadow Boundary/Highlight Boundary)
- 境界値の安全性チェック機能を保持
- デバッグコードを削除してコードを整理

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- GUIとシェーダーの並び順を明るい順(Highlights → Midtones → Shadows)に統一
- Balance → Midtonesにリネーム(より直感的な名称に)
- パラメータ名を複数形に変更(After Effects等の業界標準に準拠)
  - Shadow → Shadows
  - Highlight → Highlights
  - Midtones(既に複数形)

これらの変更により、ユーザーにとってより親しみやすく、
業界標準ツールと一貫性のあるインターフェースを実現

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
シェーダー側ではRGB値のみを使用してアルファ値は反映されないため、
GUIプレビューでも同様にアルファ値を1.0に固定して表示するように変更

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
# Conflicts:
#	Assets/Nova/Editor/Core/Scripts/Optimizer/OptimizedShaderGenerator.cs
#	Assets/Nova/Runtime/Core/Shaders/ParticlesUberLit.shader
#	Assets/Nova/Runtime/Core/Shaders/ParticlesUberUnlit.hlsl
#	Assets/Nova/Runtime/Core/Shaders/ParticlesUberUnlit.shader
#	Documentation~/Images/base_map.png
#	README.md
#	README_JA.md
- BaseMapToneModeプルダウンでNone/Tritone/Pentoneを選択可能
- Tritone: 3段階トーン (Highlights/Midtones/Shadows)
- Pentone: 5段階トーン (Highlights/Brights/Midtones/Darktones/Shadows)
- Brights/Darktonesの境界値は自動計算 (0.5固定)
- 排他的シェーダーキーワード (_BASE_MAP_TONE_MODE_TRITONE/_BASE_MAP_TONE_MODE_PENTONE)
- エディターでPentoneプレビュー機能追加
- 全シェーダーバリアント対応 (Unlit/Lit/UIParticles)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- _BASE_MAP_TRI_TONE_ENABLEDを新しいキーワードに変更
- _BASE_MAP_TONE_MODE_TRITONE/_BASE_MAP_TONE_MODE_PENTONEに対応
- 最適化シェーダー生成時に新しいキーワードが正しく処理される

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- 未使用のDrawBoundaryPropertyWithConstraintメソッドを削除(40行)
- 空実装の静的コンストラクタとPlayMode監視処理を削除(9行)
- メモリリーク要因となるイベントハンドラー登録を除去
- コードの保守性向上とクリーンアップ

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
CA-Tatami and others added 17 commits August 20, 2025 15:23
- SmoothStepCustom関数を削除し、Mathf.InverseLerpに置き換え
- シェーダー側でInverseLerpSafe関数を実装して重複コードを排除
- TritoneとPentoneの両方で線形補間を使用し、線形グラデーションとの一致を実現
- コード構造を統一してメンテナンス性を向上

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Base Map Tone機能の輝度計算に使用するカラーチャンネルを選択可能にしました。
- Red、Green、Blue、Alpha(デフォルト)から選択可能
- 従来の固定red(color.r)から柔軟なチャンネル選択に変更
- Alpha TransitionのChannels機能と同様のUI/UX
- 全4シェーダー(Unlit/Lit、UIParticles)に対応
- README/README_JAでドキュメント更新

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
PentoneモードにBrightsとDarktonesの境界位置を調整可能な機能を追加:

- マテリアルプロパティ:_BaseMapToneBrights/_BaseMapToneDarktones (境界値)
- CustomCoord対応:_BaseMapToneBrightsCoord/_BaseMapToneDarktonesCoord
- HLSL実装:固定0.5から調整可能なlerp計算に変更
- エディタUI:適切な順序でUI配置 (Highlights→Brights→Midtones→Darktones→Shadows)
- 入力範囲制限:0.001-0.999でMidtonesと統一
- デフォルト値0.5で後方互換性を維持

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
PentoneモードのグラデーションプレビューでBrightsとDarktonesの境界位置が動的パラメータに反映されない問題を修正:

- DrawPentonePreview関数にbrightsBalance、darktonesBalanceパラメータを追加
- 固定値0.5からユーザー設定値を使用するようにプレビュー計算を変更
- BrightsとDarktonesスライダー操作時にプレビューのB、Dマーカー位置が連動

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
READMEでのTone機能の説明を改善:

- パラメータ名を実装と一致: Boundary → 削除(Highlights/Midtones/Shadows)
- 並び順を明るい順に統一: Highlights → Brights → Midtones → Darktones → Shadows
- 説明文の統一:
  - Highlights/Shadows: 輝度境界値設定
  - Brights/Darktones: 境界位置制御(0.0-1.0、デフォルト0.5)
  - 固定「自動計算」→「パラメータで調整可能」に更新
- 新機能のBrights/Darktonesパラメータ説明を追加

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
READMEのTone機能説明を簡潔にし、不要な情報を削除:

- 自明な輝度範囲説明を削除: (bright/medium/dark luminance range)
- パラメータ範囲表記を削除: (0.0-1.0)
- CustomCoord説明を削除: "Can be animated using Custom Coord"
- デフォルト値説明を削除: "At 0.5 (default), boundary positioned at midpoint"
- Brights/Darktonesには位置説明を維持: (between highlights and midtones)
- 冗長な語彙を削除: regions → 削除、領域 → 削除

説明文が必要最小限の情報に絞られ、より読みやすくなりました。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
Midtonesパラメータの説明を実装の動作と一致するよう修正:

Before:
- Tritoneモードでは遷移点を決定し、Pentoneモードでは中心参照点として機能

After:
- ShadowsとHighlights間の中間点位置を決定することでバランスを制御

実装では両モードとも同じ役割(midpoint = lerp(shadows, highlights, midtonesBalance))を
果たしているため、モード別の異なる説明を統一的で正確な説明に変更。

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
# Conflicts:
#	Assets/Tests/Scenes/Test_UIParticleUnlit.unity
@CA-Tatami CA-Tatami changed the title add:Added TriTone feature to BaseMap add:Added Tone feature to BaseMap Sep 1, 2025
Copy link
Copy Markdown
Contributor

@CyTakayukiKiyohara CyTakayukiKiyohara left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

私の環境でテスト実行して通過するのを確認しました。

@CA-Tatami CA-Tatami merged commit 1448998 into main Sep 1, 2025
1 check passed
@CA-Tatami CA-Tatami deleted the pr-160 branch September 1, 2025 06:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants