<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-sjis">
<TITLE>IShadowMap - Indexed Shadow Mapping -</TITLE></HEAD>
<BODY BACKGROUND="../Image/Back2.GIF"
        TEXT="#E0E0E0"
        BGCOLOR="#191919"
        LINK="#FF9090"
        VLINK="#E06060"
        ALINK="#FF0000">


<CENTER><IMG SRC="Image/ishadowmap.jpg" WIDTH="256" HEIGHT="309" ALIGN="RIGHT"></CENTER>
<BR>

<FONT LANG="JA" SIZE=7 COLOR="#EEEEA0"><I><B><CENTER>IShadowMap</CENTER>
</B></I></FONT>
<BR>
<FONT LANG="JA" SIZE=5><B><CENTER>- Indexed Shadow Mapping Demo -</CENTER></B></FONT>

<BR>
<FONT LANG="JA" SIZE=6><CENTER>version 1.2 is now available!</CENTER></FONT>
<P>

<BASEFONT SIZE="3">

<CENTER>
<FONT SIZE="3" COLOR="#99AAEE"><BR>
<A HREF="../cgi-bin/DayX/ishadowmap/dayxmgr.cgi">
<img src="../cgi-bin/DayX/ishadowmap/dayx.cgi?gif" BORDER ="0" WIDTH="120" HEIGHT="27">
</A>
<BR>
<FONT SIZE="3" COLOR="#99AAEE">
Counting Since 2000.08.29</FONT><BR>
Today <img src="../cgi-bin/DayX/ishadowmap/dayx.cgi?today" WIDTH="40" HEIGHT="13">
　Yesterday <img src="../cgi-bin/DayX/ishadowmap/dayx.cgi?yes" WIDTH="40" HEIGHT="13">
<BR>
</FONT>
</CENTER>


<BR>
<CENTER>

1.1 からの主な変更点
<P>

<TABLE>
<TR>
<TD><IMG SRC="../Image/GoldButton.gif" BORDER="0" WIDTH="6" HEIGHT="6"></TD>
<TD><FONT SIZE="2" COLOR="#FFFFA0">Anisotropic Filtering（異方性フィルタ）サポート</FONT></TD>
</TR>
<TR>
<TD><IMG SRC="../Image/GoldButton.gif" BORDER="0" WIDTH="6" HEIGHT="6"></TD>
<TD><FONT SIZE="2" COLOR="#FFFFA0">ソースコードも公開（スパゲッティな無駄の多いコードですが）</FONT></TD>
</TR>
</TABLE>

</CENTER>

<P>

<FONT SIZE="3" COLOR="#EEEEA0">
English docment is
<A HREF="./Text/ReadMe.txt">here.</A>
</FONT>

<P>

<CENTER>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="12" HEIGHT="12">
<A HREF="#System"><B><I><FONT SIZE="+0" COLOR="#99AAEE">System Requirements</FONT></I></B></A>
<WBR>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="12" HEIGHT="12">
<A HREF="#Download"><B><I><FONT SIZE="+0" COLOR="#99AAEE">Download !!</FONT></I></B></A>
<WBR>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="12" HEIGHT="12">
<A HREF="#TroubleShoot"><B><I><FONT SIZE="+0" COLOR="#99AAEE">Trouble Shooting</FONT></I></B></A>
</CENTER>

<HR>
<P>

<TABLE>
<TR>
<TD>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="24" HEIGHT="24">
</TD>
<TD>
<B><I>
<FONT SIZE="5" COLOR="#99AAEE">
What is IShadowMap ?
</FONT>
</I></B>
</TD>
</TR>
</TABLE>

<BLOCKQUOTE>

<P>
<A HREF="http://www.opengl.org"><FONT SIZE="4"><B><I>OpenGL</I></B></FONT></A>
で作成した
<FONT COLOR="A0FFA0" SIZE="3"><B><I>シャドウマッピング（Shadow Mapping）</I></B></FONT>
のデモサンプルです。
<WBR>
が、それだけでは面白味に欠けるため、

<FONT COLOR="A0FFA0" SIZE="3"><B>
<UL>
<LI>大気効果（Atmospheric Effect）というかボリュームライト？
<LI>床への映りこみ（Reflection）
<LI>フレネル効果（Fresnel Effect）
<LI>光沢マッピング（Gloss Mapping）
</UL>
</B></FONT>

などのエフェクトを行っています。
<P>
なお、このデモは
<A HREF="http://www.nvidia.com/Developer"><FONT SIZE="3"><B><I>
NVIDIA Deveroper サイト
</I></B></FONT></A>
の
<A HREF="http://www.nvidia.com/marketing/developer/devrel.nsf/TechnicalDemosFrame?OpenPage"><FONT SIZE="3"><B><I>
テクニカルデモ
</I></B></FONT></A>
に採用されました。

