SlideShare a Scribd company logo
1 of 22
Download to read offline
デザイナーショック外伝
    DCCツール別
リアルタイムシェーダの環境
   -RTShader共有化への思索-




                               発表者:麓 一博
               株式会社セガ テクニカルアーティスト
                   <Fumoto_Kazuhiro@sega.co.jp>
セッション概要
1.   はじめに
2.   何故DCCでRTシェーダを確認する必要があるのか?
3.   サポートしているシェーダ言語
4.   RTシェーダ適用方法の違い
5.   RTシェーダ記述内容の違い
6.   シェーダファイル共有化
7.   まとめ
はじめに
• 何故DCCでRTシェーダを確認する必要があるのか?
• DCCがサポートしているシェーダ言語
何故DCCでRTシェーダを
  確認する必要があるのか?
• 作成しているデザインソースにそのまま適用できる
• アーティストにとって特殊なプログラム環境を必要とし
  ない
• シェーダを理解することでより高度な表現を実現できる
サポートしているシェーダ言語
• Softimage
  cgfx,HLSLfx,GLSL
• MAYA
  cgfx,HLSLfx
• Max
  HLSLfx,cgfx
RTシェーダ適用方法の違い
Softimage
• プラグイン管理風シェーダノード




• GLSLはレンダーツリーのノードに直接コードを記述
MAYA
• シェーダのアトリビュートエディタからファイルを指定
Max
• ダイレクトXシェーダマテリアル




• MentalMillによるMetaSL(今回は省略)
RTシェーダ記述内容の違い
Softimage
• Standard Annotations and Semantics (SAS)
  Sofimage内のオブジェクトをバインドするための標準セ
  マンティックパラメータがあるのが特徴

         float3 dirlight0
         <
                   bool SasUiVisible = false;
                   string SasBindAddress = "sas.directionallight[0].direction";
         >;
         float3 dirlight0color
         <
                   bool SasUiVisible = false;
                   string SasBindAddress = "sas.directionallight[0].color";
         >;
MAYA
• 型、変数名の後の:アノテーションが意味を持つ


      float3 dirlight0 : Direction
      <
                string UIName = "Lamp Position";
                string Object = "DirectionalLight";
                string Space = "World";
      > = {0.0, 0.0, 0.0};
      float4 dirlight0color : COLOR
      <
                string UIName = "Light Color";
      > = { 1.0f, 1.0f, 1.0f, 1.0f, };
Max
• アノテーションのstring       float3 dirlight0 : Direction
                       <
  Object =””ライトタイプ                string UIName = "Light Direction";
                                  string Object = "TargetLight";
  を設定する。                          string Space = "World";
                                  string UIWidget = "NONE";
                                  int RefID = 0;
                       > = {0.0, 0.0, 0.0};


                       int UV01<
• UVに名前がないので               string UIName = "texcoord0";
                           string UIType = "intSpinner";
  TEXCOORDに渡すのにID          int UIMin = 1;
                           int UIMax = 99;
  を指定するUIを作成する         > = 1;
                       int texcoord0 : Texcoord
  必要がある等               <
                           int Texcoord = 0;
                           int MapChannel = 1;
                           string UIWidget = "None";
                       >;
