=========================================================================== glclock の更新履歴 2000年6月 Masa(川瀬 正樹) E-Mail: masa@daionet.gr.jp URL : http://www.daionet.gr.jp/~masa =========================================================================== glclock の 2000/06/18 現在の最新バージョンは 6.0 Beta 6.0 です。 最新版は、常に(多分)作者のウェブサイトからダウンロードできます。 -- ■ glclock-6.0 Beta 3.0 から glclock-6.0 Beta 6.0 への変更点(2000/06/18) ・S3TC, FXT1 といったテクスチャ圧縮フォーマットに対応 ・スクリプト(ショートカット)に chromeclock(リアルな金属時計)追加 ・金属時計(-e オプション)でもディティールテクスチャを使用可能に ・nVIDIA GeForce シリーズの最近のドライバを使うと  glclock Mark の一部で異常なスコアが出る不具合を修正 ・X-Window 版でコンパイルに異常なほどのメモリを必要とする不具合を修正 ・G400 で表示が一部消える現象を強引に抑制 ・glclock Mark のスコア計算をウェイト(重み付け)方式に変更 ・ソリッドテクスチャの彩度、コントラストを変更可能に ・TROUBLESHOOT.txt に追加 ・その他細々とした不具合の修正&どうでも良いような修正など 各々の変更点について簡単に説明します。 ▲ S3TC, FXT1 といったテクスチャ圧縮フォーマットに対応  S3TC (DXT1, DXT3, DXT5), 3Dfx の FXT1 といったテクスチャの圧縮フォーマットに  対応しました。  本来なら圧縮テクスチャ用に解像度の高いテクスチャを用意するべきですが、  現時点では作成していません(予定は未定です)。  そのため、画質は多少犠牲になります。  テクスチャメモリの節約にはなるため、テクスチャキャッシュの絡みでおそらく  パフォーマンスは向上します。  とりあえず簡単な使用法は、実行時オプションとして  -TC, -S3TC, -FXT1 のいずれかを指定することです。  -TC : RGB 圧縮フォーマット(-tf C_RGB のショートカット)  -S3TC : S3TC の RGB DXT1 フォーマット(-tf C_RGB_S3TC_DXT1 のショートカット)  -FXT1 : 3Dfx の RGB FXT1 フォーマット(-tf C_RGB_FXT1 のショートカット)  となっており、サポートしている環境ではテクスチャ圧縮が有効になります。  サポートしない環境では、使用可能な最も近いフォーマットが自動的に選択されます。  さらに具体的なフォーマットを指定可能です。  GL_ARB_texture_compression をサポートしている実行環境で、テクスチャ内部  フォーマット指定オプション(-tf[ormat])に圧縮フォーマットを指定すると、  テクスチャ圧縮が有効になります。  -tf に与えるフォーマットシンボルとして、  GL_COMPRESSED_ALPHA GL_COMPRESSED_LUMINANCE GL_COMPRESSED_LUMINANCE_ALPHA  GL_COMPRESSED_INTENSITY GL_COMPRESSED_RGB GL_COMPRESSED_RGBA  の圧縮フォーマットが新たに使用可能になりました。  ※ただし glclock では RGB 以外はほとんど無意味です。  シンボル中の GL_ は省略可能です。  また、ALPHA は A、LUMINANCE は L、INTENSITY は I、COMPRESSED は C で OK です。  例えば GL_COMPRESSED_LUMINANCE_ALPHA は、C_L_A でも OK です。  GL_EXT_texture_compression_s3tc, GL_3DFX_texture_compression_FXT1 を  サポートしている環境では、S3TC, FXT1 の具体的な圧縮方法を明示的に指定できます。  サポートしない環境では、使用可能な最も近いフォーマットが自動的に選択されます。  GL_EXT_texture_compression_s3tc をサポートする環境では、上のシンボルに加えて  GL_COMPRESSED_RGB_S3TC_DXT1 GL_COMPRESSED_RGBA_S3TC_DXT1  GL_COMPRESSED_RGBA_S3TC_DXT3 GL_COMPRESSED_RGBA_S3TC_DXT5  が、  GL_3DFX_texture_compression_FXT1 をサポートする環境では  GL_COMPRESSED_RGB_FXT1 GL_COMPRESSED_RGBA_FXT1  がそれぞれ使用可能になります。  上でも書きましたが、フォーマットシンボルをいちいち指定するのが面倒な場合は、  -TC, -S3TC, -FXT1 オプションで、各々の最も基本的な RGB フォーマットを一発指定  できます。  -TC : -tf C_RGB のショートカット  -S3TC : -tf C_RGB_S3TC_DXT1 のショートカット  -FXT1 : -tf C_RGB_FXT1 のショートカット  ※現時点では、GL_S3_s3tc extension には対応していません。   GL_3DFX_texture_compression_FXT1 については動作未確認です。   プリ圧縮テクスチャ画像フォーマット(.dds ファイル)は未対応です。 ▲ スクリプト(ショートカット)に chromeclock(リアルな金属時計)追加  glclock スクリプト(Windows 版ではショートカット)に chromeclock という  リアルな金属時計を追加しました。  ただし、コンパイル時、ランタイムの双方で  ・OpenGL-1.1 以降  ・GL_EXT_texture_object Extension  のいずれか(テクスチャ・オブジェクト)をサポートしている必要があります。  どちらもサポートしない環境では、metalclock と同じになります。 ▲ 金属時計(-e オプション)でもディティールテクスチャを使用可能に  glclock-6.0 Beta 5.0 以前は、ディティールテクスチャ(-D オプション)は  -r オプション時のみ有効でしたが、glclock-6.0 Beta 6.0 からは、  -e オプション(金属時計)時も有効になりました。  特に chromeclock(-e 2 -D)はリアルです。  ただし、-e の時はマルチテクスチャ拡張機能が必須です。  コンパイル時、ランタイムの双方で、OpenGL-1.1 以降および  ・GL_ARB_multitexture  ・GL_EXT_multitexture  ・GL_SGIS_multitexture  のいずれかの拡張機能をサポートしている必要があります。  ※Windows 版は、ランタイムのサポートのみで使用可能 ▲ nVIDIA GeForce シリーズの最近のドライバを使うと   glclock Mark の一部で異常なスコアが出る現象を修正  GeForce シリーズで、nVIDIA リファレンスドライバ(5.22 等)を使用すると、  glclock Mark の一部のテスト(6. Maximum Triangles Mark のシングルバッファ)の  スコアが異常な値(毎秒2億ポリゴンを超える等)になる不具合を修正しました。  タイマー精度の著しい低下が原因でしたが、完全には直っていない可能性があります。  GeForce シリーズをお使いの方で、「まだスコアがおかしい」と思った方が  いらっしゃいましたら、是非ご報告ください。 ▲ X-Window 版でコンパイルに異常なほどのメモリを必要とする不具合を修正  以前のバージョンの UNIX X-Window 版は、コンパイルに大量のメモリが必要でした。  問題なくコンパイルできるどころか明らかに問題があったため、修正しました。  コンパイル時のメモリ使用量は1/4未満に減っているはずです。 ▲ G400 で表示が一部消える現象を強引に抑制  Matrox G400 で、marbleclock, woodclock, mwclock といった時計(-r オプション  使用時)が、裏向きになると正常に表示されなくなる不具合がありました。  マルチテクスチャ絡みの問題のようですが、正確な原因が判明していないため、  とりあえずの処置として G400 環境ではマルチテクスチャ拡張機能を禁止しました。  このため、marbleclock や woodclock では本来の性能より多少速度が低下します。 ▲ glclock Mark のスコア計算をウェイト(重み付け)方式に変更  以前のバージョンでは、項目毎のスコアを単純な FPS の平均値から計算していましが、  これを、本質的な描画の負荷、重要性などによって重みを付けるように変更しました。  以前の単純な平均値からのスコア計算の場合、例えば他と比べて倍の負荷のかかる  重い描画では、スコアへの影響が他の半分程度になってしまいます。  逆に負荷の非常に軽い描画は、スコアに大きく影響を与えることになります。  そのため、単純な描画を得意とする環境ほど有利な計算になっていました。  この修正により、以前と同じログを使用しても glclock Mark のスコアが変化します。  以前のバージョンで測定した *.log ファイルが残っている場合は、*.log ファイルを  新しい glclockmark の第一引数にして実行(Windows 版ではドラッグ&ドロップで OK)  すると、スコアを再計算した *.html を生成できます。 ▲ ソリッドテクスチャの彩度、コントラストを変更可能に  -s オプションもしくは -r オプション使用時に、  -ssa[turation] でソリッドテクスチャの彩度を、  -sc[ontrast] でソリッドテクスチャのコントラストを変更できます。  詳細は -ssa および -sc オプションを参照してください。 ▲ TROUBLESHOOT.txt に追加  TROUBLESHOOT.txt にいくつか追加しました(G400、Mesa Library 等)。 ▲ 新規追加および変更のあったオプション -tf[ormat] s テクスチャ内部フォーマットを具体的に指定(正確には希望)します。 sには、1テクセルを表現するための要素数もしくはフォーマットを 表すシンボルを指定します。 デフォルトRGB各8ビットフォーマット(GL_RGB8)です。 シンボルは、OpenGL API の glTexImage*D() コマンドに指定する コンポーネント数または内部フォーマットのシンボル定数と同じで、 以下のいずれかを指定できます。 1 2 3 4 GL_ALPHA GL_ALPHA4 GL_ALPHA8 GL_ALPHA12 GL_ALPHA16 GL_LUMINANCE GL_LUMINANCE4 GL_LUMINANCE8 GL_LUMINANCE12 GL_LUMINANCE16 GL_LUMINANCE_ALPHA GL_LUMINANCE4_ALPHA4 GL_LUMINANCE6_ALPHA2 GL_LUMINANCE8_ALPHA8 GL_LUMINANCE12_ALPHA4 GL_LUMINANCE12_ALPHA12 GL_LUMINANCE16_ALPHA16 GL_INTENSITY GL_INTENSITY4 GL_INTENSITY8 GL_INTENSITY12 GL_INTENSITY16 GL_RGB GL_R3_G3_B2 GL_RGB4 GL_RGB5 GL_RGB8 GL_RGB10 GL_RGB12 GL_RGB16 GL_RGBA GL_RGBA2 GL_RGBA4 GL_RGB5_A1 GL_RGBA8 GL_RGB10_A2 GL_RGBA12 GL_RGBA16 実行環境が GL_ARB_texture_compression extension をサポートしている場合、加えて以下の圧縮フォーマットを指定可能 です(サポートしていない環境では最も近いフォーマットが自動的に 選択されます)。 GL_COMPRESSED_ALPHA GL_COMPRESSED_LUMINANCE GL_COMPRESSED_LUMINANCE_ALPHA GL_COMPRESSED_INTENSITY GL_COMPRESSED_RGB GL_COMPRESSED_RGBA これらは一般的な圧縮フォーマットで、具体的にどのような フォーマットが使用されるかは環境依存です(多分)。 GL_EXT_texture_compression_s3tc をサポートする環境では、 さらに以下に示す S3TC の具体的なフォーマットを指定できます。 GL_COMPRESSED_RGB_S3TC_DXT1 GL_COMPRESSED_RGBA_S3TC_DXT1 GL_COMPRESSED_RGBA_S3TC_DXT3 GL_COMPRESSED_RGBA_S3TC_DXT5 同じく GL_3DFX_texture_compression_FXT1 をサポートする環境では、 以下の FXT1 の具体的なフォーマットを指定できます。 GL_COMPRESSED_RGB_FXT1 GL_COMPRESSED_RGBA_FXT1 フォーマットシンボルは大文字でも小文字でも構いません。 接頭子 "GL_" の部分は省略できます。 また、ALPHA は A、LUMINANCE は L、INTENSITY は I、COMPRESSED は C だけで OK です。 例えば GL_LUMINANCE12_ALPHA4 は、L12_A4 でも OK です。 コンポーネント数指定の場合の1〜4の数値は、それぞれ、 1 は GL_LUMINANCE、2 は GL_LUMINANCE_ALPHA、3 は GL_RGB、 4 は GL_RGBA と指定することと同じです。 R, G, B はそれぞれ赤、緑、青を意味し、A および ALPHA はα値を、 INTENSITY, LUMINANCE は輝度情報を意味します。 シンボル中の R, G, B, A, INTENSITY, LUMINANCE などは、 各コンポーネントの構成内容を表します。 例えば RGB は、赤、緑、青の3コンポーネントで構成される フォーマットです。 コンポーネントを表す文字の後に数値が付いている場合は、 さらにそのコンポーネントを表現するためのビット深度も明示します。 例えば R3_G3_B2 は、R, G, B の3コンポーネントで構成され、 それぞれ赤3ビット、緑3ビット、青2ビットのフォーマット (合計8ビット)を意味します。 RGBA16 は、赤、緑、青、αがそれぞれ16ビット(計64ビット) のフォーマットです。 ビット深度の指定は、必ずしも指定した通りにはなりません。 ランタイムの OpenGL が指定されたフォーマットをサポートしていない 場合は、使用可能なもっとも近いフォーマットが自動的に選択されます。 また、OpenGL のランタイムバージョンが 1.0 の場合は、ビット深度 情報は一切無視されます。 例えば、RGB 系のフォーマット(R3_G3_B2, RGB5 etc.)は すべて RGB(コンポーネント数3) に、 RGBA 系のフォーマットはすべて RGBA(コンポーネント数4)に なります。 デフォルトは GL_RGB8 ですが、これは、glclock のテクスチャ画像 (.ppm ファイル)が RGB8 の24ビットフルカラーフォーマットに なっているためです。 ※OpenGL-1.0 やベンチマークモードでのデフォルトは RGB になります。 glclock-6.0 Beta 以前のデフォルトは RGB(つまりビット深度の 指定はなし)だったため、ディスプレイが16ビットモードの場合に、 テクスチャも16ビットが選択され、画質が劣化することがありました。 glclock-6.0 Beta 2.9 以降では明示的に24ビットを指定している ため、環境によっては見た目が改善されています。 ※ランタイムが RGB8 フォーマットをサポートしている必要があります。 テクスチャメモリが少ない(2MB未満?)環境では、 -r, -e オプション指定時にテクスチャメモリが足らなくなり、 実行不能もしくは速度が著しく低下する可能性があります。 テクスチャメモリの少ない環境で、metalclock や marbleclock の 速度が不自然に低下する場合は、 -tf RGB4 や -tf R3_G3_B2 のように、テクスチャのビット深度を明示的に低くしてみてください。 速度が改善される可能性があります(画質は犠牲になります)。 テクスチャ画像が元々RGBの3コンポーネントであるため、 例えば RGBA 系のα値付きフォーマットを指定しても、見た目に 変化はありません。 が、テクスチャメモリ配列の都合上、RGB より RGBA を指定する方が 速度が速くなる場合があります。 INTENSITY, LUMINANCE 系のフォーマットを指定すると、テクスチャが 輝度情報のみを持つため、元画像の色に関係無く、グレイスケールの テクスチャを使用することになります。 また、ALPHA 系では、有効な色情報を持たず、また、glclock の テクスチャ画像が元々α値を持たないため、テクスチャが貼られて いないのと同じ結果になります。 -TC 一般的な圧縮テクスチャフォーマットを使用(希望)します。 -tf GL_COMPRESSED_RGB のショートカットです。 実行環境が OpenGL-1.1 以降および GL_ARB_texture_compression をサポートしている必要があります。 サポートされていない環境では、使用可能なもっとも近いフォーマット が選択されます。 -S3TC S3TC 圧縮テクスチャフォーマットを使用(希望)します。 -tf GL_COMPRESSED_RGB_S3TC_DXT1 のショートカットです。 実行環境が OpenGL-1.1 以降かつ GL_ARB_texture_compression と GL_EXT_texture_compression_s3tc をサポートしている必要があります。 サポートされていない環境では、使用可能なもっとも近いフォーマット が選択されます。 -FXT1 3Dfx の FXT1 圧縮テクスチャフォーマットを使用(希望)します。 -tf GL_COMPRESSED_RGB_FXT1 のショートカットです。 実行環境が OpenGL-1.1 以降かつ GL_ARB_texture_compression と GL_3DFX_texture_compression_FXT1 をサポートしている必要があります。 サポートされていない環境では、使用可能なもっとも近いフォーマット が選択されます。 -NO_texture_comp[ression] 圧縮テクスチャフォーマット関連の機能の使用を禁止します。 -NO_texture_compression_s3tc S3TC 系の圧縮テクスチャフォーマットの使用を禁止します。 -NO_texture_compression_FXT1 3Dfx FXT1 系の圧縮テクスチャフォーマットの使用を禁止します。 -NO_ARB_texture_comp[ression] -NO_EXT_texture_compression_s3tc -NO_3DFX_texture_compression_FXT1 それぞれ指定された拡張機能の使用を禁止します。 -D[ETAILTEX] 通常のテクスチャとは別に細かい模様のテクスチャをブレンドし、 時計表面のより細かい模様を表現します。 時計を大きく拡大してもテクセルの粗さが目立たなくなります。 拡大しないと通常との差がほとんど判らないという話もありますが(^^; また、よりリアルな(写実性の高い)描画になります。 もっとも、綺麗とリアルは意味が違うため、好みは分かれると思います。 -r もしくは -e オプション指定時のみ有効です。 -e オプション時は、マルチテクスチャ拡張機能が必須です。 つまり、glclock のコンパイル時 OpenGL 環境および ランタイム OpenGL 環境の双方が、 ・GL_ARB_multitexture extension ・GL_EXT_multitexture extension ・GL_SGIS_multitexture extension のいずれかをサポートしている必要があります。 ※Windows 版は、ランタイムのサポートのみで使用可能 マルチテクスチャ拡張をサポートしない環境では無効です。 -r オプション時は、最大で3テクスチャをブレンドします。 3ユニット以上のマルチテクスチャをサポートする環境では、 全てのテクスチャを1パスでブレンドできるため、非常に高速です。         ※正常に実行できるかは未確認です(現状で実行環境がないため)。  もし3ユニット以上をサポートしている環境で実行して、何らかの  問題(見た目が明らかにおかしい、不正処理、エラーなど)が発生  した場合は、  -maxtexunit 2  を追加し、テクスチャユニット数を強制的に2に制限してください。  また、その時の現象等ご報告いただけると幸いです。 2ユニットまでのマルチテクスチャをサポートする環境では最大2パス、 マルチテクスチャを一切サポートしない環境では、最大で3パスの レンダリングを行う必要があるため、速度は低下します。 マルチテクスチャ機能を使えない場合、GL_*_COLOR 系のブレンド ファクタを処理できる必要があります。 このため、-NO_MULTI[PLY_BLEND] オプションを指定すると、 -D オプションは無効になります。 また、glclock のコンパイル時 OpenGL 環境および、 ランタイム OpenGL 環境の双方が、 ・OpenGL-1.1 以降 ・GL_EXT_texture_object extension のいずれかをサポートしている必要があります。 -de[tailtex] n -D オプション(ディティールテクスチャ)とほぼ同じです。 -D オプションではディティールテクスチャを ON にすることしか できませんが、こちらはnに与える数値で ON/OFF を制御できます。 0 : ディティールテクスチャを強制的に OFF にします。 1 : ディティールテクスチャを ON にします(-D オプションと同じ)。 -D オプションよりも優先されるため、スクリプト実行時に ディティールテクスチャを OFF にしたい時に利用できます。 -ref[lect] n -R オプション(文字盤への映りこみ)とほぼ同じです。 -R オプションでは映りこみを ON にすることしか できませんが、こちらはnに与える数値で ON/OFF を制御できます。 0 : 文字盤への映りこみを強制的に OFF にします。 1 : 文字盤への映りこみを ON にします(-R オプションと同じ)。 -R オプションよりも優先されるため、スクリプト実行時に文字盤への 映りこみを OFF にしたい時に利用できます。 -ssa[turation] d ソリッドテクスチャ(-s, -r 時使用)の彩度を変更します。 デフォルトは 1.0 で、0.0 でモノ(明暗のみ)テクスチャになります。 マイナス値を指定すると、反対の色になります。 -sc[ontrast] d ソリッドテクスチャ(-s, -r 時使用)のコントラストを変更します。 デフォルトは 1.0 で、0.0 で灰色一色のテクスチャになります。 マイナス値を指定すると反対の色になります。 -sc -1.0 で、完全に正反対の色(補色、ネガ)になります。 -df[ile] s ディティールテクスチャの画像ファイルを指定します。 -r オプションもしくは -e オプションと同時に -D オプションが指定されている時のみ有効です。 -r オプション時のデフォルトは付属の detail.pgm、 -e オプション時のデフォルトは付属の detail2.pgm になります。 -- ■ glclock-6.0 Beta から glclock-6.0 Beta 3.0 への変更点(2000/03/15) ・Savage2000 でハードウェアアクセラレートが効かないのを修正 ・Savage2000 で時計がほとんど見えない現象を修正 ・nVIDIA チップでスクリーンセーバ時にデスクトップのゴミが残るのを修正 ・マルチテクスチャ未対応の環境で OpenGL エラーが発生するのを修正 ・Voodoo シリーズの最新ドライバ(2000/02 現在)を自動認識できないのを修正 ・X-Window 版でもディスプレイ解像度や色数の設定が可能に ・光源の彩度のデフォルトを 'H' / 'J' (SHIFT を押しながらの操作)に変更 ・デプスオブフィールドブラー(ピンぼけ)のブレ具合を実行中に操作可能に ・スペキュラーテクスチャ(環境マップ)のブレンド式を選択可能に ・ディティ−ルテクスチャのブレンド式(乗算方法)を選択可能に ・テクスチャの内部フォーマットを詳細に指定可能に ・glclock Mark にオプション追加 ・TROUBLESHOOT.txt に追加 変更の多くは不具合の修正です。 各々の変更点について簡単に説明します。 ▲ Savage2000 でハードウェアアクセラレートが効かないのを修正  -NOAC オプションを付けないとハードウェア実行されないのを修正しました。  正確には、デフォルトで -NOAC が指定されるようにしました。  ただし、環境によっては、スーパサンプリング系のエフェクト(モーションブラー、  シーン・アンティエイリアシング、デプスオブフィールドブラーなど)が効かなく  なったり、エラーで終了する可能性があります。  問題の出る環境では、  -AC オプションを追加してください。 ▲ Savage2000 で時計がほとんど見えない現象を修正  線形フォグ計算に問題があるらしく、デフォルト設定では時計がほとんど見えなく  なっていました。  Savage2000 環境でベンチマーク以外の実行モードの場合は、デフォルトのフォグを  距離の指数計算に変更しました。 ▲ nVIDIA チップでスクリーンセーバ時にデスクトップのゴミが残るのを修正  バッファのスワップ方法がフリップに設定されていると、スクリーンセーバ実行時に  画面上にデスクトップのゴミがフラッシュのように残るのを修正しました。 ▲ マルチテクスチャ未対応の環境で OpenGL エラーが発生するのを修正  マルチテクスチャをサポートしない環境で実行すると、OpenGL エラーが発生して  いたのを修正しました。 ▲ Voodoo シリーズの最新ドライバ(2000/02 現在)を自動認識できないのを修正  Voodoo2(Voodoo1 も?)環境で、最新ドライバでは自動認識できないのを修正  しました(ドライバ情報を変えるのはやめて欲しい(;_;)。 ▲ X-Window 版でもディスプレイ解像度や色数の設定が可能に  Game GLUT に対応しました。  GLUT のバージョン 3.7 Beta 以降を使ってコンパイルした場合、  X-Window 版でも、ディスプレイ解像度、色数の設定が可能になります。  詳しくは -fu[llscreen] オプションを参照してください。 ▲ 光源の彩度のデフォルトを 'H' / 'J' (SHIFT を押しながらの操作)に変更  'h' / 'j' で 減少/増加、'g' でデフォルトでしたが、デフォルトに戻す操作を  'H' / 'J' キー(SHIFT を押しながらの操作)に変更しました。 ▲ デプスオブフィールドブラー(ピンぼけ)のブレ具合を実行中に操作可能に  実行中、'z' / 'x' キーで、ブレの大きさをリアルタイムに 減少/増加 できます。  'Z' / 'X' キー(SHIFT を押しながらの操作)で、デフォルトに戻ります。  デプスオブフィールドブラー実行時(-f or 実行中 'd' キー)にしか効果は判り  ません。 ▲ スペキュラーテクスチャ(環境マップ)のブレンド式を選択可能に  環境マッピングによるスペキュラーのブレンド計算式を選択可能にしました。  詳しくは -sb[lend] オプションを参照してください。 ▲ ディティ−ルテクスチャのブレンド式(乗算方法)を選択可能に  ディティ−ルテクスチャのブレンド式(乗算方法)を2種類から選択可能にしました。  詳しくは -db[lend] オプションを参照してください。 ▲ テクスチャの内部フォーマットを詳細に指定可能に  テクスチャの内部フォーマットに、構成内容、各要素のビット深度などを指定可能に  しました。  また、デフォルトで24ビットフォーマットを明示するように変更したため、環境に  よっては見た目が向上しています。 ▲ glclock Mark にオプション追加  結果をより本来の性能に近づけるために、複数の測定を行ってそれらの結果を最適化  できるようにしました。  詳細は、glclock Mark の -loop オプションを参照してください。  シングルバッファ/ダブルバッファのテストの ON/OFF を指定可能にしました。  glclock Mark の -SINGLE, -DOUBLE オプションを参照してください。 ▲ TROUBLESHOOT.txt に追加  TROUBLESHOOT.txt にいくつか追加しました(Savage2000 等)。 ▲ 新規追加オプション等 -fu[llscreen] s ディスプレイ解像度、色数(ビット深度)、リフレッシュレートを 同時に設定し、フルスクリーンモードで実行します。 -w, -h, -FU, -bpp オプションをすべて同時に指定するのと似ています。 s には、解像度、色数等を示す文字列を指定します。 フォーマットは 横解像度x縦解像度:色ビット深度@リフレッシュレート です。 glclock -fu 640x480:16@60 と指定すると、可能であれば 640x480 の 16 ビット、60Hz のモードで フルスクリーン起動します。 glclock -fu 640x480:32 と指定すると、可能であれば 640x480 の 32 ビットモードで フルスクリーン起動します。 "640x480" や "640x480@60", ":16@60" といった指定も可能ですが、 解像度と色数は明示的に指定した方が良いようです。 ※GLUT のバージョン 3.7 Beta 以降(Game GLUT 対応)が必須です。 ※Windows 版だけでなく、X-Window 版等でも使用できます。  というか Windows 版ではあまりお勧めしません。 ※このオプションを指定すると、-w, -h, -FU, -fu 等で指定した  オプションはすべて無効になります。 -SAVAGE2000 S3 Savage2000 に特化したモードとなります。 自動認識されるため通常は気にする必要はありません。 Savage2000 は、線形フォグの計算方法に問題があり、時計がほとんど 見えなくなるようです。 このため、デフォルトが一次指数フォグになります。 Savage2000 以外のデフォルトは線形フォグになります。 -NO_ADDSMOOTH[_BLEND] ブレンドファクタのうち、 (src, dst) = (GL_ONE, GL_ONE_MINUS_SRC_COLOR) の組み合わせを禁止します。 -sb[lend] オプションはかならず 1 にセットされます。 PERMEDIA2, RIVA 128/RIVA 128ZX 等の環境では自動的に禁止されます。 marbleclock や woodclock, mwclock の表示がおかしくなる場合は、 -NO_ADDSMOOTH を指定するか、 -sb 1 を指定してみてください。 -NO_MULTI[PLY_BLEND] ブレンドファクタのうち、乗算ブレンド (src, dst) = (GL_DST_COLOR, GL_ONE) (src, dst) = (GL_ONE, GL_SRC_COLOR) の2種類の組み合わせを禁止します。 -D オプションは使用できなくなります。 PERMEDIA2 では自動的に指定されます(-D も同時に禁止されます)。 mwclock で、大理石の模様が見えなくなり、白地に細かい模様が入った ような表示になってしまう場合は、まず -db 1 を指定してみてください。 これでも直らない場合は、 -NO_MULTI を指定してください。 -AC[CUM] OpenGL のアキュムレーションバッファの作成を明示的に指示します。 スーパサンプリング系(-a, -m, -f オプションや、実行中に 'a', 'm', 'd' キー)のエフェクトをかけても、何も変化がなかったり、 エラーが発生したりする場合に指定してください。 大抵の環境では問題ないようです。 S3 Savage2000 など一部のカードでは、このオプションを指定すると、 ハードウェアアクセラレーションが一切無効になります。 -NOAC[CUM] OpenGL のアキュムレーションバッファの作成を禁止します。 6.0 Beta 2.9 から、デフォルトで指定するように変更しました。 つまり、デフォルトではアキュムレーションバッファを作成しません。 これは、S3 Savage2000 などの一部のカードで、アキュムレーション バッファの作成を明示すると、ハードウェアアクセラレートが無効に なるためです。 上で説明している -AC オプション(上記)も、合わせてご覧ください。 -sb[lend] n -r オプション時のスペキュラー(環境マッピング)のブレンド方法を 指定します。 0 : src + dst * (1 - src) デフォルト 1 : src + dst ただし、マルチテクスチャ機能を使う場合は、かならず 0 になります。 逆に、マルチテクスチャを利用できず、かつブレンドファクタの (src, dst) = (GL_ONE, ONE_MINUS_SRC_COLOR) の組み合わせをサポートしない環境では、0 の式は使えず、結果が おかしくなります(黒光りした金属のようになる)。 marbleclock や woodclock, mwclock の表示がおかしくなる場合は、 -sb 1 を指定するか、 -NO_ADDSMOOTH を指定してください。 -db[lend] n -D オプション時の、ディティ−ルテクスチャのブレンド方法を指定 します。 0 : src * 0 + dst * src デフォルト 1 : src * dst + dst * 0 どちらも乗算ブレンディングで理論上まったく同じ結果になります。 しかし、環境によってはどちらか片方しかサポートされていない 可能性があるため、選択可能にしました。 マルチテクスチャ機能を使える場合はこのオプションは無意味です。 mwclock で、大理石の模様が見えなくなり、白地に細かい模様が入った ような表示になってしまう場合は、まず -db 1 を指定してみてください。 それでも直らない場合は、 -NO_MULTI を指定してください(ただし -NO_MULTI を指定すると、-D オプション、 つまりディティ−ルテクスチャ自体が無効になります)。 -ip[ath] s テクスチャ画像のファイルの置いてあるディレクトリを明示します。 このオプションで指定されたディレクトリは、もっとも優先的に検索 されます。 デフォルトでは、実行時のカレントディレクトリです。 -tf[ormat] s テクスチャ内部フォーマットを具体的に指定(正確には希望)します。 sには、1テクセルを表現するための要素数もしくはフォーマットを 表すシンボルを指定します。 これは、OpenGL API の glTexImage*D() コマンドに指定する コンポーネント数および内部フォーマットのシンボル定数と同じで、 以下のいずれかを指定できます。 シンボルの接頭子 "GL_" の部分は省略できます。 1 2 3 4 GL_ALPHA GL_ALPHA4 GL_ALPHA8 GL_ALPHA12 GL_ALPHA16 GL_LUMINANCE GL_LUMINANCE4 GL_LUMINANCE8 GL_LUMINANCE12 GL_LUMINANCE16 GL_LUMINANCE_ALPHA GL_LUMINANCE4_ALPHA4 GL_LUMINANCE6_ALPHA2 GL_LUMINANCE8_ALPHA8 GL_LUMINANCE12_ALPHA4 GL_LUMINANCE12_ALPHA12 GL_LUMINANCE16_ALPHA16 GL_INTENSITY GL_INTENSITY4 GL_INTENSITY8 GL_INTENSITY12 GL_INTENSITY16 GL_RGB GL_R3_G3_B2 GL_RGB4 GL_RGB5 GL_RGB8 GL_RGB10 GL_RGB12 GL_RGB16 GL_RGBA GL_RGBA2 GL_RGBA4 GL_RGB5_A1 GL_RGBA8 GL_RGB10_A2 GL_RGBA12 GL_RGBA16 コンポーネント数指定の場合の1〜4の数値は、それぞれ、 1 は GL_LUMINANCE、2 は GL_LUMINANCE_ALPHA、3 は GL_RGB、 4 は GL_RGBA と指定することと同じです。 R, G, B はそれぞれ赤、緑、青を意味し、A および ALPHA はα値を、 INTENSITY, LUMINANCE は輝度情報を意味します。 シンボル中の R, G, B, A, INTENSITY, LUMINANCE などは、 各コンポーネントの構成内容を表します。 例えば RGB は、赤、緑、青の3コンポーネントで構成される フォーマットを使用するよう指示します。 コンポーネントを表す文字の後に数値が付いている場合は、さらにその コンポーネントを表現するためのビット深度も指定します。 例えば、R3_G3_B2 は、R, G, B の3コンポーネントで構成され、 それぞれ赤3ビット、緑3ビット、青2ビットのフォーマット (合計8ビット)を意味します。 RGBA16 は、赤、緑、青、αがそれぞれ16ビット(計64ビット) のフォーマットを意味します。 ビット深度の指定は、必ずしも指定した通りにはなりません。 ランタイムの OpenGL が指定されたフォーマットをサポートしていない 場合は、使用可能なもっとも近いフォーマットが自動的に選択されます。 また、OpenGL のランタイムバージョンが 1.0 の場合は、ビット深度 情報は一切無視されます。 例えば、RGB 系のフォーマット(R3_G3_B2, RGB5 etc.)は すべて RGB(正確にはコンポーネント数指定の3) に、 RGBA 系のフォーマットはすべて RGBA(コンポーネント数指定の4) に変更されます。 デフォルトは RGB8 です。 これは、glclock のテクスチャ画像(.ppm ファイル)が RGB8 の 24ビットフルカラーフォーマットであるためです。 ※OpenGL-1.0 やベンチマークモードでのデフォルトは RGB になります。 glclock-6.0 Beta 以前のデフォルトは RGB(つまりビット深度の 指定はなし)だったため、ディスプレイが16ビットモードの場合に、 テクスチャも16ビットが選択され、画質が劣化することがありました。 glclock-6.0 Beta 2.9 以降では明示的に24ビットを指定している ため、環境によっては見た目が改善されています。 ※ランタイムが RGB8 をサポートしている必要があります。 テクスチャメモリが少ない(2MB未満?)環境では、 -r, -e オプション指定時にテクスチャメモリが足らなくなり、 実行不能もしくは速度が低下する可能性があります。 テクスチャメモリの少ない環境で、metalclock や marbleclock の 速度が不自然に下する場合は、 -tf RGB4 -tf R3_G3_B2 のように、テクスチャのビット深度を明示的に低くしてみてください。 速度が改善される可能性があります(画質は犠牲になります)。 テクスチャ画像が元々RGBの3コンポーネントであるため、 例えば RGBA 系のα値付きフォーマットを指定しても、見た目に 変化はありません。 が、テクスチャメモリ配列の都合上、RGB より RGBA を指定する方が 速度が速くなる場合があります。 INTENSITY, LUMINANCE 系のフォーマットを指定すると、テクスチャが 輝度情報のみを持つため、元画像の色に関係無く、グレイスケールの テクスチャを使用することになります。 また、ALPHA 系では、有効な色情報を持たず、また、glclock の テクスチャ画像が元々α値を持たないため、テクスチャが貼られて いないのと同じようになります。 ※Mesa 3D Graphics Library では、RGB 系または 3 以外を指定すると、  不正終了するようです(Windows のみ確認済み)。  3 または RGB 系のいずれかを指定するようにしてください。 ▲ glclock Mark 用のオプション  △ -loop n   オプションで、nで指定された回数測定を繰り返し、測定精度を向上させます。   glclock Mark の測定中は、スワップその他の原因により、一部のテストのスコアが   本来の性能より落ちこむことがあります。   複数回の測定結果から最適化することで、このような現象を軽減します。   デフォルトは1回で、nには1〜8までを指定できます。   回数が多くなるほど、スコアは本来の性能に近づきますが、測定時間は回数に比例   して長くなります。   ソフトウェア環境では時間がかかり過ぎるためお勧めできませんが、ハードウェア   アクセラレーションが可能な環境で、より良いスコアをマークしたい場合は、   glclockmark -loop 4   程度で測定されることをお勧めします。   なお、glclockmark_ALL スクリプトにオプションを与えると、すべてのサイズに   対して同じオプションが追加されます。   例えば   glclockmark_ALL -loop 4   と実行すると、すべてのウィンドウサイズのテストをそれぞれ4回ずつ測定します。  △ -SINGLE   シングルバッファリングモードのみをテストします。  △ -DOUBLE   ダブルバッファリングモードのみをテストします。   -SINGLE および -DOUBLE を両方指定した場合は無効です(デフォルトと同じく、   シングルバッファ/ダブルバッファの両方をテストします)。 -- ■ glclock-5.0 から glclock-6.0 Beta への変更点(2000/02/04) ・画質および速度の大幅な向上 ・本格的なベンチマーク「glclock Mark」の追加 ・環境の自動認識および自動設定 ・デプスオブフィールドブラー(ピンぼけ)追加 ・光源、フォグの種類をさまざまに変更可能に ・新たなキー操作追加 ・元イメージ重視のソリッドマッピングを可能に ・ディティールテクスチャ追加 ・環境マップをよりリアルに ・拡張機能(OpenGL Extensions)に対応 ・ミップマップ・フィルタのテストモード追加 ・クリスタル時計を両面レンダリングに変更 ・Mesa のバージョンによっては光源が薄暗くなるのを修正 ・Windows 版の実行ログはファイル出力に などなど、他にもさまざまな改良を施しています。 glclock-5.0 からの変更点がかなり多くなっています。 Windows 版については動作確認済みですが、X-Window 版はコンパイルおよび実行に 何らかの問題が発生するかもしれません。 そのため、まずはβテスト版として公開します。 コンパイルエラー、実行時エラー等発生した場合は、報告して頂けると助かります。 また、新たに追加したベンチマーク「glclock Mark」の動作確認もして頂けると助かり ます。 以下、各々の変更点について簡単に説明します。 ▲ 画質および速度の大幅な向上  レンダリング部分の見直しや、OpenGL 拡張機能(OpenGL Extensions)への  対応により、以前のバージョンと比べて画質と速度が大幅に向上しました。  オプションの指定によっては、OpenGL 実行環境のピーク性能に近い速度を叩き  出します。  速度がかなり向上したので、時計のクォリティ(-q オプション)のデフォルト設定を、  4 から 5 に、一段階高くしました。  以前のバージョンより、デフォルトのクォリティでのメッシュが少し細かく綺麗に  なっています。  ただ、これによる速度低下も多少あるため、環境によっては、以前のバージョンよりも  デフォルトのクォリティでの速度が多少低下している可能性があります。  もちろん、同じクォリティで比較すれば、速度は向上しています。 ▲ 本格的なベンチマーク「glclock Mark」の追加  以前のような簡易なスクリプト(バッチファイル)ではなく、  専用のベンチマークソフト「glclock Mark」を新たに作成しました。  OpenGL のさまざまな能力(ライティング、テクスチャマッピング、環境マッピング、  ブレンディング、ポリゴンスループット etc.)を測定します。  結果はテキストログだけでなく、HTML でグラフ化されますので、実行環境の  OpenGL の速度や特性(得手/不得手等)が一目で判ります。  スコアは、PentiumII-233MHz + RivaTNT PCI-16MB 320 x 320 x 16bpp に対する  速度比(パーセンテージ表記)になります。  glclock Mark についての詳細は、GLCLOCKMARK.txt を参照してください。  X-Window 版は、glclock Mark の追加のため、コンパイル方法を多少変更しています。  make ではなく、make all でコンパイルします。  詳細は COMPILE.txt を参照してください。 ▲ 環境の自動認識および自動設定  普通に起動すれば、OpenGL の環境によって自動的に適切な設定で動作するように  変更しました(対応するのが遅すぎですが(^^;)。  これまでのように、環境設定用オプションを付ける必要がほとんどなくなりました。  指定する必要があるのは、Voodoo / Voodoo2 などのフルスクリーン実行専用カードを  使用している場合だけです。  Voodoo では -VGA(もしくは -w 640 -h 480 -FU)  Voodoo2 では -SVGA(もしくは -w 800 -h 600 -FU)  Voodoo2 SLI では -XGA(もしくは -w 1024 -h 768 -FU)  と指定するのがもっともお勧めです。  なお、Windows 環境では、makeshort.exe 実行時にリストから選択するだけで OK です。 ▲ デプスオブフィールドブラー(ピンぼけ)追加  被写界深度(デプスオブフィールド)ブラー、いわゆるピンぼけ処理を追加しました。  -f[ield] オプションおよび実行中 'd' キーで ON/OFF できます(デフォルトは OFF)。  特定の距離でピントが合い、そこから離れるほど像がぼやけます。  マウス右ボタンドラッグで、時計の距離をいろいろ変化させてみてください。  アンティエイリアス、モーションブラー等と同じくスーパサンプリングを行うため、  -s 1, -e 1(metalclock), -C(crystalclock) 以外の時計では速度が極端に低下  します。  metalclock や crystalclock で使用することを強くお勧めします。  詳しくは、MANUAL.txt の -f[ield] オプションを参照してください。 ▲ 光源、フォグの種類をさまざまに変更可能に  以前の平行光源だけではなく、点光源、スポット光源などを切り替え可能になりました。  また、光源数も最大で8個となり(以前は5個)、さらに光源の彩度や回転動作、  フォグの種類などの変更が可能になりました。  詳細は、MANUAL.txt の  -lt[ype], -ls[aturation], -LIGHT[TWOSIDE], -fog オプション等を参照してください。 ▲ 新たなキー操作追加  実行時にキー操作で、光源数、光源の種類、光源の彩度、フォグの種類の変更、  テクスチャフィルタの変更等が可能になりました。  追加した操作は以下の通りです。  ただし、光源関係の操作は、ライティング(光源処理)を行わない実行モード  (-l 0, -s 1, -e 1, -C, -r 1)では基本的に無効です。  △ライト数変化   実行中 '1'〜'8' キーで、処理する光源の数が変化します。   光源数はデフォルトの5個程度がお勧めです。  △ライトの種類、回転   'i', 'o', 'p' キーで、それぞれ平行光源、点光源、スポットライトとなります。   さらに、   'l' キーで、視線ベクトル計算(local viewer)の ON/OFF、   'k' キーで、ライトの回転動作の ON/OFF の切り替えができます。  △ライトの彩度(鮮やかさ)変化   'h' キーを押す毎に彩度が下がり(デフォルトから5回押すとモノクロライト)、   'j' キーを押す毎に彩度が上がります。   彩度を下げ続けた結果モノクロライトを超えると、今度は補色(正反対の色)になり、   逆に(今度は反対の色で)彩度が上がってゆきます。   'g' を押すとデフォルトの彩度に戻ります。  △デプスオブフィールド(被写界深度)ブラー   'd' キーを押すと、被写界深度ブラー(ピンぼけ)処理を行います。   マウス右ドラッグで時計までの距離や遠近感を変化させると、ピントがさまざまに   変化します。   もう一度 'd' で元に戻ります。   -s 1, -e 1, -C オプション使用時は高速です。  △フォグ   'q', 'w', 'e', 'r' キーで、それぞれフォグなし、線形フォグ、距離の指数関数、   距離の2乗の指数関数によるフォグを切り替えます。   デフォルトは 'w' 線形フォグです。  △テクスチャ・フィルタリング   't' キーでテクスチャ・フィルタの切り替え(ポイントサンプル/バイリニア)、   'y' キーでミップマップの切り替え(なし/ポイントサンプル/リニア)、   'u' キーで、サポートされていれば異方性(anisotropic)フィルタの切り替え   (ON/OFF)ができます。   デフォルトのトライリニア・フィルタリングは、   テクスチャ・フィルタがバイリニア、ミップマップがリニアの組み合わせです。 ▲ 元イメージ重視のソリッドマッピングを可能に  ソリッドテクスチャ(-s, -r オプション指定時)、色が変化したり画像が傾いたり、  元の絵のイメージを大きく崩していましたが、これを抑制するオプションを追加  しました。  アニメキャラクタ、写真、絵画など、元画像のイメージが重要なテクスチャを貼りたい  場合は、-ORG オプションを付けてみてください。  比較的元のイメージの質感を損なわずにマッピングされます。  詳しくは -ORG[IMAGE] オプションを参照してください。 ▲ ディティールテクスチャ追加  -r オプションと同時に -D[ETAIL] オプションを指定すると、  ソリッドテクスチャにディティールテクスチャをブレンドします。  これにより、時計を極端に拡大しても、さらに細かい模様が現れ、テクセルの粗さが  目立たなくなります。  ただし、最大で3テクスチャをブレンドする必要があるため、速度は低下します。  マルチテクスチャに対応した環境では比較的高速に描画できます。 ▲ 環境マップをよりリアルに  以前のバージョンでは、1枚の背景写真を加工するだけで、  すべての環境マップを強引に作成していました。  このため、スペキュラー(ハイライト)があまり美しくありませんでした。  今回から、背景画像と別にレイトレーサで専用に作成したスペキュラー(ハイライト)  マップから、比較的正確な環境マップを作成する方式に変更しました。  これにより、環境マッピングによるスペキュラーの表現がかなりリアルになりました。 ▲ 拡張機能(OpenGL Extensions)に対応  いくつかの OpenGL 拡張機能(OpenGL Extensions)に対応しました。  使用可能な環境では自動的に使用し、画質や速度がより向上します。  基本的に自動的に使用されますので、ユーザが特に意識する必要はありません。  OpenGL コマンドの追加がなく、パラメタの追加のみの拡張機能は、  ランタイム OpenGL のサポートのみで使用可能です。  コマンドの追加のある拡張機能は、コンパイル時およびランタイム双方の  OpenGL が、該当する拡張機能をサポートしている必要があります。  ※Windows 版は、いずれもランタイム OpenGL のサポートのみで使用可能です。  現在対応している拡張機能は以下の通りです。  △マルチテクスチャ   ・GL_ARB_multitexture   ・GL_EXT_multitexture   ・GL_SGIS_multitexture   -r 2 オプション時に使用。   テクスチャおよびライトマップのブレンドなど、本来2パス以上必要な   テクスチャマッピングを1パスで処理することができ、その分高速に描画できます。   コンパイル時、ランタイムの双方で、OpenGL-1.1 以降および   上のいずれかの拡張機能をサポートしている必要があります。   ※Windows 版は、ランタイムのサポートのみで使用可能  △セパレート・スペキュラー・カラー   ・GL_ARB_separate_specular_color   ・GL_EXT_separate_specular_color   -s 3 オプション時に使用。   テクスチャマッピング時のスペキュラー(光沢、ハイライト)を、   テクスチャブレンディングの後に加算し、綺麗なスペキュラーを   描画できます。   この機能がサポートされていない環境では、2パスでスペキュラーを   加算する必要があるため、速度が大幅に低下します。   OpenGL-1.2 以降では正式にサポートされています。   ランタイムのサポートのみで使用可能です。  △テクスチャ・オブジェクト   ・GL_EXT_texture_object   -e, -C, -r オプション時に使用。   以前のバージョンの glclock でも OpenGL-1.1 以降であれば使用できましたが、   今回、拡張機能のサポートでも使用可能になりました。   複数のテクスチャを高速に切り替えて使用できます。   glclock では、この機能を使えない場合、1枚のテクスチャを分割し、   強引に複数のテクスチャとして使用するため、画質が劣化します。   OpenGL-1.1 以降では正式にサポートされています。   コンパイル時、ランタイム双方のサポートが必要です。   ※Windows 版は、ランタイムのサポートのみで使用可能  △ポリゴン・オフセット   ・GL_EXT_polygon_offset   -s 3, -r, -D オプションと同時に、-zoffset を指定された時に使用。   以前のバージョンの glclock でも OpenGL-1.1 以降であれば使用できましたが、   今回、拡張機能のサポートでも使用可能になりました。   2パス以降のレンダリング時に、Zバッファに使う値にオフセットを与えます。   特定の環境で描画がおかしくなるのを防ぐために使うだけですので、   通常の実行にはほとんど関係ありません。   OpenGL-1.1 以降では正式にサポートされています。   コンパイル時、ランタイム双方のサポートが必要です。   ※Windows 版は、ランタイムのサポートのみで使用可能  △ノーマル(法線)・マッピング(テクスチャ座標自動生成の一種)   ・GL_EXT_texture_cube_map   ・GL_NV_texgen_reflection   -e, -C, -r (環境マッピング使用)と同時に、-FAKE を指定された時に使用。   環境マッピングの反射ベクトル計算の代わりに、   法線ベクトルをそのまま環境マップのテクスチャ座標として使用します。   平行投影の時のみ正しい結果となりますが、   反射ベクトルの計算等が不用になるため、環境マッピングが多少高速になります。   glclock では、座標生成アルゴリズムを利用するだけであり、   キューブ環境マッピングを行う訳ではありません。   ランタイムのサポートのみで使用可能です。  △アンアイソトロピック(異方性)・フィルタリング   ・GL_EXT_texture_filter_anisotropic   -e, -s, -C, -r (テクスチャ使用)時、-anisotropy を指定された時に使用。   テクスチャ・フィルタリングの一種。   通常のミップマッピングでは、テクスチャが長方形に引き伸ばされた場合に、   より縮小された方向のサイズに合ったミップマップを使用します。   このため、長い方向のテクスチャは、必要以上に縮小されたミップマップを   使用することになり、テクスチャの解像度が粗くなります。   結果、遠くのテクスチャが極端にぼやけたり、ジャギーが目立ったりします。   これを防ぐ特殊なミップマップです。   詳細は MANUAL.txt の -ani[sotropy] オプションを参照してください。   ランタイムのサポートのみで使用可能です。 ▲ ミップマップ・フィルタのテストモード追加  ミップマップやフィルタの状態を確認し易い実行モードを追加しました。  特別なテスト用のテクスチャマッピングとなり、マウス右ボタンドラッグは  テクスチャの拡大縮小になります。  詳細は、-FT[EST] および -MT[EST] オプションを参照してください。 ▲ クリスタル時計を両面レンダリングに変更  クリスタル時計(-C オプション)を両面レンダリングにしました。  以前よりも綺麗になっています。 ▲ Mesa のバージョンによっては光源が薄暗くなるのを修正  おそらく比較的最近の Mesa からだと思いますが、標準時計(テクスチャなし)の  ライティング(光源処理)が妙に薄暗くなる現象が起きていました。  原因は不明なのですが、強引に修正しました。 ▲ Windows 版の実行ログはファイル出力に  Windows は標準出力ごとめログが破棄されていたため、デフォルトで "glclock.log"  というファイルに出力するように変更しました。  -log オプションで、ログ出力ファイルを明示的に指定できます。  詳しくは MANUAL.txt の -log オプションを参照してください。  もっとも、通常ログが必要になることはそれほどありませんが…。  ファイル操作が入るため、起動後数秒間処理が遅くなります。 ▲ 新たに追加したオプション -VGA -w 640 -h 480 -FU とほぼ同義 -SVGA -w 800 -h 600 -FU とほぼ同義 -XGA -w 1024 -h 768 -FU とほぼ同義 -NO_AUTO[SELECT] 環境自動認識および自動設定を禁止します。 glclock-6.0 Beta 以降では、デフォルトでは実行時の環境によって自動的に 適切な設定で起動します。 この自動設定を禁止したい場合に指定します。 -log s 実行時ログ出力先(ファイル名)を指定します。 デフォルトでは、Windows 版は glclock.log ファイルに、 Windows 版以外では標準出力に出力されます。 -INT_GL_ERR[OR] OpenGL 内部でエラーが起こった場合、実行をストップします。 環境によってはドライバのバグで間違ったエラーが返ることがあるため、 デフォルトでは、ログにエラー内容を出力するだけで実行を続行します。 -NO_GL_ERR[OR] OpenGL 内部でエラーチェックを一切行いません。 -NO_COLOR[_FACTOR] ブレンディングの際、GL_*_COLOR 系のブレンドファクタを禁止します。 通常 -r でこのファクタが使用されますが、 PERMEDIA2, RIVA128/ZX 等では使えないため、 -PERMEDIA2, -RIVA[128] オプションで起動すると自動的に禁止され ます。 -NOCULL[OBJ] glclock では高速化のため、時計の向きによって明らかに見えない ポリゴンを描画しないようにしています(判断はざっとです)。 この処理を禁止し、時計の向きに関わらずすべてのポリゴンを描画 します。 ベンチマーク時は自動的に禁止されます。 -NOAC[CUM] OpenGL のアキュムレーションバッファの使用を禁止します。 ATI Rage Orion のハードウェアアクセラレート用? -OpenGL-1.0 OpenGL-1.0 の機能のみを使うように制限します。 -OpenGL-1.1 OpenGL-1.1 以前の機能のみを使うように制限します。 -NO_GL_EXT[ENSIONS] OpenGL Extensions(OpenGL 拡張機能)の使用を 一切禁止します。 -NO_multitex[ture] シングルパスで複数のテクスチャブレンディングを行う シングルパス・マルチテクスチャの使用を禁止します。 -r 2 で使用 -multitexunit[s] n マルチテクスチャ機能の最大ユニット数(テクスチャ数)を制限します。 3ユニット以上のマルチテクスチャ機能をサポートしていない環境では ほとんど意味はありません。 n には最大のテクスチャユニット数を指定します。 3ユニット以上のマルチテクスチャをサポートする環境で -r 2 オプション(woodclock, marbleclock, mwclock 等)と -D オプション(ディティールテクスチャ)を塀用した際に、 描画がおかしくなる、もしくはエラーが出る場合は、 -multitexunit 2 を指定してみてください。 -NO_texture_obj[ect] 複数のテクスチャをテクスチャメモリにセットしておき、 それらを高速に切り替えて使用できるテクスチャ・オブジェクトの 使用を禁止します。 -e, -C, -r で使用 -NO_polygon_off[set] ポリゴンの、zテストに使用するz値にオフセットを与え、 誤差による前後判定ミスを軽減するポリゴン・オフセットの機能の 使用を禁止します。 -z で使用 -NO_separate[_specular_color] テクスチャマッピングの後にスペキュラーを加算することで、 1パスで綺麗なスペキュラーを表現できる セパレート・スペキュラー・カラーの使用を禁止します。 -s 3 で使用 -NO_texture_filter_ani[sotropic] Anisotropic Texture Filtering(異方性フィルタ)の使用を禁止 します。 -ani で使用 -NO_texgen_ref[lection] フェイク環境マッピングに利用している特殊なテクスチャ座標 自動生成機能の使用を禁止します。 -FAKE で使用 -NO_拡張機能名称 特定の拡張機能の使用を禁止します。以下の種類があります。 -NO_ARB_multitex[ture] -NO_EXT_multitex[ture] -NO_SGIS_multitex[ture] -NO_EXT_texture_obj[ect] -NO_EXT_polygon_off[set] -NO_ARB_separate[_specular_color] -NO_EXT_separate[_specular_color] -NO_EXT_texture_cube[_map] -NO_NV_texgen_ref[lection] -NO_EXT_texture_filter_ani[sotropic] -FAKE[SPHEREMAP] フェイク環境マッピングを有効にします。 環境マッピング使用時、つまり -e または -r で 1 以上が指定されているか、 -C オプションが指定されている時に、 環境マッピングのテクスチャ座標生成を、より簡易な計算方法で実現 します。 これにより、画質は多少犠牲になりますが、環境マッピングの パフォーマンスが多少向上します。 OpenGL のランタイム環境が、 ・GL_EXT_texture_cube_map extension ・GL_NV_texgen_reflection extension のいずれかをサポートしている必要があります。 いずれもサポートされていない環境では無効です。 -ORG[IMAGE] -s, -r オプション指定時に、テクスチャ画像の元のイメージを なるべく残します。 写真やアニメキャラクタなど、元画像のイメージが大きな意味をもつ テクスチャを貼りつけたい場合は、このオプションを指定してください。 比較的元のイメージに近い状態で貼りつけることができます。 -D[ETAILTEX] ソリッドテクスチャにディティールテクスチャをブレンドし、表面の より細かい模様を表現します。 時計を大きく拡大してもテクセルの粗さが目立たなくなります。 拡大しないと差がほとんど判らないという話もあります(^^; -r オプション指定時のみ有効です。 最大で3テクスチャをブレンドします。 3ユニット以上のマルチテクスチャをサポートする環境では、 全てのテクスチャを1パスでブレンドできるため、非常に高速です。 2ユニットまでのマルチテクスチャをサポートする環境では最大2パス、 マルチテクスチャを一切サポートしない環境では、最大で3パスの レンダリングを行う必要があるため、速度は低下します。 マルチテクスチャ機能を使えない場合、GL_*_COLOR 系のブレンド ファクタを正常に実行できる必要があります。 このため、-RIVA[128], -PERMEDIA2, -NO_COLOR[_FACTOR] オプション などを指定すると無効になります。 また、glclock のコンパイル時 OpenGL 環境および、 ランタイム OpenGL 環境の双方が、 ・OpenGL-1.1 以降 ・GL_EXT_texture_object extension のいずれかをサポートしている必要があります。 -df[ile] s ディティールテクスチャの画像ファイルを指定します。 デフォルトは付属の detail.pgm です。 -r オプションおよび -D オプションが指定されている時のみ有効です。 -dt[exscale] d ディティールテクスチャ使用時(-D オプション参照)のテクスチャの スケールを指定します(S, T 座標両方)。 デフォルトは 4.0 です。 -lf[ile] s 環境マップのスペキュラーに使用する画像ファイルを指定します。 デフォルトは付属の light.ppm です。 -e または -r で 1 以上が指定されているか、 -C オプションが指定されている時のみ有効です。 -f[ield] n デプスオブフィールド(被写界深度)ブラー、いわゆる「ピンぼけ」 を処理します。 ある一定の焦点距離から離れるに従い、序所に像がぼやけます。 n には 2〜5,7,12 のいずれかを指定できます。 実行中に'd'キーでいつでも機能を ON/OFF できます。 -f オプションを指定していなかった場合は、自動的に 7 回になります。 -fr[ange] d デプスオブフィールドブラー実行時のピンぼけの度合いを 指定します。 1.0 がデフォルトで、大きくするほど強くピントがぼけます。 -MULTI[SAMPLE] モーションブラーとアンティエイリアスの同時がけを許可します。 通常、実行中に 'm' および 'a' キーでモーションブラーや アンティエイリアスを実行する場合、これらの機能は互いに排他的 です(一方は自動的に OFF になります)。 これは、同時にかけるとあまりに処理が遅くなってしまうため、 誤って操作してしまった場合に危険だからです。 このオプションを指定しておくと、制限をはずし、これらの機能を同 時にかけることが可能になります。 -m オプションと -a オプションを明示的に両方指定した場合は、 自動的に有効になります。 -gs[mooth] n 金飾り(?)のスムージングフラグ。 時計の周辺に付いている金飾りの(法泉ベクトルを隣同士のポリゴン から平均化して計算)の条件を次の中から指定します。 -1: 自動。テクスチャマッピング適用時のみスムージングを 行います(デフォルト)。 0: スムージングを行いません。 1: 必ずスムージングを行います。 -ani[sotropy] n 異方性フィルタ(Anisotropic Filtering)処理を行います。 通常のミップマッピングでは、テクスチャが長方形に引き伸ばされた 場合に、より縮小された方向のサイズに合ったミップマップを使用し ます。 このため、長い方向のテクスチャは、必要以上に縮小されたミップ マップを使用することになり、テクスチャの解像度が粗くなります。 正方形の形のまま縮小されない限り、長い方の辺の解像度までが、 短い方の解像度に合わせて低くなってしまう訳です。 例えば、縦横比8:1で縮小されたテクスチャは、長い方の辺が 本来の1/8の粗さでテクスチャマッピングされます。 結果、長い方の辺がぼやけた感じになったり、テクセルのジャギーが 目立つことになります。 異方性フィルタリングとは、これを防ぐための特殊なミップマップ フィルタです。 n には、異方性の最大値(縦横比の長い方の最大値)を指定します。 -ani 8 とすると、縦横比8:1までなら、適切な解像度で表現できるように なります。 ただし、システムがサポートする最大値には制限があるため、それより 大きい値は使用できません。 n に -1 を指定すると(-ani -1)、自動的にシステムがサポートする 最大値をセットします。 実行中 'u' キーで、いつでもフィルタの ON/OFF を切り替えられます。 -ani オプションを指定せずに 'u' キーで ON にした場合は、自動的に システムがサポートする異方性の最大値(可能な限り画質重視)に なります。 OpenGL のランタイム環境が、EXT_texture_filter_anisotropic 拡張 機能をサポートしている必要があります。 -FT[EST] テクスチャフィルタリングテストモード。 ミップマップのレベル毎に色を変化した特殊なテクスチャマッピング モードになります。 各フィルタがうまく処理されているかを確認できます。 例えば、ミップマッピングを適用している場合、テクスチャのサイズに よって、色が変化していなければなりません。 色が変化していない場合、ミップマップがサポートされていません。 また、トライリニア・フィルタを適用している場合は、色が段階的に ではなく、滑らかに変化していなければなりません。 色が段階的に変化している場合、ミップマップはサポートされて いますが、トライリニア・フィルタはサポートされていません。 -MT[EST] ミップマップフィルタリングテストモード。 1ピクセルの太さの十字の黒線が入った特殊なテクスチャマッピング モードになります。 ミップマップ処理時、どれだけ最適なレベルのミップマップが使われて いるかを確認できます。 なるべく細い線が、途切れたりせずにメッシュ状に描画されるのが 理想です。 たとえば、線が途中で途切れたり点線になっている場合は、最適な ミップマップよりもサイズの大きいテクスチャが選択されています。 また、テクスチャが長方形に縮小されている場所では、線が極端に 太くなっていることが解ると思います。 これはミップマップが、より縮小された方向のレベルによって選択 されるためです。 異方性フィルタリング(-ani[sotropy] オプション参照)がサポート されている環境でこのフィルタを使うと、線がより細く改善されます。 どの程度まで改善されるかは、システムのサポートに依存します。 -FT, -MT オプション指定時は、-r, -e, -C といった時計の素材指定オプション は指定しない方が、より変化が判りやすくなります。 -r, -e, -C を指定せずに -FT, -MT オプションで起動すると、マウス右ボタン ドラッグは距離や遠近感の変化ではなく、テクスチャの拡大縮小になります。 左右ドラッグ、上下ドラッグで、それぞれ S 方向、T 方向のテクスチャの スケールが独立して変化します。 glclock -FT や glclock -MT で実行し、'y' や 'u' キーでミップマップ フィルタ、異方性フィルタを切り替えながら、右ボタンドラッグし、テクスチャ スケールをさまざまに変化させてみてください。 -fog n フォグモードを指定します。 デフォルトは線形フォグです。 0 : フォグなし 1 : 線形フォグ(デフォルト) 2 : 指数関数(距離) 3 : 指数関数2(距離の二乗) 実行中 'q', 'w', 'e', 'r' キーで、それぞれフォグなし、線形フォグ、 指数関数、指数関数2にいつでも変更できます。 -lt[ype] n 光源の種類を指定します。 n には 0〜2 までを指定できます。 0 : デフォルト、平行光源(減衰なし) 1 : 点光源(距離の2乗に反比例して減衰) 2 : スポット光源(点光源に加え、ライトの方向によっても減衰) 当然ながら、n が大きくなる(つまり計算が複雑になる)ほど、 処理は遅くなります。 実行中 'i', 'o', 'p' キーで、それぞれ平行光源、点光源、 スポット光源にいつでも変更できます。 ※環境マッピングを使用しているモードでは、光源の減衰を環境マップ  では表現できないため、マウス右ドラッグすると整合性が取れなく  なり、見た目がおかしくなります。 -ls[aturation] d 光源の彩度(色の鮮やかさ)を指定します。 1.0 がデフォルトで、絶対値を大きくするほど鮮やかになり、 0.0 でモノクロライトになります。 マイナス値を指定すると、補色(正反対の色)になります。 実行中、'h', 'i', 'g' キーで、いつでも調整できます。 'h' キーを押す毎に彩度が下がり(デフォルトから5回押すと モノライト)、'j' キーを押す毎に彩度が上がります。 彩度を下げ続けた結果モノクロを超えると、補色となり逆にで彩度が 上がってゆきます。 'g' を押すとデフォルトの彩度に戻ります。 ※環境マッピングを使用しているモードでは、実行中に変化させると、  環境マップが彩度の変化に対応できないため、整合性が取れず、  見た目がおかしくなります。 -l[rotate] n 光源の回転動作の ON/OFF を指定します。 n には -1, 0, 1 のいずれかを指定します。 -1 : デフォルト。環境マッピングを行わないモード(光源が動的に 変化しても矛盾が生じないモード)のみ光源を動かします。 0 : 光源は動きません。 1 : 光源は必ず動きます。 実行中 'k' キーで、いつでも回転動作を ON/OFF できます。 環境マッピングを使用しているモードでは、光源が動くと環境マップ との整合性が取れなくなるため、見た目がおかしくなります。 -LIGHT[TWOSIDE] OpenGL の GL_LIGHT_MODEL_TWO_SIDE を有効にします。 これを指定すると、ライティング計算を必ず両面(ポリゴンの裏表) について行います。 通常このオプションを指定しても、速度が遅くなる可能性があるだけで、 まったく意味を持ちません。 3Dfx OpenGL Beta 2.1 で、これを有効にしておいた方が速度が上がる という意味不明の現象を確認したため、念のため明示的に指定できる ようオプションにしました。 3Dfx OpenGL Beta 2.1 では自動的に指定されます。 -- ■ glclock-4.6 からglclock-5.0 への変更点(1999/07/18) ○ Voodoo 環境で、-r, -e オプション時の画質向上  「OpenGL-1.1 専用になってしまったのだから」ということで、  1.1 の機能であるテクスチャオブジェクトを利用するようにしました。  この結果、テクスチャサイズが 256 ピクセルまでしかサポートされていない  環境(Voodoo 系カード等)で -r もしくは -e オプションを付けた場合、  テクスチャのキメが細かく、綺麗になりました。 ○ Voodoo3 に対応  3Dfx OpenGL ICD に対応しました。  Voodoo3 や Voodoo Banshee をお使いの方にお勧めです。  ※おそらく動きますが、Banshee は未確認です。  3Dfx 社が配布している Quake III Compatible Driver    が必要です(おそらく)。  Voodoo3 とかだとひょっとすると必要ないかもしれません…。  glclock を実行してみて、アクセラレーションが効いていれば OK です。  Quake III Compatible は、Quake III での動作しか確認されていません。  一般的な OpenGL アプリケーションでは不具合も報告されているようです。  インストールされる方は、予めご承知置きください。  glclock は、Voodoo3 3000 AGP16M で動作を確認しました。  もちろん Voodoo3 ではウィンドウモードで実行可能です  (Banshee もおそらく)。  一応 Voodoo, Voodoo2 でも動作しますが、お勧めできません。  これらのボードでは 3Dfx OpenGL Beta 2.1 をご利用ください。  また、Voodoo Rush は、情報不足のためなんとも言えません。  Quake III Compatible Driver で glclock を普通に実行すると、  環境マップ関連で描画がおかしくなります。  -3DFXICD オプションを付けるとこのドライバ用設定で起動し、  正常に描画できるようになります。  まぁ深く考える必要はなく、makeshort.exe を実行時に、  OpenGL 環境として "3Dfx OpenGL ICD (Voodoo3)" を選択すれば OK です。 ○ スクリーンセーバライクな実行モードを追加  -SA オプションをつけると、スクリーンセーバライクなモードで  起動します。ただし、あくまでスクリーンセーバとして利用できるような  設定で起動するだけであり、OS から自動的に起動させることはできません。  glclock とは別に正規のスクリーンセーバが設定されていると、  結果的に多重起動しますので、ご注意ください。  バックが黒のフルスクリーンモードで起動し、適当に動き回ります。  マウスをある程度以上の速度で動かすか、キーボードを操作すると終了します。  ただし、GLUT で制御しているため、一部の特殊キー(Alt etc.)の入力は  受け付けず、終了しません・・・あしからず。  また、  ・-csize 時計のサイズ  ・-speed 時計の回転速度  ・-zoom 視野角(広角/望遠)  といったスクリーンセーバモード起動時専用のオプションがあります。  詳細は下記の「○ 追加および変更されたオプション」または MANUAL.txt を  ご覧ください。  通常、フルスクリーンモードで実行するには -FU オプションを指定しますが、  スクリーンセーバモードでは、デフォルトがフルスクリーンモードとなります。  逆に -FU を付けるとウィンドウモードとなります。 ○ OpenGL 内部エラーの修正  前バージョンまで、OpenGL 内部でエラーが起こっていました。  気づくのが遅れてしまいましたが、これを修正しました。  重要なバグリポートをくださった  nVIDIA OpenGL group の Nick Triantos 氏に心から感謝いたします。 ○ OpenGL 動作環境の情報を出力  これまで、使用されているドライバを判断しにくかったため、  実行時コンソールやベンチマーク結果(benchclock 実行時に生成される  bench.log ファイル)に、使用している OpenGL 動作環境の情報  (提供ベンダー名、レンダラー識別子、OpenGL バージョン)を出力する  ようにしました。 ○ Windows 版はショートカット作成プログラムちょこっと変更  Windows でショートカットを自動生成する makeshort.exe に、  いくつかチェックオプションを追加しました。  とはいっても、OpenGL 環境を選択すること以外、  とくに意識する必要はありません。 ○ 時計針の形状変更  これはまぁ、見れば解るでしょうか。。。 ○ 夜の色を多少明るく  Windows は、元々ディスプレイのガンマ値が低めに設定されています。  このため、特に夜の光源では暗すぎるように感じた方も多いと思います。  そこで、光源を多少明るくしました。  SGI ワークステーションなどガンマ値が適切にセットされている環境では、  逆に全体的に明る過ぎると感じるかもしれません。 ○ その他いろいろと修正  他にも結構いろいろと変更してありますが、  見た目には大きな影響はないです。 ○ 追加および変更されたオプション -3DFXICD 3Dfx OpenGL ICD 用のモードで実行します。 Banshee でもおそらく動きます(動作未確認)。 当然ウィンドウモードで起動できます。 Quake III Compatible Driver が必要かもしれません。 glclock を実行してもアクセラレーションが効かない場合は、 から該当するドライバを入手し、インストールしてください。 ※Quake III Compatible は、Quake III での動作しか確認 されていません。 一般的な OpenGL アプリケーションでは不具合も報告されて いるようです。予めご承知置きください。 ※Voodoo, Voodoo2 でも動作しますが、お勧めできません。 3Dfx OpenGL Beta 2.1 の方をご利用ください(-VOODOO 参照) また、Voodoo Rush は情報不足のため、なんとも言えません。 -SA[VER] スクリーンセーバライクなモードで起動します。 ただし、OS からの自動起動などはできません。 正規のスクリーンセーバから見れば通常のアプリケーション と変わりませんので、glclock と別にスクリーンセーバが 設定されていると多重起動します。ご注意ください。 -cs[ize] d スクリーンセーバモード時の、時計の表示サイズを指定します。 d には 0.0〜1.0 程度の値を指定します。 デフォルトは 0.5 です。 0.0 で非常に小さなサイズ、1.0 にすると、ウィンドウの縦 と同程度の巨大なサイズになります。 マイナス値も指定できますが、小さすぎて見えないでしょう(^^; -speed d スクリーンセーバモード時の、時計の回転速度を指定します。 デフォルトは 1.0 です。 -zoo[m] d スクリーンセーバモード時の視野角を指定します。 d には、0.0〜1.2 までの値を指定します。 d が小さい程広角に、大きいほど望遠になります。 デフォルトは 0.5 です。 -FU[LL] フルスクリーンで実行します。 ※Windows版のみ、フルスクリーンモードで -w, -h オプションを両方指定すると、ディスプレイを -w, -h で指定した解像度に変更してフルスクリーン実行します。 例えば glclock -w 640 -h 480 -FU とすると、640x480 ピクセルの解像度でフルスクリーンになります。 ※エラー処理はしているので特に危険はないはずですが、 明らかに表示の不可能な解像度は指定しないでください。 スクリーンセーバモード起動オプション(-SA)をつけた場合は、 デフォルトでフルスクリーンモードとなり、逆に このオプションをつけるとウィンドウモードとなります。 ※3Dfx Voodoo 用実行モードでは必ずフルスクリーンになります。 -- ■ glclock-4.5 からglclock-4.6 への変更点(1999/03/15) ○ OpenGL環境指定オプションの追加 特に Windows の OpenGL はグラフィックスチップや ドライバのバージョンによってサポート機能に制限があったり、 細かなバグがあったりします。 そこで、いくつかの代表的な環境にオプションで対応しました。 現在は、 ・3Dfx OpenGL(Voodoo, Voodoo2) -VOODOO ・PERMEDIA2 -PERMEDIA2 ・RIVA128, ZX -RIVA128 ・RIVA TNT(表示が乱れる環境用) -TNTFIX などがあります。 まあ実際には別に難しく考えず、 Windows用ショートカット作成プログラム(makeshort.exe)を 実行する際、対応する環境を選択するだけで OK です。 ※前バージョンまでの mkshortcuts.exe は makeshort.exe に変更しました。 一覧に特に該当しない場合は、標準の「Default OpenGL」のままで結構です。 当然ですが、選択した環境にマッチするビデオカードが必要です。 ○ Windows環境 Voodoo用実行ファイルも共通に glclock-4.5 では 3Dfx OpenGL 用に、fxclock.exe という別モジュールを 用意していましたが、共通のモジュールに変更しました。 makeshort.exe を実行する際、Voodoo系を選択するだけで OK です。 ただし、 ・Voodoo Graphics、Voodooo2 または Voodoo Rush を搭載したビデオカード ・Glide 2.31 または Glide 2.4x の ランタイムライブラリ(glide2x.dll) ・3Dfx OpenGL Beta 2.1(opengl32.dll) が必要です。 3Dfx OpenGL Beta 2.1 をお持ちでない方は、 http://lpserv01.bais.chubu.ac.jp:8080/~g93088/archives/3DfxOpenGL32DLL.zip を入手し、含まれている opengl32.dll を、glclock を展開したフォルダに コピーしてください。 ※Windows のシステムフォルダにコピーしてしまわないよう注意してください。 ○ 実行中 'c' キーでスクリーンショット 実行ディレクトリに glclock_shot.ppm が出力されるだけです。 現段階では ppm フォーマット固定です。 また、ファイル名も固定なため、何度も押すと上書きされます。 ○ ガラス表現を多少変更 -g 3 を指定した時のガラスの形状を変更しました。 以前よりかっこよくなっています。 f_*clock 以外で採用しているので、それらを実行して見れば おそらく分かるでしょう(って、分からんか普通)。 ○ 木目テクスチャ画像 "wood.ppm" を変更 以前のバージョンよりもかっこよくなりました。 f_woodclock、woodclock などを見ると分かると思います。 ○ ベンチマークスクリプト(benchclock)の最後の2つを多少変更 RIVA TNT で、最後の2つだけ実行不能という状態だったため、 問題が出ないように多少単純な時計に変更しました。 ※約 14,000 トライアングルに減りました。 おそらくはこれで実行可能だと思いますが、 試した環境は一部であるため、保証はしかねます。 ○ スクリプト skyclock を削除、mwclock 追加 mwclock は marbleclock の文字版が木目になっただけです。 ○ Windows版は各時計実行用バッチファイルを削除 バッチファイルが増えてうっとうしいだけなので、削除しました。 ○ Windows版は OpenGL-1.1 必須 X-Window版はコンパイルが必要なため問題ないのですが、 Windows版は OpenGL-1.1 に対応したランタイムライブラリ (opengl32.dll, glu32.dll)が必須となりました。 これは、ポリゴンオフセットと呼ばれる OpenGL-1.1 の機能を 使うためです(-TNTFIX や -z[offset] オプション参照)。 ○ その他細々とした修正 ○ 追加および変更されたオプション -VOODOO 3Dfx OpenGL の Voodoo、Voodoo2、Voodoo2 SLI に特化したモードで実行します。 基本的にフルスクリーンとなり、-w、-h オプションで解像度を 指定しないと 640x480 になります。 ※正確には 3Dfx OpenGL Beta 2.1 用です。 -RIVA[128] RIVA128 または ZX 用モードで実行します。 具体的にはαグローの使用を禁止します。 -r および -R オプション指定時に効果があります。 -PERMEDIA2 現段階では -RIVA128 と同じです。 -TNT[FIX] RIVA TNT の Z-Buffer バグフィックスモード。 TNT はドライバによっては、 -e 3、-r 2、-s 3 のオプション使用時に描画が乱れます。 これを防ぐために指定します。 具体的にどういう処理をしているか知りたい方は、 -z[offset] オプションをご覧ください。 -RUSH 3Dfx OpenGL の Voodoo Rush 動作未確認です。 -z[offset] d マルチパスレンダリング時の2回目の描画で Zバッファに使用する z値にオフセットを与えます。 2回以上で1枚のポリゴンを描画する場合、 Zバッファの値は前に描画したポリゴンと同じか、 小さく(近く)なっていなければなりません。 OpenGL では基本的にまったく同じになるはずですが、 環境によっては誤差などで大きく(遠く)なる場合があります。 前の描画より大きくなってしまうと、 Zテストで陰面と判断され、そのピクセルは描画されません。 このため、描画が乱れてしまいます。 d に 0.0 以外の正の実数を与えると、 (1.0 + d * 当該ポリゴンのZの傾き) で計算できる値を z値から減算してからZテストを実施します。 d には、0.0 より大きく、最大でも 1.0 程度の値を指定します。 実際問題として試行錯誤で決めるしかないのですが、 通常は 0.1 程度で充分です。 大きな数値を指定すると、遠いポリゴンが手前であると判断され、 逆に描画がおかしくなる可能性があります。 -g[lass] n 時計表面のガラス張りの表現方法を指定します。 n には 0〜3 を指定します。 0 : ガラスの描画を一切行ないません。 1 : ハイライトのかけら(?)を回転させます。 デフォルトですが、テクスチャ使用時は 2 に変更されます。 2 : ガラス表面の反射を表現します。 3 : 湾曲したガラスの反射を表現します。 ※ -g 1 は、OpenGL 用のハードを持たない(混合処理が遅い) 環境用です。 できるだけ速度を落とさずに美しく見せるための 強引なオプションで、写実性のかけらもありません。 しかし、スピードの低下も少なく意外とかっくいいので 悪くないと思います(^^;; ただし、テクスチャマッピング実行時は 1 は指定できません。 -- ■ glclock-4.42 からglclock-4.5 への変更点(1998/10/06) ○ クリスタル時計とメタル時計のオーバサンプリング高速化 モーションブラーとアンティエイリアシングは、 OpenGLのアキュムレーションバッファを利用して処理しています。 そのためオーバサンプリングの回数分、全画面分の加算処理をしています。 この処理は非常に遅く、例えば8回サンプリングの場合(-m 8 または -a 8)でも、 8倍どころではない時間がかかっていました(数十倍とか、下手すると数百倍)。 -C または -e 1 オプション指定時(クリスタルまたはメタル時計)のみ、 アキュムレーションバッファや毎回画面クリアを使わずに処理する方法に変更しました。 クリスタル時計時の処理は単純であるため特に速くなっており、 OpenGL ハードウェアの環境では、前までの速度とはけた違いです。 是非一度お試しを。 ※ただし、一般にフレームバッファの精度(ビット数)は アキュムレーションバッファ程高くないため、画質は悪くなります。 できれば、フルカラー表示できる環境でお試しください。 ○ Voodoo版は、3Dfx OpenGL Beta 2.1 ドライバに対応 3Dfx Voodoo 関係のチップを搭載したビデオカード用に、 これまでは Mesa3D と呼ばれる OpenGL互換ライブラリを利用していましたが、 この度、3Dfx 社の OpenGL Beta 2.1 に対応しました。 全体的にかなり速度アップしている上、 Mesa3D 特有の計算の誤差らしきバグもなく、非常に綺麗です。 ・Voodooo2、Voodoo Graphics または Voodoo Rush を搭載したビデオカード ・Glide 2.31 または Glide 2.4x の ランタイムライブラリ(glide2x.dll) ・3Dfx OpenGL Beta 2.1 が必要です。 3Dfx OpenGL Beta 2.1 は、 http://www.3dfx.com/docs/opengl_beta/opengl_beta.html から入手できます。 3Dfx OpenGL Beta 2.1 を展開した中に含まれている 3dfxopengl.dll を glclock を展開したフォルダにコピーし、 ファイル名を opengl32.dll に変更します。 glclock.exe を削除(またはファイル名を変更)し、 同じフォルダにある fxclock.exe を、ファイル名 glclock.exe に変更します。 以降は、通常の Windows 環境と同じように実行できます。 ○ 再びフリーソフトウェアに glclock はある時期からカンパウェアとしていましたが、 やっぱし結局フリーソフトウェアに戻しました。(^^;; まあ、今までからも README.TXT に記してあった通り、 実質フリーウェアとして扱って頂いていたので、あんまし関係ありませんが...。 ○ ベンチマーク(benchclockで起動)テストに1つ追加 テスト「12. tri-linear transparency texture single buffer」 の次に、 「13. tri-linear transparency texture with over sampling single buffer」 「14. tri-linear transparency texture with over sampling double buffers」 の2つのテストを追加しました。 前までの 13.以降のテストは、15.以降に移動しています。 13. 14. は、オーバサンプリングによるモーションブラーのテストです。 ○ FPS 表示時の TPS が間違っていたのを修正 -F オプションまたは実行中に 'f' キーでフレームレートを表示できますが、 その時一緒に表示されている TPS(1フレームで描画している三角ポリゴン数)の 計算が少し間違っていたので修正しました。実際ほとんど変わってませんが。 ○ 環境マップ用テクスチャ画像 "sky.ppm" 多少修正 ○ その他細々とした修正 -- ■ glclock-4.41 からglclock-4.42 への変更点(1998/08/16) ○ Windows版のみ ディスプレイ解像度 Windows版のみ、-w(ウィンドウ幅)、-h(ウィンドウの高さ)および -FU(フルスクリーン実行)オプションをすべて指定すると、 ディスプレイを -w,-h で指定した解像度に変更して実行します。 例えば glclock -w 640 -h 480 -FU のように指定すると、 640x480 ピクセルのフルスクリーンモードで実行します。 ※エラー処理はしているので特に危険はないはずですが、 明らかに表示の不可能な解像度は指定しないでください。 ○ その他細々とした修正 -- ■ glclock-4.4 からglclock-4.41 への変更点(1998/06/12) ○ Windows NT のベンチマーク修正 Windows NT で、ベンチマーク結果がファイルに出力されていなかった バグを修正しました。 ○ FPS 表示の時の PPS を TPS(Triangles Per Second)に FPS 表示を ON にしたとき(-F オプションまたは実行中に 'f'キー)、 標準出力の PPS(Polygons Per Second)を、TPS(Triangles Per Second)に 変更しました。時計を構成している見かけのポリゴン数ではなく、 実際に描画処理を行ったトライアングル数になっています。 って、そんなことどうでもいいか...(^^; ベンチマーク結果も、平均FPS以外に、平均TPS、1フレームの描画に使用している トライアングル数も出力するようにしました。 benchclock での各種テストの説明をマニュアルに記載しました。 マニュアルの「■ベンチマークテストを実行する」をご覧ください。 ○ フォグ(空気遠近法)を正確に フォグが一部おかしかったのを修正しました。 ○ 文字盤へ壁の映り込みをリアルに(UNIX版のみ) 壁の文字盤への映り込みを、距離によってだんだん薄くなるようにしました。 ただし、UNIX版のみで、-r & -R オプション使用時だけです。 Windows版もプログラム上は実装しているのですが、 RIVA128など、アルファグローをサポートしていない環境があるため、 あえて使っていません。 ○ その他、細かな修正 -- ■ glclock-4.31 からglclock-4.4 への変更点(1998/05/22) ○ 秒針だけモーションブラー機能追加 モーションブラーが遅すぎてあまりに実用に耐えないため、 秒針にだけモーションブラーをかけることができるようにしました。 それに伴い、-sm[otion] および -ss[hutter] オプションを追加。 しかし、普通に見てるだけではほとんど分かりません。(^^;; ○ テクスチャフォーマット選択オプション(暫定)追加 テクスチャの内部フォーマットが 24bit RGB 固定だったのを 24bit RGB または 32bit RGBA から選択可能にしました。 通常はほとんど意味はありませんが、32bit フォーマットしか使えない 環境があった場合に役に立ちます(まず無いですが...)。 ○ 追加したオプションの説明 -sm[otion] n 秒針のみモーションブラー 秒針のみにモーションブラー効果をかけます。 しかし、普通に見てるだけではほとんど分かりません。(^^;; -C オプション(クリスタル時計)以外の実行では 擬似的な方法になります。 例によって複数回描画しますが、 この時の描画回数を n で指定します。 n には 2 以上を指定します。 1 以下はデフォルト値で、モーションブラーを行いません。 n が大きいほど画質は向上しますが、描画は遅くなります。 ※実行中に'n'キーでいつでも機能を ON/OFF できます。 この時、デフォルト(-sm 0 or 1 または -sm オプションなし)の 場合は自動的に 8 回に再設定されます。 -sm で 2 以上の回数を指定していた場合は、その回数になります。 -m(通常のモーションブラー)と同時には実行できません。 -ss[hutter] d 秒針モーションブラー実行時の、シャッタースピードの指定。 基本的には -sh[utter] オプションと同じです。 モーションブラーでどのくらいの時間ブレをかけるかを 前回から今回のフレームまでの連続時間の百分率で指定します。 1.0 で前回の時間から連続になり(デフォルト) 0.0 だとブラー効果なしになります。 -tf[ormat] s テクスチャフォーマットの指定 現時点では、s には RGB(RGB 24bit フォーマット)または RGBA(RGBA 32bit フォーマット)のいずれかを指定できます。 通常はほとんど意味はありませんが、例えば 32bit フォーマットしか使えない環境があった場合に役に立ちます。 -- ■ glclock-4.3 からglclock-4.31 への変更点(1998/05/11) ○ パフォーマンスアップ 描画の仕方を少々変更しました。 その結果、10% 〜 最大で(設定によっては)60% ほどスピードアップしました。 ○ Voodoo 版の操作性が向上 具体的には、ディスプレイの解像度を適切に変更するようにし、 ドラッグしている間だけマウスの位置にサイト(照準??)を 表示するようにしました。 前までかなり劣悪でしたが、随分ましになったと思います。 -- ■ glclock-4.22 からglclock-4.3 への変更点(1998/04/25) ○ -n[width] オプション追加 時計の針の幅を変更するオプションを加えました。 あんまし役に立ちませんが... ○テクスチャのフィルタオプションの指定方法追加 テクスチャのフィルタ(-fi[lter])オプションの引数で N, L, NN, LN, NL, LL のいずれかを指定する代わりに、 直接 -N, -L, -NN, -LN, -NL, -LL のいずれかのオプションを 指定することができるようにしました。 またこれにより、-L[OCAL] オプションは、-LO[CAL] に変更。 つまり、-LOCAL オプションの最低認識文字が -L から -LO になりました。 同様に -N[OLID] オプションは、-NO[LID] に変更しました。 ○起動スクリプト f_glclock 追加 ソフトウェアエミュレーション用の起動スクリプト f_glclock(Windows版は f_glclock.bat と、自動作成のショートカット f_glclock) を追加しました。 内容は、woodclock に対する f_woodclock などと同様、 glclock がもっと単純な形になり、速くなるだけです。 ○ glclock をカンパウェアに これはバージョンアップとはあまり関係ありませんが、 glclock はカンパウェアにさせて頂きました。 とはいっても、あくまでユーザの方の御厚意による寄付であり、 配布/改変等は自由です。 使用制限その他も一切ありませんので、これまで通りご利用ください。 詳しくは、README.TXT の ■ソフト種別 をご覧ください。 ○ドキュメント整備 各種ドキュメントを整備しました。 前よりは読みやすくなったことと思います。 特に、MANUAL.TXT のオプションの説明は各オプションを簡単に分類し、 調べやすくしました。 ○その他、細かなバグの修正等 ○追加・変更のあったオプションの説明 -n[width] d 時計針の幅変更オプション d には 0.0 以上 3.0 以下の値を指定できます。 デフォルトは 1.0 です。 デフォルトでも glclock-4.22 以前より少々広めです。 -{ N | L | NN | NL | LN | LL のいずれかを指定 } テクスチャに使用するフィルタを指定します。 指定方法が異なるだけで、-fi[lter]オプションと内容は同じです。 -N … ポイントフィルタ -L … バイリニアフィルタ -NN … ポイントフィルタ & ミップマップ -NL … ポイントフィルタ & ミップマップ・バイリニア -LN … バイリニアフィルタ & ミップマップ -LL … バイリニアフィルタ & ミップマップ・バイリニア (トリリニアフィルタ:デフォルト) ※ -fi[lter] オプションも参照してください。 -LO[CAL] OpenGL の、GL_LIGHT_MODEL_LOCAL_VIEWER を適用します。 これを指定すると、シェーディングの際に 視線ベクトルを頂点単位で計算します。 描画速度は低下しますが、写実性は多少向上します。 ※glclock では、擬似的に面の法線ベクトルをずらすなどして、 このオプションを指定しない場合の画質の劣化を軽減しています。 そのため、このオプションによる劇的な変化はありません。 -NO[LID] 時計の蓋の描画をなくします。開閉(?)はできます。 -- ■ glclock-4.21 からglclock-4.22 への変更点(1998/04/19) ○ Windows版 バッチファイル復活 4.21 で起動コマンドのバッチファイルを削除していたのですが、 よく考えるとこれではコンソールから実行できないので、復活させました。 まあ、あまり使う人はいないと思いますが(普通ショートカットで OK)。 ○ Windows版は ショートカット用のアイコンを追加 32x32 256色アイコンをいくつか追加しました。 256色だけです。はっきり言って手抜きです。時間がありません。誰か作って... ○ Windows版は ソースを分離しました。アーカイブには含まれていません。 ○その他細部変更 多少変更した箇所がありませすが、ほとんどWindows版しか変更してません。 -- ■ glclock-4.2 から glclock-4.21 への変更点(1998/04/17) ○ Windows版は、バッチファイルの代わりにショートカット自動作成 Windows版は、 benchclock.bat 以外のバッチファイルを添付するのをやめ、 代わりにショートカット自動作成プログラム mkshortcuts.exe を添付しました。 始めに mkshortcuts.exe を実行すると、 f_metalclock, metalclock など合わせて10個のショートカットが 自動的に作成されます。 これまでと違い、いきなりショートカットから簡単に実行できます。 ○ f_skyclock と skyclock を少々変更 -- ■ glclock-4.1 から glclock-4.2 への変更点(1998/04/15) ○ Windows版はようやくウィンドウアプリに 要望が多かったのですが、ようやく Windows版はウィンドウアプリになりました。 ただし、バッチファイルはコンソールから上がります(これもいずれ対処します)。 コンソールは上がらなくなりましたが、逆に途中のメッセージは読めません。 読みたい方は、標準出力をリダイレクトしてください。 そのうち、きちんとウィンドウのメッセージにするつもりです(あくまでつもり)。 ※気に入ったオプションの組み合わせを見つけた場合は、 ショートカットにしておくことをお薦めします。 glclock.exe からショートカットを作成し、プロパティのショートカットタブの リンク先に、お気に入りのオプションを加えてお使いください。 ○実行画面左上にも FPS 表示 -F オプション(または実行中に 'f' キー)で fps 表示をした場合、 画面左上にも fps 表示が出るようになりました。 ○テクスチャイメージ読み込みパスの環境変数 "GLCLOCK_IMAGE_PATH" 付加 テクスチャマッピング実行時にカレントディレクトリ(glclock を実行した場所)に 指定した ppm ファイルがない場合は、 環境変数 "GLCLOCK_IMAGE_PATH" で指定したディレクトリも検索するように なりました。 これまでは、実行したディレクトリに指定された ppm ファイルがないと その場でエラー終了していました(実行ファイルにパスが通っていても駄目)。 特に UNIX 環境で有効です。例えば、csh シェルをお使いなら、.cshrc に setenv GLCLOCK_IMAGE_PATH ppmファイルの置いてあるディレクトリのパス のような一行を加えておくと良いでしょう。 ※ただし現時点では、ディレクトリは1つしか指定できません。 そのうちいくつでも指定可能なフォーマットにする...かもしれない。 ○ -sl[eep] オプション追加 ○ -e[nv] オプションは、また引数に 3 まで指定可能に これはちょっと失敗。引数 2 が新しい奴ですが、思い通りに行きませんでした。 うーむ。一応、前までの 2 の指定は 3 に変わりました。 ○形状の不具合を修正 時計の形(-d オプション、デフォルトは 24角形)を 6 以下に指定した場合に、 ガラスや時計の針、その他オブジェクトがはみ出していたのを修正しました。 -d 3 (三角時計)でもちゃんと時計になります(妙な感じにはなりますが) ○画像ファイル変更 "sky.ppm"(環境マップ)および "marble.ppm"(大理石テクスチャ)を 変更しました(きめ細かくなった)。 ただ、これによりアーカイブのサイズが大きくなってしまいました。m(_ _)m そのうち、何らかの形で対処するつもりです。 どっかにフリーの汎用(Windows, UNIX)画像ローダはないでしょうか? JPEGにしてしまえば、全然問題ではなくなるのですが... 何かご存じの方、ご連絡お待ちしています。 ○Voodoo チップ搭載カード専用の実行ファイル作成 これまでは実行ファイルは同じものを使っていましたが、何かと不具合が多いため 別モジュールにしました。 例えば、なかなかフルスクリーンに切り替わらなかったり、 適当にクリックするとウィンドウモードに戻ってしまうことは 滅多に起こらなくなりました。 またこれに伴い、Voodoo モジュールのデフォルトのウィンドウサイズを 640x480 に変更しました。 Voodoo2 搭載カードをお持ちの方は、-w 800 -h 600 などでもお試しください。 実行モジュールは Voodoo用のアーカイブに添付しています。 これまで同様、上書き展開してお使いください。 ※通常のものを残しておきたい場合は、あらかじめ別のフォルダに通常の glclock 関連をすべてコピーしてから、Voodoo用に使いたいフォルダに、 Voodoo用アーカイブを上書き展開してください。 ○その他の修正(ベンチマークの出力を少々変更 etc.) ○追加・変更したオプションの説明 -sl[eep] n CPU 負荷コントロールオプション。 1フレーム描画する度に、n ミリ秒実行をスリープします。 デフォルトは 0(一切スリープしない)です。 スリープしている間 CPU を使いませんので、 常駐させておきたい場合などに負荷を軽減するために使用します。 常駐させるなら毎秒1〜2回程度動けば良いので(多分)、例えば glclock -sl 500 ように実行して毎フレーム 0.5秒スリープさせます。 -e[nv] n 環境マッピングを実行します。 n には、0〜3 までの値を指定します。 0 : デフォルト。環境マッピングを行なわずに 時計自身の素材でシェーディングします。 1 : テクスチャの色を、時計の色と光源0(-bgcolor参照)の色で 変調して描画します(鏡時計) 2 : うーんまだちょっと甘い。 1 をもう少しくっきり綺麗にした 感じになるはずが、あまり変わってません。 そのくせレンダリングには倍時間がかかります。 3 : 環境マッピングとシェーディングを重ね描画します。 半分映り込んだようになり写実性は向上しますが、 レンダリングにはその分時間がかかります。 -- ■ glclock-4.01 から glclock-4.1 への変更点(1998/04/03) ○お薦め起動コマンドのスクリプト(Windows版はバッチファイル)を用意 マニュアルのお薦めオプションの項目も大きく変更しました。 作成したコマンドは以下の通りです。 基本的に 'f_' で始まるコマンドは、 ハードウェアアクセラレーションが効かない環境用です。 metalclock 金属質な時計 f_metalclock crystalclock クリスタルな時計 f_crystalclock woodclock テッカテカの木時計 f_woodclock marbleclock テッカテカの大理石時計 f_marbleclock skyclock うーん環境マップをソリッドにしたような妙な時計 f_skyclock benchclock 下記参照 ○ベンチマークモードを追加 benchclock というスクリプトで、一連のベンチマークテストを実行できます。 現段階では、いろいろな条件で実行し、 それぞれの平均のFPS(Frames Per Second)を出力するだけです。 結果は、bench.log というファイルに書き込まれます。 ○今まで書き忘れていたが(申し訳ありません。m(_ _)m)、 -ss[cale], -ts[cale] のデフォルトサイズを 41.0 に ○ -v[smooth] オプション追加 ○ -B[ENCH] オプション追加 ○追加したオプションの説明 -v[smooth] n 時計本体の緯度方向(?)のスムージングフラグ。 緯度方向に対するスムージング(法泉ベクトルを隣同士の ポリゴンから平均化して計算)の条件を次の中から指定します。 -1: 用意したパターンに従って(場所によってデータ化) スムージングを行います(デフォルト)。 0: スムージングを行いません。 1: 必ずスムージングを行います。 ※ -u[smooth] オプションも参照のこと。 -q 1 -v 1 -u 1(時計の形を単純にしてスムージング)などと指定すると、 グーローシェーディングによるハイライトの不具合が良く理解できます。 -B[ENCH] ベンチマークモード(?)で起動します。 マウスやキーボードによる操作はできなくなります。 ある程度経つと自動的に終了し、結果を標準出力に出力します。 現段階では、平均の FPS(Frames Per Second)を出力するだけです。 -- ■ glclock-4.0 から glclock-4.01 への変更点(1998/03/31) ○細部の修正(しっかし見て分かる奴はいねぇ!?) -- glclock-3.23 から glclock-4.0 への変更点(1998/03/12) ・-S[INGLE](シングルバッファモードで実行)オプション追加 ・-S[TOP] オプションは、-ST[OP] に変更 前までは、-S だけでこのオプションと認識していたが -ST まで指定が必要に ・-sf(ソリッドテクスチャ画像指定オプション)をコマンド中2回指定可能に 1回しか指定しない場合はこれまで通り(すべて同じ画像でマッピング) 2回指定すると、2回目に指定した画像は文字盤のテクスチャに使用 ※つまり、文字盤とそれ以外の部分で別のテクスチャが使用可能ということです。 ただし、現段階では、-r オプション指定時にしか有効になりません。 ・環境マップ(用のテクスチャ画像)"sky.ppm" に、計算した光源を追加、変更 実行時、環境テクスチャに用途別(ガラス、金属等)にガンマコレクションなどを 施し、-e や -r 指定時の環境マッピングをもっとリアルにした。 これにより、環境マッピングに対してはシェーディングが必要なくなったため、 -e, -r オプションの指定できるレベルを二段階に(引数の最大値を 2 に)変更。 ・ソリッドマッピング用テクスチャ画像 "wood.ppm" 修正 ・その他細部の修正 追加および修正オプションの説明 -S[INGLE] シングルバッファモードで実行します。 デフォルトではダブルバッファモードになります。 ※通常 OpenGL のダブルバッファモードは、ディスプレイの リフレッシュレートとシンクロしながら実行します。 通常の実行時はこれで良いのですが、ベンチマークを取る場合、 正確な測定をするためにはこのオプションを指定します。 -ST[OP] 時計は動きません(意味なし)(^^;; -sf[ile] s ソリッドマッピングに使用する画像ファイルを指定します。 デフォルトは付属の wood.ppm です。 -s または -r で 1 以上が指定されていなければなりません。 ※このオプションは、コマンドライン中最大2回指定できます。 2回指定すると、2回目に指定した画像は文字盤に使用されます。 つまり、文字盤とそれ以外で別のテクスチャを使用できます。 1回しか指定しなかった場合はどちらも同じテクスチャになります。 ただし、現段階では、-r オプション指定時にのみ有効です。 glclock -r 2 -sf marble … 全体を大理石のイメージで描画 glclock -r 2 -sf marble -sf wood … 文字盤だけは木目で描画 それ以外は大理石で描画 ※テクスチャマッピングに使用する画像ファイルは、 現在のところ ppm フォーマットしか対応していません。 拡張子 ".ppm" は省略できます。 -e[nv] n 環境マッピングを実行します。 n には、0〜2 までの値を指定します。 0 : デフォルト。環境マッピングを行なわずに 時計自身の素材でシェーディングします。 1 : テクスチャの色を、時計の色と光源0(-bgcolor参照)の色で 変調して描画します(鏡時計) 2 : 環境マッピングとシェーディングを重ね描画します。 半分映り込んだようになり写実性は向上しますが、 レンダリングにはその分時間がかかります。 -r[eal] n 写実性重視オプション。 ソリッドマッピングと環境マッピングを重ね合わせ、 テッカテカでリアルな時計を描画します。 -e や -s オプションとは次元が違うくらいかっこよくなります! しかし、OpenGL 対応のボードが無いとかなり遅いです。 n には 0〜2 を指定できます。 0 : デフォルト。オプションは無効です。 1 : ソリッドマッピングに環境マッピングを重ねます。 拡散シェーディングは行わないため、多少立体感に欠けます。 2 : ソリッドマッピングで拡散シェーディングし、 さらに環境マッピングでハイライトを表現します。 相当リアルになりますが、もっとも遅くなります。 ※全体的な素材は、ソリッドマッピングによります。 例えば -sf marble を同時に指定すると、リアルな大理石時計になります。 -- glclock-3.22 から glclock-3.23 への変更点(1998/02/25) ・いつのバージョンからか -a[nti] オプションが無効になっていたのを修正 ・2.92 で、FPS をより正確にしたとか言いながら全然正確じゃなかったのを修正 ・表面ガラスの種類によってリソースを喰らい続けていたバグを修正 実行後しばらく経つとメモリ不足になったりしていたのはこれです。 今回はバグの修正のみ。ご迷惑をおかけしました m(_ _)m -- glclock-3.21 から glclock-3.22 への変更点(1998/02/16) ・Windows版は、PERMEDIA2 のボードに対応(作者の環境では正常動作を確認) ・-u[smooth] オプション追加 -u[smooth] n 時計本体の経度方向(?)のスムージングフラグ。 経度方向に対するスムージング(法泉ベクトルを隣同士の ポリゴンから平均化して計算)の条件を次の中から指定します。 -1: 時計が12角形以上(-d オプション参照)の場合に スムージングを行います(デフォルト)。 0: スムージングを行いません。 1: 必ずスムージングを行います。 -q 1 -u 1 (時計の形を単純にしてスムージングを行う)などと指定すると、 グーローシェーディングによるハイライトの不具合が良く理解できます。 -- glclock-3.2 から glclock-3.21 への変更点(1998/02/14) ・Windows版は、RIVA128ボードの OpenGL βドライバに完全対応(多分) PERMEDIA2 は調整中 ・その他細かなバグの修正 -- glclock-3.1 から glclock-3.2 への変更点(1998/02/13) ・Windows版は、RIVA128ボードの OpenGL βドライバ用に暫定的に対応 具体的には -e, -s, -r, -C オプション指定時の描画を正常に ・スペキュラーの描画辺りを大幅に変更(速度重視に) それにより多少(本当に多少)速度が向上 ・マニュアルに、お薦め起動コマンド等の項目を追加 MANUAL.TXT 参照 -- glclock-3.0 から glclock-3.1 への変更点(1998/02/11) ・粗いメッシュ(オプション -me 0 または、-q 1〜3 指定)時に、 時計の底が角張っていたのと、 細かいメッシュ(デフォルト)時に形状が一部間違っていた(?)のを修正 ・-l[ight] オプションが、マニュアルと違い -li[ght] になっていたのを修正 ただし、バージョン 3.0 でも既に直っていたものもあります。 ・マニュアルの -C[RYSTAL] オプション関係を少々変更 ・その他細部の修正等 -C[RYSTAL] クリスタルな(?)時計を描画します。 半透明な環境マッピングが . . . 強引です(^^;; 具体的には、環境テクスチャのカラーによって 透明度を変化させながら描画します。 シェーディングは行いません。 また、本来ならソートする必要がありますが、 一切気にしていませんん。(^^;; -- glclock-2.93 から glclock-3.0 への変更点(1998/02/08) ・引数をとらないオプションを大文字指定に変更 これにより、いくつかのオプションの認識文字数が減少 ・-r[eal] オプションの仕様変更 ・-i[size] オプション追加 ・-R[EFLECT] オプション追加(前までの -r 2 に相当) ・プログラム全体を高速化(あんまし変わらんか . . .) ・ソリッドマッピング用イメージ "wood.ppm", "marble.ppm", "metal.ppm" を 少々加工 ・複数のテクスチャを使用する場合のテクスチャ切り替え処理の無駄を削減 最初にイメージをつなぎ合わせて、一枚のテクスチャに統合しています。 切り替え処理を省けるため、-r[eal] オプション指定時の速度が向上しました。 逆に副作用があります。 -r[eal] オプション指定時に -t[exscale], -ss[cale], -ts[cale] などの オプションで小さなサイズを与えると . . . 見れば分かります。(^^;; このため、これらのオプションのデフォルト値を 20.0 から 33.0 に 変更しました。拡大する分には問題ありません。 ・その他細部をごちゃごちゃと修正 #Windows版で、バージョン 2.91 からアイコンは実行ファイル(glclock)に #含まれているはずなのに、何故か IE-4.0 がないと見えない(?) #Windowsは良く分かんね。 -r[eal] n 写実性重視オプション。 ソリッドマッピングと環境マッピングを重ね合わせ、 テッカテカでリアルな時計を描画します。 -e や -s オプションとは次元が違うくらいかっこよくなります! しかし、OpenGL 対応のボードが無いとかなり遅いです。 n には 0〜3 を指定できます。 0 : デフォルト。オプションは無効です。 1 : ソリッドマッピングに環境マッピングを重ねます。 シェーディングは行わないため、立体感に欠けます。 2 : ソリッドマッピングで拡散シェーディングし、 環境マッピングでハイライトを表現します。 1 より遅くなりますが、立体感が出ます。 3 : ソリッドマッピングで拡散シェーディングし、 さらに環境マッピングもスペキュラーでシェーディングします。 相当綺麗ですが、もっとも遅くなります。 全体的な素材は、ソリッドマッピングによります。例えば、 -sf marble を同時に指定すると、リアルな大理石時計になります。 -i[size] n テクスチャとして設定する前にイメージをフィルタ処理しながら 縦横それぞれ 2 の n乗 サイズにスケーリングします。 ただし、負の数を指定すると、無条件にシステムがサポートする 最大サイズまで拡大します。 0(デフォルト)は、元の画像ファイルの大きさのまま利用します。 -i 8 と指定すると、256x256 にスケーリングします。 ハードウェアでのフィルタ処理を実装しない環境では、フィルタ処理を なくすと大幅に速度が向上します。しかし、画像サイズをよほど大きく しないとサンプリング不足によるジャギーやモアレが目立ちます。 そこで、あらかじめフィルタ処理を施しながらテクスチャのイメージを 拡大しておきます。これにより、擬似的にバイリニアフィルタリングを 施したような効果が得られます。それがこのオプションの目的です。 ※ただし、当然ながらサイズに比例して資源を使います。 ハードウェア非対応の環境でテクスチャマッピングを行う場合、 -q 1 -fi N -i -1 -l 1(各オプション項目参照)を 指定すると劣化も比較的少なく、ずいぶん速くなります。 ※このオプションは、テクスチャにバイリニアフィルタを施している場合、 つまり -fi L or LN or LL オプション指定時には意味がありません。 また、Mesa3D の gluScale()はフィルタ処理が行われないらしく、 効果はありません(現段階では、gluScale()でスケーリングしています)。 -R[EFLECT] 針や、変な球体、文字盤上のオブジェクトを 文字盤へ映り込ませます(細かいことは気にしない(^^;;)。 バージョン 2.93 までの -r 2 オプションに相当します。 ※現時点では、文字盤にしか映らない上に、 -r 2 または 3 指定時にしか正常に実行されません。 -- glclock-2.92 から glclock-2.93 への変更点(1998/02/05) ・文字盤への映り込みを少し綺麗に ・-go[ld] オプションについて、マニュアルを修正 ・その他細部の修正 -go[ld] n 時計の周囲に付いている金色の飾りの細かさを指定します。 金飾りは三角錘(四面体)を n 回分割して描画しています。 1回の処理で、構成する三角形を4枚に分割するため、 1つの飾りで 4 の n+1 乗枚のポリゴンを描画することになります。 n には、1 以上を指定します(デフォルトは 1)。 5 以上はやめた方が良いでしょう(^^;; ※前は、"4 の n 乗枚のポリゴン"となっていましたが、 "4 の n+1 乗枚のポリゴン"の間違いです。 -- glclock-2.91 から glclock-2.92 への変更点(1998/01/30) ・FPSの計算を正確に ・光源処理のおかしかった部分を修正 ・Windows版 glut32.dll を変更(何が違うんだ?でもサイズは遥かに小さい) ・オプションおよびマニュアル修正(前までの -s[pec]オプション) -sp[ecular] d 全体的なスペキュラー(ハイライト)の強さを指定します。 デフォルトは 1.0 です。 ※前までのオプションは、-s[pec] d となっていますが、 -s n だけでは -s[olid] n オプションと認識されてしまいます。 -f[ps] 標準出力に FPS を出力します。 2秒または60フレーム毎に FPS(フレーム/秒)を計算し、 FPS と、PPS(ポリゴン/秒)と、時計を構成している ポリゴン数(描画している枚数ではない)を標準出力に出力します。 実行中に'f'キーを押すと、いつでも出力を ON/OFF できます。 -- glclock-2.9 から glclock-2.91 への変更点(1998/01/28) ・Windows版の意味不明なバグを強制的に修正 それに伴いWindows版のみ -fi[lter] オプションに制限 ・Windows版はアイコン(ただし 32×32 256色のみ)を実行モジュールに付属 ・その他細部の修正(映り込みの手直しなど) -fi[lter] s テクスチャに適用する拡大・縮小フィルタを指定します。 OpenGL の GL_TEXTURE_MAG_FILTER および GL_TEXTURE_MIN_FILTER の設定で、次のいずれかを指定できます。 N : ポイントフィルタリング。 拡大・縮小双方を GL_NEAREST にします。 L : いわゆるバイリニアフィルタリング。 拡大・縮小双方を GL_LINEAR にします。 NN : ミップマップ。 拡大フィルタを GL_NEAREST に、 縮小フィルタを GL_NEAREST_MIPMAP_NEAREST にします。 NL : ミップマップのリニアフィルタリング。 拡大フィルタを GL_NEAREST に、 縮小フィルタを GL_NEAREST_MIPMAP_LINEAR にします。 LN : バイリニアフィルタリングおよびミップマップ。 拡大フィルタを GL_LINEAR に、 縮小フィルタを GL_LINEAR_MIPMAP_NEAREST にします。 LL : いわゆるトリリニアフィルタリング。 拡大フィルタを GL_LINEAR に、 縮小フィルタを GL_LINEAR_MIPMAP_LINEAR にします。 デフォルトは LL です。 OpenGL 用のハードウェアをもたない環境では、 N にするとかなり描画速度が向上します。 ※Windows版のみ、NN および LN フィルタは指定できません。 -- glclock-2.81 から glclock-2.9 への変更点(1998/01/27) ・文字盤への映り込み表現を追加 それに伴い -r[eal] オプションを引数付きに変更 ・テクスチャ関係のバグフィックス ・ソリッドテクスチャ用画像 "metal.ppm" のサイズ変更 ・その他細部の修正 -r[eal] n 写実性超超超!重視オプション。 テッカテカで超リアルな時計を描画します。 -e や -s オプションとは次元が違うくらいかっこよくなります! n には現在のところ 0〜2 を指定できます。 0 : デフォルト。オプションは無効です。 1 : ソリッドマッピングに環境マッピングをあわせ、 リアルなハイライトをもつ時計を描画します。 2 : さらに、文字盤上への針などの映り込みを表現します。 現在は映り込みは文字盤に対してだけです。 全体的な素材は、ソリッドマッピングによります。例えば、 -sf marble を同時に指定すると、リアルな大理石時計になります。 -- glclock-2.8 から glclock-2.81 への変更点(1998/01/25) ・-sscale, -tscale, -texscale オプションの追加 ・-real オプション時の鏡面反射の仕方を多少変更 同じく金飾りのハイライトの色調を金色に ・その他細部の修正 -ss[ize] d ソリッドテクスチャ実行時(-s または -r オプション)の テクスチャの S 座標方向のスケールを変更します。 デフォルトは 20.0 です。 -ts[ize] d ソリッドテクスチャ実行時(-s または -r オプション)の テクスチャの T 座標方向のスケールを変更します。 デフォルトは 20.0 です。 -t[exscale] d ソリッドテクスチャ実行時(-s または -r オプション)の テクスチャの S,T 両方に同じ値を指定します。 -- glclock-2.71 から glclock-2.8 への変更点(1998/01/22) ・ソリッドテクスチャ用サンプル画像 "metal.ppm" を追加 ・-real オプションの追加 ・その他細部の修正 -r[eal] 写実性超超超!重視オプション。 ソリッドマッピングに環境マッピングを加算描画し、 テッカテカで超リアルな時計を描画します。 -e や -s オプションとは次元が違うくらいかっこよくなります。 全体的な素材は、ソリッドマッピングによります。例えば、 -sf marble を同時に指定すると、リアルな大理石時計になります。 -- glclock-2.7 から glclock-2.71 への変更点 ・-pers オプションの追加 -p[ers] s OpenGL に、パースペクティブコレクションのヒントを設定します。 OpenGL の動作環境によって解釈のされ方は異なるため、 必ずしも設定した通りにはなりません。 F : GL_FASTEST : 最も効率の良いオプションを選択。 N : GL_NICEST : 最も正確、または最高品質のオプションを選択。 それ以外 : GL_DONT_CARE : 選択なし(デフォルト)。