Welcome, Guest! Log In | Create Account

XOOPS Cube コア v1.0 'unleashed'

開発中の XOOPS Cube と XOOPS Cube Legacy に関して議論を行うスペース。

Moderator: JA moderators

Forum rules
Tracker と同じく "何日後になるかは分からないが、開発者は這ってでも必ず見る" という板を目指して試験運営中です。

XOOPS Cube コア v1.0 'unleashed'

Postby minahito » Tue Feb 10, 2009 4:45 am

 こんにちは。

 昨晩コミットした Revision: 58 はXCだじぇい次の XOOPS Cube スレ終盤で話題になったレンダーシーケンスに関するアプローチ修正を反映させたものです。これにより、

- レンダーシステムにレンダーターゲットを設定
- レンダーシステムにアトリビュートをアサイン
- レンダーシステムにリソースを設定
- レンダーシステムの render() をコール


 で、レンダリングが行うことができるようになりました。

 従来の XCube コア sandbox ブランチの試作版では、レンダーシステムやレンダーターゲットの切り替えは完全にコア側で行うことになっていて、描画申請側からは描画コマンドを投げることしかできませんでした。しかし、最新のコミットではコア側は描画順の制御しかやってません。シーケンスがすっきりしたのはこのためです。

 しかし、これは一旦プログラムをすっきりさせる働きのある修正ではありますが、コアのレンダーシーケンスの制御機構としての性能は確実に低下しました(ありがち)。

 まず、第一に Cube コア側から使用したレンダーシステムとターゲットが見えないという難点があります。このため、「描画シーケンス中にレンダーシステムが変更できる」という Cube のスペックをコア側で隠蔽するチャンスがなく、その仕組みは全面的に BASE から提供してもらわないといけません。当然 BASE 間でばらつきが出れば、マルチ BASE 対応モジュールの開発はそのぶん手間になります。

 次に、レンダーシステムがレンダリングに使用するパラメータを直接持つことになってしまったため、ある描画が前工程のパラメータを使用していたとき、ユーザーさんが前の方で使うレンダーシステムを変更してしまう(なにかのMODを入れちゃう)と、後ろの工程にモロに影響が出ます。これは XOOPS2 ではテクニック化していましたが、 XOOPS Cube 以降はどのタイミングでレンダーシステムが切り替わるか分からないため、禁止事項になっていたものです。コア v0.9 がレンダーターゲットにパラメータを仕込むようにして、空間を独立させていたのはこのためなのですが、それが XOOPS2 時代まで戻ってしまいました。

 ちなみに、今回はコレクションの中でレンダーシステム単位のソートを行っていません(ドローオブジェクトがどのレンダーシステムを使用するかがコア側から見えないため)。そのため、 onokazu さんのいうレンダーシステムをコレクションに突っ込ませてレンダリングさせるというアイデアを積むことはできませんでした。

 今回の修正で、すべての描画/合成要素をレンダーターゲット単位でとらえつつ、設計自体を分かり易くしていく(過度のシーケンスをコア側で持たない)のは難しいと分かりました。最終出力の合成と、その構成要素内の合成的処理のプロセスを分けて処理する方向へ持って行こうと思います。

 なおコミットログには書きましたが、今回から暫く hello world 以外のサンプルは動作しません。 orz
User avatar
minahito
Site Admin
 
Posts: 162
Joined: Sat Sep 20, 2008 6:13 am
Location: Japan

Re: XOOPS Cube コア v1.0 'unleashed'

Postby jidaikobo » Wed Feb 11, 2009 6:12 am

jidaikobo です。minahito さん、おつかれさまです!

minahito wrote:なおコミットログには書きましたが、今回から暫く hello world 以外のサンプルは動作しません。 orz

とは書いてあるものの、楽しみにしていたので触ってみました :-D
たしかにまだどう遊んでいいのかわかりませんが、index.php の execute() をコメントアウトしたら消えたりとか、templates のなかをいじってみたりとか、サルみたいなことして遊んでます。

Code: Select all
/XCube_PHP4/branches/minahito_sandbox/core/XCube_Root.class.php

に、簡単な typo が二つあったのでコミットしてみました。
コードに追いついてないので、トンチンカンなとこをしていたらすみません。
User avatar
jidaikobo
 
Posts: 30
Joined: Wed Oct 08, 2008 5:04 am
Location: Kyoto, Japan

Re: XOOPS Cube コア v1.0 'unleashed'

Postby minahito » Thu Feb 26, 2009 2:58 am

OSC に jidaikobo さんと話したときのメモです。

テーマ体系は純粋なリソースではなく、プログラムを必要とするケースをサポートする
  • 例えば Drupal WordPress などのテーマをそのまま流用できるコンポーネントは、何らかの実行コードを必要とする。
  • unleashed コアは、テーマとテンプレートを同一視してきた。しかし、レンダラの仕組みは同じでも、テーマには独自のパイプラインが必要だということ。
  • テーマはスタイルシートのみを定義すればよいという新テーマ体系 Jedai (初耳)は、基礎となるテーマリソースのオーバーライドのみで構成されている。
  • テーマは、それが実行コードを伴うかどうかはともかく、基礎となるものを指定する必要がある。「それ」はレンダラー(レンダーシステム)のことではない。

 テーマも同じくテンプレートリソースの一種だからレンダラの指定も必要だが、別途、 "テーマ体系たるもの" を指定する必要がある。そのものは、
  • Drupal Theme 流用など、特殊なミッションをこなすための追加コードを持つことができる
  • Jedai のような仕組みのテーマ体系に基礎リソース(基礎テンプレート、基礎CSS)を提供する役割を持つことができる
  • 上の2つは排他的ではない

そのほか
  • 超上級者向けのワンオフカスタマイズ機能として、テーマのためのプリロードに相当する機能を提供する
User avatar
minahito
Site Admin
 
Posts: 162
Joined: Sat Sep 20, 2008 6:13 am
Location: Japan


Return to Developer Talk (開発者の話し合い)

Who is online

Users browsing this forum: No registered users and 1 guest