</BLOCKQUOTE>

<TABLE>
<TR>
<TD>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="24" HEIGHT="24">
</TD>
<TD>
<B><I>
<FONT SIZE="5" COLOR="#99AAEE">
Screen Shots !
</FONT>
</I></B>
</TD>
</TR>
</TABLE>

<BLOCKQUOTE>

<A HREF="./Image/ishadowmap_shot_00.jpg"><IMG SRC="./Image/ishadowmap_shot_00_s.jpg" BORDER="2" WIDTH="256" HEIGHT="264"></A>
<A HREF="./Image/ishadowmap_shot_01.jpg"><IMG SRC="./Image/ishadowmap_shot_01_s.jpg" BORDER="2" WIDTH="256" HEIGHT="264"></A>
<A HREF="./Image/ishadowmap_shot_02.jpg"><IMG SRC="./Image/ishadowmap_shot_02_s.jpg" BORDER="2" WIDTH="256" HEIGHT="264"></A>
<A HREF="./Image/ishadowmap_shot_03.jpg"><IMG SRC="./Image/ishadowmap_shot_03_s.jpg" BORDER="2" WIDTH="256" HEIGHT="264"></A>

</BLOCKQUOTE>


<A NAME="System">

<TABLE>
<TR>
<TD>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="24" HEIGHT="24">
</TD>
<TD>
<B><I>
<FONT SIZE="5" COLOR="#99AAEE">
System Requirements
</FONT>
</I></B>
</TD>
</TR>
</TABLE>

<BLOCKQUOTE>

<FONT COLOR="A0FFA0" SIZE="3"><B>
<UL>
<LI>Intel 80x86 系 CPU を搭載した DOS/V AT 互換機
<LI>Microsoft Windows 95/98/NT4/2000
<LI>OpenGL-1.1 以降に対応し
<UL>
<LI>GL_ARB_multitexture
<LI>GL_EXT_multitexture
<LI>GL_SGIS_multitexture
</UL>
のいずれかの拡張機能をサポート
</UL>
</B></FONT>
が基本的な動作条件です。
<WBR>
が、これだけでは肝心のシャドウマッピングとグロスマッピングが有効になりません。
これらのエフェクトの実行には、OpenGL が
<FONT COLOR="A0FFA0" SIZE="3"><B>
<UL>
<LI>４ビット以上のαプレーン
<LI>GL_EXT_texture_env_combine
</UL>
</B></FONT>
をサポートしている必要があります。
<WBR>
環境によって微妙に変化するような機能を使っているため、
これらをすべて実装している環境でも動くとは限りません。
<WBR>

正しい動作と充分な速度が出ることを確認した環境は
<FONT COLOR="A0FFA0" SIZE="3"><B><I>
nVIDIA GeForce 256 reference driver 5.x 以降
</I></B></FONT>
だけです。
<FONT COLOR="A0FFA0" SIZE="3"><B><I>GeForce2 GTS</I></B></FONT>
もおそらく大丈夫でしょう。
<WBR>
<FONT COLOR="A0FFA0" SIZE="3"><B><I>nVIDIA Riva TNT</I></B></FONT>
シリーズでは点光源の投影にバグが出るため、デフォルトで平行光源で起動します。
が、基本的には
<FONT COLOR="A0FFA0" SIZE="3"><B><I>GeForce</I></B></FONT>
シリーズ専用と考えてください（ぉぃぉぃ
<P>
<FONT COLOR="A0FFA0" SIZE="3"><B><I>Riva TNT</I></B></FONT>
シリーズで実行する場合、
<FONT COLOR="A0FFA0" SIZE="3"><B><I>nVIDIA reference driver 6.x</I></B></FONT>
以降、
<FONT COLOR="A0FFA0" SIZE="3"><B><I>GeForce</I></B></FONT>
シリーズで実行する場合は
<FONT COLOR="A0FFA0" SIZE="3"><B><I>nVIDIA reference driver 5.x</I></B></FONT>
以降のドライバを使わないと極端に遅くなります。

</BLOCKQUOTE>


<TABLE>
<TR>
<TD>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="24" HEIGHT="24">
</TD>
<TD>
<B><I>
<FONT SIZE="5" COLOR="#99AAEE">
Install
</FONT>
</I></B>
</TD>
</TR>
</TABLE>

<BLOCKQUOTE>

アーカイブを適当な場所に展開し、
<FONT COLOR="A0FFA0" SIZE="3"><B><I>ishadowmap.exe</I></B></FONT>
を実行するだけです。
<WBR>
実行中
<FONT COLOR="A0FFA0" SIZE="4"><B><I>'h'</I></B></FONT>
キーでコントロールのヘルプが出ます。
適当に操作して遊んでみてください。
<WBR>
できるだけ
<FONT COLOR="A0FFA0" SIZE="3"><B><I>32 bits</I></B></FONT>
カラーモードで実行することをお勧めします。