これだけ違えば
デザイナーはショックをうけます
シェーダファイル共有化
• それぞれDCCツール毎のコードを作成し、DCCツールの
  コンパイラに送るためのMacro(#ifdef)を設定する



            シェーダファイル


 #ifdef
DCC別Macro名
 • Max = _3DSMAX_

 • Softimage = XSI
   ※2011から

 • MAYA = 無し
Macroで仕分けた例
 #if defined (_3DSMAX_)
                          // max用ライト
                          float3 dirlight0 : Direction
                          <
                                                         string UIName = "Light Direction";
                                                         string Object = "TargetLight";
                                                         string Space = "World";
                                                         string UIWidget = "NONE";
                                                         int RefID = 0;
                          > = {0.0, 0.0, 0.0};
                          float4 dirlight0color : LightColor
                          <




 小さくて読めない!
                                                           string UIName = "Light Color";
                                                           int LightRef = 0;
                                                           string UIWidget = "NONE";
                          > = { 0.0f, 0.0f, 0.0f, 0.0f, };
 #elif defined (XSI)
                          // Softimage用ライトSAS
                          float3 dirlight0
                          <
                                                         bool SasUiVisible = false;
                                                         string SasBindAddress = "sas.directionallight[0].direction";
                          >;
                          float3 dirlight0color
                          <
                                                         bool SasUiVisible = false;
                                                         string SasBindAddress = "sas.directionallight[0].color";
                          >;
 #else
                          // maya用ライト
                          float3 dirlight0 : Direction
                          <
                                                         string UIName = "Lamp Position";
                                                         string Object = "DirectionalLight";
                                                         string Space = "World";
                          > = {0.0, 0.0, 0.0};
                          float4 dirlight0color : COLOR
                          <
                                                           string UIName = "Light Color";
                          > = { 1.0f, 1.0f, 1.0f, 1.0f, };
 #endif
Macroで仕分けた例1
#if defined (_3DSMAX_)
              // max用ライト
              float3 dirlight0 : Direction
              <
                            string UIName = "Light Direction";
                            string Object = "TargetLight";
                            string Space = "World";
                            string UIWidget = "NONE";
                            int RefID = 0;
              > = {0.0, 0.0, 0.0};
              float4 dirlight0color : LightColor
              <
                            string UIName = "Light Color";
                            int LightRef = 0;
                            string UIWidget = "NONE";
              > = { 0.0f, 0.0f, 0.0f, 0.0f, };
Macroで仕分けた例2
#elif defined (XSI)
             // Softimage用ライトSAS
             float3 dirlight0
             <
                           bool SasUiVisible = false;
                           string SasBindAddress = "sas.directionallight[0].direction";
             >;
             float3 dirlight0color
             <
                           bool SasUiVisible = false;
                           string SasBindAddress = "sas.directionallight[0].color";
             >;
Macroで仕分けた例3
#else
         // maya用ライト
         float3 dirlight0 : Direction
         <
                       string UIName = "Lamp Position";
                       string Object = "DirectionalLight";
                       string Space = "World";
         > = {0.0, 0.0, 0.0};
         float4 dirlight0color : COLOR
         <
                       string UIName = "Light Color";
         > = { 1.0f, 1.0f, 1.0f, 1.0f, };
#endif
まとめ
• どのDCCツールも言語は共通で外部ファイル形式
• パラメータを渡す時に特徴がある




           所感
• プログラムの最初の入りとしてはシェーダが最適
ご清聴ありがとうございました

More Related Content

More from fumoto kazuhiro

究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)fumoto kazuhiro
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例fumoto kazuhiro
 
そうだRTシェーダをはじめよう
そうだRTシェーダをはじめようそうだRTシェーダをはじめよう
そうだRTシェーダをはじめようfumoto kazuhiro
 
Cedec taラウンドテーブル プログラマー編
Cedec taラウンドテーブル プログラマー編Cedec taラウンドテーブル プログラマー編
Cedec taラウンドテーブル プログラマー編fumoto kazuhiro
 
Gdc2011報告会用 fumotokz
Gdc2011報告会用 fumotokzGdc2011報告会用 fumotokz
Gdc2011報告会用 fumotokzfumoto kazuhiro
 
海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみるfumoto kazuhiro
 
データフロー自動化ツールの考え方
データフロー自動化ツールの考え方データフロー自動化ツールの考え方
データフロー自動化ツールの考え方fumoto kazuhiro
 
第一回テクニカルアーティストラウンドテーブル・セッション
第一回テクニカルアーティストラウンドテーブル・セッション第一回テクニカルアーティストラウンドテーブル・セッション
第一回テクニカルアーティストラウンドテーブル・セッションfumoto kazuhiro
 

More from fumoto kazuhiro (12)

究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)究極のバッチフレームワーク(予定)
究極のバッチフレームワーク(予定)
 
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
 
そうだRTシェーダをはじめよう
そうだRTシェーダをはじめようそうだRTシェーダをはじめよう
そうだRTシェーダをはじめよう
 
SA09 Realtime education
SA09 Realtime educationSA09 Realtime education
SA09 Realtime education
 
Taと歩くgdc2012 up
Taと歩くgdc2012 upTaと歩くgdc2012 up
Taと歩くgdc2012 up
 
Tart2011 Art sub
Tart2011 Art subTart2011 Art sub
Tart2011 Art sub
 
Cedec taラウンドテーブル プログラマー編
Cedec taラウンドテーブル プログラマー編Cedec taラウンドテーブル プログラマー編
Cedec taラウンドテーブル プログラマー編
 
Gdc2011報告会用 fumotokz
Gdc2011報告会用 fumotokzGdc2011報告会用 fumotokz
Gdc2011報告会用 fumotokz
 
Cyma gdc2011 tabc報告
Cyma gdc2011 tabc報告Cyma gdc2011 tabc報告
Cyma gdc2011 tabc報告
 
海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる海外Ta事情から日本のta像について考えてみる
海外Ta事情から日本のta像について考えてみる
 
データフロー自動化ツールの考え方
データフロー自動化ツールの考え方データフロー自動化ツールの考え方
データフロー自動化ツールの考え方
 
第一回テクニカルアーティストラウンドテーブル・セッション
第一回テクニカルアーティストラウンドテーブル・セッション第一回テクニカルアーティストラウンドテーブル・セッション
第一回テクニカルアーティストラウンドテーブル・セッション
 

Recently uploaded

UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドKen Fukui
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドKen Fukui
 

Recently uploaded (10)

UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライドリアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
リアル戦国探究in米沢 当日講座1(スタッフ共有用)『兵は詐をもって立つ』についてのスライド
 

Dccツール別リアルタイムシェーダの環境