Mac の PixelBender3D Preview Release の使い方

2011年03月03日 18:3月

FlashPlayer Incubator の公開につづいて Molehill API での shader を作成するための PixelBender3D も公開されたようです。

Adobe Pixel Bender 3D | vertex and fragment shaders, molehill – Adobe Labs

下準備

さて、いざ使ってみようと起動しようとしても起動しませんね・・・。
ReadMe.pdf には command-line compilers と書いてありますが、Mac 版はなぜか App 形式の pb3dutil が入っているようで、このままでは Terminal などを使って Shader をコンパイル出来ません。ので、pb3dutil を右クリック、「パッケージの内容を表示」で必要なファイルを引っ張り出しましょう。パッケージの中は以下のような内容になっていると思います。

/usr/local の中に PixelBender3D 用のディレクトリを作って Frameworks, MacOS ディレクトリをコピーしましょう。Mac OS ディレクトリは bin とリネームしておきましょう。

さて、次は Terminal などで pb3dutil を実行するために bash 等にパスを通す必要があります。~/.bash_profile などに下記のようにパスを記述します。

export PATH=/usr/local/PixelBender3D/bin:$PATH

パスを追加したら Terminal に設定の反映をするために .bash_profile を再読込させるために、下記のコマンドを実行します。

source ~/.bash_profile

これで、Terminal から pd3dutil が使用できるようになりました。

使用方法

Vertex Shader のコンパイル

pb3dutil VertexKernel.pbvk outputFileName

一つの pb3dasm ファイルができあがる。

Fragment Shader のコンパイル

pb3dutil FragmentKernel.pbmk materialVertexOutputFileName fragmentOutputFileName

二つの pb3dasm ファイルができあがる。

fragment shader は二つファイルができあがるみたい。ちなみに pb3dasm はテキストファイルだった。

Comments : 99, Tags : タグ: , Category : Program

Molehill のローレベル API で遊ぼう

2011年03月03日 17:3月

さて、ついに Flash にも OpenGL や DirectX のような GPU を使うためのローレベル API が使える Flash Player 11 の Beta 版が公開されました。
FDT や Flash Builder での Molehill を使いたい場合は clockmaker さんのインストール方法で使えるのでそちらを参考にしてください。

Molehill を搭載した Flash Player Incubator プレビュー版が公開

通常だと Away3D や Papervision3D, Alternative3D などのライブラリを使って弄るのですが、ここでは全くライブラリを使わずに描画していこうと思います。

とりあえず、単純に矩形にテクスチャー張って回してみました。
Molehill Test(要FlashPlayer11:incubator)

どうやら、OSX の Chrome だとうまく GPU で動いてくれてないみたい。Safari だと大丈夫でした。

OpenGL みたいな最小限のパイプラインがないっぽいので、Context3D ごとに shader を準備してあげる必要があるっぽい。
shader は PixelBender3D がでるまでは AGALMiniAssember.as で作成する必要がありそう。
AGALMiniAssember での書き方はドキュメントの Program3D に色々書いてありました。
AGALMiniAssember はなぜか含まれていないようなので下記から取得してください。

Digging more into the Molehill APIs – ByteArray.org

記述自体は見慣れない感じですが shader 書いたことある人ならすぐに理解できそうな感じです。
ローレベル API だけ使って描画するコードはこんな感じになりそうです。

Molehill の最小コード — Gist

次はもうちょっとまともな描画を書こう。

Comments : 99, Tags : タグ: , , Category : Program

Git Client for Mac OSX

2010年11月06日 12:11月

最近、Git のクライアントでいいのが無いか探したときに見つけたものとかをメモっておこうと思う。

Terminal

http://git-scm.com/
なにもいうまい。

Gitti

http://www.gittiapp.com/
未だに Beta 版だがいまのところもっとも使い易いクライアントな気がする。使用するにはサイトから登録する必要あり。
最近になってアプリを起動すると Gitti Expired とでるようになって使えなくなっている・・・。

GitX

http://gitx.frim.nl/
push や pull などがなくローカルリポジトリに対しての操作しかできないがログが視覚化されて見やすいので Gitti が出てくるまで Terminal と併用して使ってました。

GitX(Custom Ver.)

GitX は github にてソースコードが公開されていてそれにたいしていろんな人が fork してどんどんカスタマイズされたバージョンが存在している。
https://github.com/pieter/gitx/network
push や pull などが出来るようになってたりするバージョンがあるので自分は下記の GitX を使ってます。
https://github.com/brotherbard/gitx/

Tower

http://www.git-tower.com/
osx でつかうならとりあえず Tower をお勧めしたいくらいに良くできている。
少し前に ver 1.0 が公開されました。
Comming this November! と言うことで、まだ使えないけど期待大なクライアント。
スクリーンショットを見る感じだと Gitti に似ている感じかな。