<P>
アンインストールは、展開したファイルを削除するだけで OK です。
</BLOCKQUOTE>


<A NAME="Download">

<TABLE>
<TR>
<TD>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="24" HEIGHT="24">
</TD>
<TD>
<B><I>
<FONT SIZE="5" COLOR="#99AAEE">
Download !!
</FONT>
</I></B>
</TD>
</TR>
</TABLE>

<BLOCKQUOTE>

<TABLE>
<TR>
<TD><A HREF="../archives/ishadowmap-1.2.zip"><FONT SIZE="4"><B><I>ishadowmap-1.2.zip (510KB)</I></B></FONT></A></TD>
<TD> Executable for Windows 95/98/NT/2000</TD>
</TR>
<TR>
<TD><A HREF="../archives/ishadowmap-1.2_src.zip"><FONT SIZE="4"><B><I>ishadowmap-1.2_src.zip (591KB)</I></B></FONT></A></TD>
<TD> Source code (Visual C++ 6.0 project)</TD>
</TR>
</TABLE>

</BLOCKQUOTE>


<TABLE>
<TR>
<TD>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="24" HEIGHT="24">
</TD>
<TD>
<B><I>
<FONT SIZE="5" COLOR="#99AAEE">
Techniques
</FONT>
</I></B>
</TD>
</TR>
</TABLE>

<BLOCKQUOTE>

通常、シャドウマップは光源からの距離をレンダリングして
テクスチャのα値として保存しておきます。
実際の描画時にフラグメントの光源からの距離を計算し、
これを、プロジェクションマッピングしたシャドウマップのα値と
比較することで影か否かを判定します。
<WBR>
が、このサンプルでは距離情報は一切使わず、
代わりに凸面体単位で固有のＩＤをシャドウマップの
αチャネルにレンダリングしています。
実際の描画時には同じＩＤをα値として与え、
それがプロジェクションマッピングしたシャドウマップの
α値と一致したピクセルのみが光源から直接光を受けているとみなし、
ライティングを行います。
<WBR>
これにより、
<FONT COLOR="A0FFA0" SIZE="3"><B>
<UL>
<LI>深度の精度不足（αチャネルのビット深度に依存）
<LI>距離比較のためだけにテクスチャが２枚必要
</UL>
</B></FONT>
といったシャドウマッピングの弱点を解消できます。
<WBR>
逆にデメリットとして、
<FONT COLOR="A0FFA0" SIZE="3"><B>
<UL>
<LI>凸面体をαチャネルの精度で表現できる数しか描画できない
<LI>凹面体は凸面毎に別のα値を与える必要があるため面倒
<LI>凹面体はシャドウテクスチャのサイズをかなり大きくしないと継ぎ目が目立つ
</UL>
</B></FONT>
といった点が挙げられます。

<WBR>
ついでにα値の一致判定はおそらく環境依存し易いです。
とりあえずは GeForce に最適化しましたが、
他の環境ではおかしな結果になる可能性が高いと思われます（ぅ

</BLOCKQUOTE>


<A NAME="TroubleShoot">

<TABLE>
<TR>
<TD>
<IMG SRC="../Image/CyanButton.gif" BORDER="0" WIDTH="24" HEIGHT="24">
</TD>
<TD>
<B><I>
<FONT SIZE="5" COLOR="#99AAEE">
Trouble Shooting
</FONT>
</I></B>
</TD>
</TR>
</TABLE>

<BLOCKQUOTE>

描画がおかしくなってうまく影が表示されない場合は、
<FONT COLOR="A0FFA0" SIZE="4"><B><I>'a' / 'A'</I></B></FONT>
キーでα値の参照バイアスを増加／減少させたり、
<FONT COLOR="A0FFA0" SIZE="4"><B><I>'t'</I></B></FONT>
キーでシャドウマッピング時のテクスチャフィルタを切り替えてみてください。

</BLOCKQUOTE>

<P>
<!-- Signature -->
<FONT SIZE="3">

<HR>
<!--
<CENTER>
<IMG SRC="../Image/Bar2.gif" ALT "-------------------------------------------" width=90% height="16">
</CENTER>
-->

        <TABLE>
        <TR>
        <TD>
        <A HREF="../index.html"><IMG SRC="../Image/MasaPlate.gif" BORDER="0" WIDTH="112" HEIGHT="48"></A>
        </TD>
        <TD><A HREF="../index.html">ホームページに戻る</A></TD>
        </TR>
        </TABLE>

        本ページの御意見・御感想は<BR>
<B>
<ADDRESS>
        <A HREF="mailto:masa@daionet.gr.jp">
                <I>E-Mail: masa@daionet.gr.jp</I></A>
</ADDRESS>
</B>

</FONT>
<!-- Signature -->

</BODY>
</HTML>