Gitbox

http://gitbox.pierlis.com/
シンプルな Git クライアント

smartGit

http://www.syntevo.com/smartgit/index.html
smartSVN や SmartCVS などをつくっている syntevo がつくっている Git クライアント。
windows や Linux 版もある。
他にもいいクライアントがあったら是非教えてくださいー。

Comments : 99, Tags : , Category : Program

FDT の CodeTemplate 作った

2010年10月21日 00:10月

Mathクラスでよくやる高速化備忘録 で書かれていた物とBitwise gems – fast integer math を混ぜて FDT の CodeTemplate 作ってみました。

fastMathCodeTemplate.zip

  • abs : Math.abs
  • ceil : Math.ceil
  • floor : Math.floor
  • round : Math.round
  • max : Math.max
  • min : Math.min
  • checkeven : 偶数かチェック
  • divide : 2の自乗の除算
  • multiply : 2の自乗の乗算
  • flip : 数字の符号反転
  • modulo : 剰余

Comments : 99, Tags : タグ: , , Category : Program

HYPE がなんか楽しい

2010年05月07日 19:5月

Swarm とか BitmapCanvas とか色々用意されててもそもそしてたらいつのまにかできた。こういうのはやっぱたのしいな。
the HYPE Framework

package
{
import flash.filters.ColorMatrixFilter;
import hype.framework.core.TimeType;
import flash.filters.BlurFilter;
import hype.extended.rhythm.FilterCanvasRhythm;
import hype.extended.behavior.FixedVibration;
import hype.extended.behavior.Swarm;
import hype.extended.color.ColorPool;
import hype.extended.layout.ShapeLayout;
import hype.framework.core.ObjectPool;
import hype.framework.display.BitmapCanvas;
import hype.framework.rhythm.SimpleRhythm;
import flash.display.Sprite;
/**
* @author Mk-10:cellfusion
*/
public class Sample extends Sprite
{
private var _rhythm:SimpleRhythm;
private var _pool:ObjectPool;
private var _colorPool:ColorPool;
private var _clipContainer:Sprite;
private var _layout:ShapeLayout;
private var _bc:BitmapCanvas;
private var _blur:FilterCanvasRhythm;
public function Sample()
{
var bg:Sprite = new Sprite();
bg.graphics.beginFill(0x000000);
bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
bg.graphics.endFill();
addChild(bg);
_layout = new ShapeLayout(bg);
_bc = new BitmapCanvas(stage.stageWidth, stage.stageHeight);
addChild(_bc);
_clipContainer = new Sprite();
_colorPool = new ColorPool();
_pool = new ObjectPool(MyCircle, 100);
_pool.onRequestObject = poolRequest;
_rhythm = new SimpleRhythm(addNextClip);
_rhythm.start();
_bc.startCapture(_clipContainer, true);
_blur = new FilterCanvasRhythm([new ColorMatrixFilter([0.99, 0, 0, 0, 0, 0.99, 0, 0, 0, 0, 0.99, 0, 0, 0, 0, 1])], _bc);
_blur.start(TimeType.TIME, 100);
}
private function poolRequest(clip:Sprite):void
{
clip.scaleX = clip.scaleY = 0.8 * Math.random() + 0.2;
clip.x = stage.stageWidth * 0.5;
clip.y = stage.stageHeight * 0.5;
_clipContainer.addChild(clip);
var swarm:Swarm = new Swarm(clip, _layout.getNextPoint(), 5, 0.09, 25);
swarm.start();
var sVib:FixedVibration = new FixedVibration(clip, "scale", 0.9, 0.1, 0.2, 1, true);
sVib.start();
}
private function addNextClip(r:SimpleRhythm):void
{
if (_pool.isFull) {
r.stop();
} else {
_pool.request();
}
}
}
}
import flash.filters.DropShadowFilter;
import flash.display.Sprite;
class MyCircle extends Sprite
{
public function MyCircle()
{
var circle:Sprite = new Sprite();
circle.graphics.beginFill(0xFFFFFF);
circle.graphics.drawCircle(0, 0, 3);
circle.graphics.endFill();
addChild(circle);
filters = [new DropShadowFilter(0, 45, 0, 1, 2, 2, 1, 1)];
}
}

Comments : 99, Tags : タグ: , , Category : Program

FDT について喋ってきます

2010年04月29日 12:4月

!/blog/event/flashoop_35/ttl_flashoop_35.jpg!
Flash OOP 勉強会にて Flash の開発環境の勉強会があるので、FDT について語ってこようと思います。
FDT だけではなく FlashDevelop や Flash Builder についての環境の話も聴けるので、この勉強会で自分に合いそうな環境を探してみてはいかがでしょうか?
第35回 Flash OOP勉強会「Flash OOP presents/Flash開発環境自慢大会!」with Adobe station5
h3. イベント詳細
日時 : 5月11日(火)
会場 : THE GALLERY
渋谷区神宮前4丁目21-8 OWビル2F(Google Map)
内容 : Flash Builder、FlashDevelop、FDTの各開発環境の紹介をし、ユーザーによる「環境自慢」トークを行ないます。
司会 : 富川 真也 氏(Flash OOP)
スピーカー : FlashDevelop 佐藤 陽亮(bkzen), FDT 俺(Mk-10:cellfusion), Flash Builder 浦野 大輔(uranodai)
セミナー申し込みページ
※ 既に予約受付完了しました、たくさんの申し込みありがとうございます。

Comments : 99, Tags : , Category : Event

Progression 本執筆しました

2010年04月21日 15:4月

!/blog/diary/progbook/ttl_progbook.jpg!
FLASHer の味方 Progression 本の執筆をしました。
Progression てのはなんぞやという説明から、コンポーネントの使い方、コマンドやシーンの説明、etc… ここまで Progression について説明されてる書籍はないんじゃないかしらというくらいになかなかのボリュームだと思います。
これから Progression を使いはじめる方やすでに使っている方にもお勧めですよ。
今月末には書店に並ぶと思うのでよろしくお願いしまーす。

Comments : 99, Tags : タグ: , , , Category : Diary

FDT スペシャルキャンペーン

2010年03月19日 12:3月

Twitter でも告知したけど、FDT Pro & Enterprise がめっちゃくちゃお得に買えるキャンペーンやってます!
Powerflasher Solutions - Promotions
翻訳してもらいました!
アップグレードの価格より安いのでこの機会に是非体験してみてくださいー。

新年度に向けた FDT のスペシャルキャンペーン実施中!
いまお使いのFlash用開発ツールから FDT Pro もしくは Enterprise へのアップグレードをご検討中の方に、3月末までを限定に特別価格でご提供させて頂きます(Pro: $299 Enterprise $399)。
アップグレードにはお使いの Flash ツール購入時の領収書など、ライセンスの証明が必要です。詳しくは upgrade2FDT[at]powerflasher.com まで(日本語可)。

twitter でも @cellfusion@keisukes にリプライするといいかも。

Comments : 99, Tags : , Category : Program

fdt.jp を作りましたー

2009年12月28日 06:12月

この blog にいろいろ情報を書いていましたが、専用のサイト作った方がいいなと思ったので、 fdt.jp を作成しました。
http://www.fdt.jp/
インストール方法などから各種カスタマイズなどいろいろな tips やチュートリアルなどを掲載予定です。

Comments : 99, Tags : , Category : Program

FDT Library Tips

2009年12月07日 13:12月

FDT でのライブラリの使い方は大きく分けて二種類あります。一つは Linked Library を使ってプロジェクト外のライブラリを指定する方法。もう一つは Source Folder を作成してその中にライブラリのファイルを入れる方法です。今回は二つの指定方法と違いを説明します(おまけで swc のライブラリを指定する方法も書いておきました)
h3. Linked Library を使った指定方法
Linked Library はプロジェクト外のライブラリを使いたいときに使用します。

右クリック > New > Linked Libraries

Add で Linked Libraries の一覧が出てくるのでここで必要なライブラリを指定します。
もし、必要なライブラリが無い場合は New をクリックして追加します。

Linked Library はデフォルトの状態ではソースコードの表示は可能ですが、編集ができないようになっています。もし、編集したい場合は Preference > FDT > Misc の Enable working in linked libraries をチェックすることで編集が可能になります。
h4. Linked Library を追加

Name には識別名と Location にはそのライブラリのパスを指定します。
通常のソースコードのライブラリの場合は Folder を指定すればそのフォルダより下をライブラリと認識します。swc の場合には file をクリックして swc のパスを直接指定します。
Linked Libraries は Core Library でも使用しているので、ちょっとごちゃごちゃになりやすいので分かりやすい命名をしておくと見分けやすくなります。
h3. Source Folder を使った指定方法
ソースコードやプロジェクト内にライブラリを置いて使う場合には Source Folder を使います。

右クリック > New > Source Folder で追加するとフォルダを追加すると同時にそのフォルダを Source Folder にします。

また、指定したいフォルダが既に存在する場合はそのフォルダを右クリック > Source Folder > Add to Classpath でそのフォルダを Source Folder にできます。
h3. プロジェクト内の swc を使用する場合
Project 内で swc を使用する場合には Source Folder に入れるのではなく、swc を右クリック > Source Folder > Add to Classpath で指定します。

Comments : 99, Tags : タグ: , , , , Category : Program