Post on 18-Jan-2020
�������� OpenGL ������������������������
���������������� ���� ���� ���� ����
CEDEC 2001Tokyo, Japan
�������� OpenGL ������������������������
���������������� ���� ���� ���� ����
CEDEC 2001Tokyo, Japan
3
���������� �������������� �������������� �������������� ����
• ����������� �������������� �������������� �������������� ���
• ������������������������������������ (����) �� �� �� ��
• ����������������������������������������������������������������
• ��� !��"#$%��� !��"#$%��� !��"#$%��� !��"#$%
• &'()�*�"#$%&'()�*�"#$%&'()�*�"#$%&'()�*�"#$%
• +�,-�./0����12 34�567+�,-�./0����12 34�567+�,-�./0����12 34�567+�,-�./0����12 34�567����
• 898:;<=>������?@AB�)�898:;<=>������?@AB�)�898:;<=>������?@AB�)�898:;<=>������?@AB�)���CD567)7��CD567)7��CD567)7��CD567)7
4
����������������������������������������������������������������
��������
��������������������������������
��������������������������������
���������������� �� �� �� �� �� �� �� ��
��������������������������������
��������������������������������
������������������������������������������������ ��������
��������������������������������
5
���������������������������������� !������ !������ !������ !
• ����������������������������
• ��� ����� ����� ����� ��
• ����������������� !"#����������������� !"#����������������� !"#����������������� !"#
• �$%�&�$%�&�$%�&�$%�&� ��� ��� ��� ��'()�*'()�*'()�*'()�*
• � ��� ��� ��� ��'()�*+,-./��01�23'()�*+,-./��01�23'()�*+,-./��01�23'()�*+,-./��01�23
• �4��4��4��4�5�65�65�65�6
• 78� ���� 9:!;<78� ���� 9:!;<78� ���� 9:!;<78� ���� 9:!;<
• =>�?�@+AB��C#�� ��DE+FGH/=>�?�@+AB��C#�� ��DE+FGH/=>�?�@+AB��C#�� ��DE+FGH/=>�?�@+AB��C#�� ��DE+FGH/��1����1����1����1��
6
"#$%&������'()"#$%&������'()"#$%&������'()"#$%&������'() : ������������*�+,-*�+,-*�+,-*�+,-
• ���������� ���������� ���������� ����������
• Lance Williams ���� 1978 ��������������������������������������������������������
• �������������������������������� Jim Blinn� !"� !"� !"� !"#$%!&��'#$%!&��'#$%!&��'#$%!&��' (&()�$*+�,-./01��&()�$*+�,-./01��&()�$*+�,-./01��&()�$*+�,-./01��)
• 23�������4��56789:/23�������4��56789:/23�������4��56789:/23�������4��56789:/
• ��!��;�<7�,=>?@�AB:CDE:��!��;�<7�,=>?@�AB:CDE:��!��;�<7�,=>?@�AB:CDE:��!��;�<7�,=>?@�AB:CDE:
• F�7��!&GH�IBF�7��!&GH�IBF�7��!&GH�IBF�7��!&GH�IB
• JKLMN.C>O)<�P�JKLMN.C>O)<�P�JKLMN.C>O)<�P�JKLMN.C>O)<�P�Q!R7!&Q!R7!&Q!R7!&Q!R7!&S*T$*S*T$*S*T$*S*T$*
• Pixar���� RenderMan/E��56789�UV/E��56789�UV/E��56789�UV/E��56789�UV
• Toy Story �WXUYNZ�������!&�WXUYNZ�������!&�WXUYNZ�������!&�WXUYNZ�������!&S*TS*TS*TS*T$*$*$*$*
7
������������*�+,-�./01*�+,-�./01*�+,-�./01*�+,-�./01
• EF)EF)EF)EF) SIGGRAPH GHGHGHGH• Lance Williams, “Casting Curved Shadows on
Curved Surfaces,” SIGGRAPH 78• William Reeves, David Salesin, and Robert Cook
(Pixar), “Rendering antialiased shadows with depth maps,” SIGGRAPH 87
• Mark Segal, et. al. (SGI), “Fast Shadows and Lighting Effects Using Texture Mapping,”SIGGRAPH 92
8
������������*�+,-�23*�+,-�23*�+,-�23*�+,-�23 (1)
• �I��JK9��LMNO��I��JK9��LMNO��I��JK9��LMNO��I��JK9��LMNO�
• 2 ��������������������������������
• �� ��������������������� ��������������������� ��������������������� �������������������
����
• !" !" !" !" “��#�$��#�$��#�$��#�$”%"%"%"%" “&'()&'()&'()&'()#�$#�$#�$#�$”• *+,-"�./0-1234567�����8*+,-"�./0-1234567�����8*+,-"�./0-1234567�����8*+,-"�./0-1234567�����8
9999 2D :;:;:;:;• <���#�$�<���#�$�<���#�$�<���#�$� 2 =>����?@=>����?@=>����?@=>����?@
9
������������*�+,-�23*�+,-�23*�+,-�23*�+,-�23 (2)
• LM� P�CQ8R���STLM� P�CQ8R���STLM� P�CQ8R���STLM� P�CQ8R���ST
• A-�BC�������&���������A-�BC�������&���������A-�BC�������&���������A-�BC�������&���������
• .�DEF%G�.�H�0-I4J.�DEF%G�.�H�0-I4J.�DEF%G�.�H�0-I4J.�DEF%G�.�H�0-I4J :• ./0-KFJLK,M�.�H�0�./0-KFJLK,M�.�H�0�./0-KFJLK,M�.�H�0�./0-KFJLK,M�.�H�0� XYZ NONONONO�PQ�PQ�PQ�PQ
• <�./0�NO"���#�$�RS-?TU%<�./0�NO"���#�$�RS-?TU%<�./0�NO"���#�$�RS-?TU%<�./0�NO"���#�$�RS-?TU%
VWXYZ9[\]-^Q9[_`ab[VWXYZ9[\]-^Q9[_`ab[VWXYZ9[\]-^Q9[_`ab[VWXYZ9[\]-^Q9[_`ab[
• ��#�$�./0�NO��#�$�./0�NO��#�$�./0�NO��#�$�./0�NO XY -b[���cX�-b[���cX�-b[���cX�-b[���cX�
.�H�0�./0�NO.�H�0�./0�NO.�H�0�./0�NO.�H�0�./0�NO Z �de�de�de�de
10
������������*�+,-�23*�+,-�23*�+,-�23*�+,-�23 (3)
• ��������� PUV� PUV� PUV� PUV
• 2 I�I�I�I�cccc• A = )(&�!<�(�<�[\)(&�!<�(�<�[\)(&�!<�(�<�[\)(&�!<�(�<�[\ XY �]^>_`#$"��]^>_`#$"��]^>_`#$"��]^>_`#$"�
Z aaaa• B = )(&�!<�(�<�[\)(&�!<�(�<�[\)(&�!<�(�<�[\)(&�!<�(�<�[\ XYZ ���� Z aaaa
• B aaaa A \fgh4ij"��.�H�0\f2� -3\fgh4ij"��.�H�0\f2� -3\fgh4ij"��.�H�0\f2� -3\fgh4ij"��.�H�0\f2� -3
4X<k-l�ab[4X<k-l�ab[4X<k-l�ab[4X<k-l�ab[
• E�bcd)(&�!<�����>E�bcd)(&�!<�����>E�bcd)(&�!<�����>E�bcd)(&�!<�����>
• A XXXX B amnoF4ij��.�H�0"&'()-MamnoF4ij��.�H�0"&'()-MamnoF4ij��.�H�0"&'()-MamnoF4ij��.�H�0"&'()-M
�M4�M4�M4�M4
11
2D �+�4�5678�+�4�5678�+�4�5678�+�4�5678
������������*�+,-*�+,-*�+,-*�+,- (1)
ef
gh
_`#$" Z = A
)(&�!<
�(�< Z = B
_`#$"����ij
ghkM�lm��
����ijdn>
C/)Q�9 $)
o
W�XY�� ���)�W�XY�� ���)�W�XY�� ���)�W�XY�� ���)� A < B �Z[�Z[�Z[�Z[
12
2D �+�4�5678�+�4�5678�+�4�5678�+�4�5678
������������*�+,-*�+,-*�+,-*�+,- (2)
ef
gh
_`#$" Z = A
)(&�!<
�(�< Z = B
_`#$"����ij
ghkM�lm��
����ijdn>
C/)Q�9 $)
o
W�XY�� ���)�)7W�XY�� ���)�)7W�XY�� ���)�)7W�XY�� ���)�)7 A ≅≅≅≅ B �Z[�Z[�Z[�Z[W�XY�� ���)�)7W�XY�� ���)�)7W�XY�� ���)�)7W�XY�� ���)�)7 A ≅≅≅≅ B �Z[�Z[�Z[�Z[
13
IY�\]M�&^_�`aIY�\]M�&^_�`aIY�\]M�&^_�`aIY�\]M�&^_�`a !IY�\]M�&^_�`aIY�\]M�&^_�`aIY�\]M�&^_�`aIY�\]M�&^_�`a !
����������������
���� ����� �
����������������
������
����������������
�� �!"�#�� �!"�#
$%�� ���$%�� ���
2D �+�4�5678�+�4�5678�+�4�5678�+�4�5678
������������*�+,-*�+,-*�+,-*�+,- (3)
14
������������*�+,-*�+,-*�+,-*�+,-������������������������
9:;9:;9:;9:; (1)
• ���CbR9)cde)������CbR9)cde)������CbR9)cde)������CbR9)cde)���
������������������������
15
������������*�+,-*�+,-*�+,-*�+,-������������������������
9:;9:;9:;9:; (2)
• ���CbR���<CD)7����UV���CbR���<CD)7����UV���CbR���<CD)7����UV���CbR���<CD)7����UV
���������������������������������������� ����������������������������������������
16
������������*�+,-*�+,-*�+,-*�+,-������������������������
9:;9:;9:;9:; (3)
• �I��fg�9�hR����I��fg�9�hR����I��fg�9�hR����I��fg�9�hR���
� � � � � � � � : : ��������������������������������
��������������������������������������������������������
��������
17
������������*�+,-*�+,-*�+,-*�+,-������������������������
9:;9:;9:;9:; (4)
• �I��fg�9�hRLMi Wj�I��fg�9�hRLMi Wj�I��fg�9�hRLMi Wj�I��fg�9�hRLMi Wj
� � � � � � � � : : ������������������������
������������������������������������������������
����������������������������������������
18
������������*�+,-*�+,-*�+,-*�+,-������������������������
9:;9:;9:;9:; (5)
• JK�fg��LM� P�k�JK�fg��LM� P�k�JK�fg��LM� P�k�JK�fg��LM� P�k�
� � � � � � � � : : ������������������������
������������������������������������������������
������������������������������������������������
��������
19
������������*�+,-*�+,-*�+,-*�+,- ������������������������
9:;9:;9:;9:; (6)
• �I��lmno�JK�fg��k��I��lmno�JK�fg��k��I��lmno�JK�fg��k��I��lmno�JK�fg��k�
20
������������*�+,-*�+,-*�+,-*�+,-������������������������
9:;9:;9:;9:; (6)
• �I��no<�I��LM� P�UV�I��no<�I��LM� P�UV�I��no<�I��LM� P�UV�I��no<�I��LM� P�UV
������������������������������������������������
��������������������������������
� ���� ���� ���� ���� ���� ���� ���� ���
������������������������������������������������
������������������������������������������������
������������������������������������������������
������������������������������������������������
!"�� !"�� !"�� !"�� !"�� !"�� !"�� !"��
21
������������*�+,-*�+,-*�+,-*�+,-������������������������
9:;9:;9:;9:; (7)
• ���CbR������CbR������CbR������CbR���
���� #$���� #$���� #$���� #$���� #$���� #$���� #$���� #$
%&�%&�%&�%&�%&�%&�%&�%&� '��'��'��'��'��'��'��'��
��()"*��()"*��()"*��()"*��()"*��()"*��()"*��()"*
��!�+ ,��!�+ ,��!�+ ,��!�+ ,��!�+ ,��!�+ ,��!�+ ,��!�+ ,
--------
.��/� .��/� .��/� .��/� .��/� .��/� .��/� .��/�
����01����01����01����01����01����01����01����01
��2�"+��2�"+��2�"+��2�"+��2�"+��2�"+��2�"+��2�"+
,- ,- ,- ,- ,- ,- ,- ,-
22
<�=<�=<�=<�=>?@A�*�B�CD>?@A�*�B�CD>?@A�*�B�CD>?@A�*�B�CD
• pG��q0��pG��q0��pG��q0��pG��q0��
• ��#�$�RS��#�$�RS��#�$�RS��#�$�RS
• pq�r�()s��������?@pq�r�()s��������?@pq�r�()s��������?@pq�r�()s��������?@
• glPolygonOffset�?@FJ��c�t�7�0�?@FJ��c�t�7�0�?@FJ��c�t�7�0�?@FJ��c�t�7�0
FJu9FJu9FJu9FJu9
• �������vw�xyu9�������vw�xyu9�������vw�xyu9�������vw�xyu9
• ��#�$"��#�$"��#�$"��#�$" 2D z6�{'-|5�}~z6�{'-|5�}~z6�{'-|5�}~z6�{'-|5�}~
• ��Ma����c-"�z6�{'�Y�,-��Ma����c-"�z6�{'�Y�,-��Ma����c-"�z6�{'�Y�,-��Ma����c-"�z6�{'�Y�,-
?TU[?TU[?TU[?TU[ 8 ��0\f2�4��a`��U[<��0\f2�4��a`��U[<��0\f2�4��a`��U[<��0\f2�4��a`��U[<
Xa�4Xa�4Xa�4Xa�4
• �����"�������"�������"�������"�� 16 ��0%"��0%"��0%"��0%" 24 ��0��0��0��0
23
������������*�BCDEF*�BCDEF*�BCDEF*�BCDEF
glPolygonOffset'GHI���'GHI���'GHI���'GHI���
• LMi Wj��LMi Wj��LMi Wj��LMi Wj�� “�r��st�r��st�r��st�r��st”�LM2 uv�LM2 uv�LM2 uv�LM2 uv
• ����6z������X"���������9[����6z������X"���������9[����6z������X"���������9[����6z������X"���������9[
• glPolygonOffset")��()��t�7�0�b[<")��()��t�7�0�b[<")��()��t�7�0�b[<")��()��t�7�0�b[<
Xa���UJ4[Xa���UJ4[Xa���UJ4[Xa���UJ4[
• “!A Pst!A Pst!A Pst!A Pst” glTranslatef��w0�&xy��w0�&xy��w0�&xy��w0�&xy
• &'()&'()&'()&'()#�5������\�b[��4#�5������\�b[��4#�5������\�b[��4#�5������\�b[��4
• ���������������������������0�� ��/��"VW-\¡J���0�� ��/��"VW-\¡J���0�� ��/��"VW-\¡J���0�� ��/��"VW-\¡J
¢E¢E¢E¢E
• £����¤¥�¦�-§U[¨©aM4£����¤¥�¦�-§U[¨©aM4£����¤¥�¦�-§U[¨©aM4£����¤¥�¦�-§U[¨©aM4
24
+�J�KL5�M�N,�A�+�J�KL5�M�N,�A�+�J�KL5�M�N,�A�+�J�KL5�M�N,�A�
�O,B�,-�O,B�,-�O,B�,-�O,B�,- (1)
• z!{��|i�#�}A~�z!{��|i�#�}A~�z!{��|i�#�}A~�z!{��|i�#�}A~� (2D)
X
Z
567��ª«567��ª«567��ª«567��ª«
£���£���£���£���
25
+�J�KL5�M�N,�A�+�J�KL5�M�N,�A�+�J�KL5�M�N,�A�+�J�KL5�M�N,�A�
�O,B�,-�O,B�,-�O,B�,-�O,B�,- (2)
X
Z
X
Z
• z!{��|i�#�}A~���8�z!{��|i�#�}A~���8�z!{��|i�#�}A~���8�z!{��|i�#�}A~���8� 2 �XA �XA �XA �XA ������������ (2D)
26
+�J�KL5�M�N,�A�+�J�KL5�M�N,�A�+�J�KL5�M�N,�A�+�J�KL5�M�N,�A�
�O,B�,-�O,B�,-�O,B�,-�O,B�,- (3)
• X ��86���)��86���)��86���)��86���) Z ������������
X
Z∂∂∂∂z/∂∂∂∂x
27
glPolygonOffset�PQRS����PQRS����PQRS����PQRS���
• z!{���� ��XA 0���PA�X�5z!{���� ��XA 0���PA�X�5z!{���� ��XA 0���PA�X�5z!{���� ��XA 0���PA�X�5
�Z[�Z[�Z[�Z[
• %X¬&'()%X¬&'()%X¬&'()%X¬&'()#�$#�$#�$#�$z6�{'����(M®z6�{'����(M®z6�{'����(M®z6�{'����(M®
• ���PA�X�5RLM�:R<�����PA�X�5RLM�:R<�����PA�X�5RLM�:R<�����PA�X�5RLM�:R<��+/-0.5 ∂∂∂∂z/∂∂∂∂x ������������ +/-0.5 ∂∂∂∂z/∂∂∂∂y @�o567�@�o567�@�o567�@�o567�
• ��������������������������������
| 0.5 ∂∂∂∂z/∂∂∂∂x | + | 0.5 ∂∂∂∂z/∂∂∂∂y | ≈≈≈≈ max( | ∂∂∂∂z/∂∂∂∂x | , | ∂∂∂∂z/∂∂∂∂y | )• 2 I�I�I�I����(�567����(�567����(�567����(�567���0$��0��0$��0��0$��0��0$��0¯��da¯��da¯��da¯��da
1.0 �b[X°Q�b[X°Q�b[X°Q�b[X°Q
• ±]�M4ij"�¯��d���²����a_`±]�M4ij"�¯��d���²����a_`±]�M4ij"�¯��d���²����a_`±]�M4ij"�¯��d���²����a_`
• }A~�}A~�}A~�}A~��W{ ���W{ ���W{ ���W{ �� “��������”LMiIBO����LMiIBO����LMiIBO����LMiIBO����
���#��9���#��9���#��9���#��9
28
A�*�BA�*�BA�*�BA�*�BT��U� !T��U� !T��U� !T��U� !
• }A~�}A~�}A~�}A~��W{ ��W{ ��W{ ��W{ � iIBO�����^T0)7iIBO�����^T0)7iIBO�����^T0)7iIBO�����^T0)7
������������������������������������������������������������������������
!"�����# !"�����# !"�����# !"�����# !"�����# !"�����# !"�����# !"�����#
�� �� �� �� �� �� �� ��
�����$%�������$%�������$%�������$%�������$%�������$%�������$%�������$%��
!"�����& !"�����& !"�����& !"�����& !"�����& !"�����& !"�����& !"�����&
'()*+�� '()*+�� '()*+�� '()*+�� '()*+�� '()*+�� '()*+�� '()*+��
,-,-,-,-,-,-,-,-
29
A�*�BA�*�BA�*�BA�*�BT��U�VWT��U�VWT��U�VWT��U�VW
• �5;>�8��)7�5;>�8��)7�5;>�8��)7�5;>�8��)7
• ��"³´��f�]�µ~9[��"³´��f�]�µ~9[��"³´��f�]�µ~9[��"³´��f�]�µ~9[
• glPolygonOffset(scale = 1.1, bias = 4.0)• ��"�/��agh9¶[¯.��¨aF��"�/��agh9¶[¯.��¨aF��"�/��agh9¶[¯.��¨aF��"�/��agh9¶[¯.��¨aF
• &���&'()�·¸-¹ºJ»¼&���&'()�·¸-¹ºJ»¼&���&'()�·¸-¹ºJ»¼&���&'()�·¸-¹ºJ»¼
• &'()&'()&'()&'()#�$���-b[½�¾q#�$���-b[½�¾q#�$���-b[½�¾q#�$���-b[½�¾q
• ��a�4m®_`M�/��"¿��M[��a�4m®_`M�/��"¿��M[��a�4m®_`M�/��"¿��M[��a�4m®_`M�/��"¿��M[
• &'()&'()&'()&'()#�$�Àg9[ij"�\fgh4�²�#�$�Àg9[ij"�\fgh4�²�#�$�Àg9[ij"�\fgh4�²�#�$�Àg9[ij"�\fgh4�²�
�ca_`M<Xa�4�ca_`M<Xa�4�ca_`M<Xa�4�ca_`M<Xa�4
30
�@,�X,Y�,-%�@,�X,Y�,-%�@,�X,Y�,-%�@,�X,Y�,-%
A���U4�Z���JUA���U4�Z���JUA���U4�Z���JUA���U4�Z���JU
• ��������������������������������
• ��� �� ���������������� �� ���������������� �� ���������������� �� �������������
���� !"#$� �%&���� !"#$� �%&���� !"#$� �%&���� !"#$� �%&
• '()!�'()!�'()!�'()!� OpenGL ���� GL_EYE_LINEAR texgen
• � *+� *+� *+� *+ (x, y, z, w) ,-$./,-$./,-$./,-$./ (s, t, r, q) ��������������� ������� ������� �������
• GeForce01�01�01�01� T&L 2�3��2�3��2�3��2�3�� texgen�4��4��4��4�
56789�56789�56789�56789�
• :;�����:;�����:;�����:;������<=�<=�<=�<=
31
[\��U4�%][\��U4�%][\��U4�%][\��U4�%] ?
• k�N!O�� �k�N!O�� �k�N!O�� �k�N!O�� �
• O�IO�IO�IO�IP�\¡!¢�£¤P�\¡!¢�£¤P�\¡!¢�£¤P�\¡!¢�£¤
3434343434343434 : : Wolfgang Wolfgang HeidrichHeidrich [99][99]
32
[\��U4�F&^_[\��U4�F&^_[\��U4�F&^_[\��U4�F&^_ (1)
• ?¥:¦�O§!Nr¨©ªN!O�<��9?¥:¦�O§!Nr¨©ªN!O�<��9?¥:¦�O§!Nr¨©ªN!O�<��9?¥:¦�O§!Nr¨©ªN!O�<��9 ?• ÁÂÁÂÁÂÁ 2D z6�{'z6�{'z6�{'z6�{'#�5���"#�5���"#�5���"#�5���" (s,t) ÃÁ�?@ÃÁ�?@ÃÁ�?@ÃÁ�?@
• 2D ����6z��ÄÅz6�{'����6z��ÄÅz6�{'����6z��ÄÅz6�{'����6z��ÄÅz6�{'#�5��#�5��#�5��#�5��
• (s,t) �BC�����Ä�9[_`ab[<X����BC�����Ä�9[_`ab[<X����BC�����Ä�9[_`ab[<X����BC�����Ä�9[_`ab[<X���
9[9[9[9[
• ÆCÇN�ÆCÇN�ÆCÇN�ÆCÇN� s/w����t/w����1/w �¦��¦��¦��¦�
• <�<�<�<� 3 I�I�I�I��.H�D�£���È���Ä��.H�D�£���È���Ä��.H�D�£���È���Ä��.H�D�£���È���Ä�
• �.�H�0ÇN�¦��.�H�0ÇN�¦��.�H�0ÇN�¦��.�H�0ÇN�¦� s’ = (s/w) / (1/w) É\ÊÉ\ÊÉ\ÊÉ\Ê t’ = (t/w) / (1/w)
• !"�.�H�0ÇN�����6z��ÄÅ !"�.�H�0ÇN�����6z��ÄÅ !"�.�H�0ÇN�����6z��ÄÅ !"�.�H�0ÇN�����6z��ÄÅ (s’, t’) XM[XM[XM[XM[
33
[\��U4�F&^_[\��U4�F&^_[\��U4�F&^_[\��U4�F&^_ (2)
• 0�:k�N!O�<�0�:k�N!O�<�0�:k�N!O�<�0�:k�N!O�<� ?• A-ËAz6�{'ÃÁ�̬[A-ËAz6�{'ÃÁ�̬[A-ËAz6�{'ÃÁ�̬[A-ËAz6�{'ÃÁ�̬[
• (s, t, r, q) --> (s/q, t/q, r/q)• (x, y, z, w) = (x/w, y/w, z/w) �ËA6��$ÃÁ-Í�ËA6��$ÃÁ-Í�ËA6��$ÃÁ-Í�ËA6��$ÃÁ-Í
ÎÎÎÎ
• ̬¨XFJ"�̬¨XFJ"�̬¨XFJ"�̬¨XFJ"�(s/q, t/q, r/q) ��.�H�0ÇN�Ï��.�H�0ÇN�Ï��.�H�0ÇN�Ï��.�H�0ÇN�Ï
ÐÐÐÐ
• ±�%Ñ-"�.�H�0ÇN���a_`±�%Ñ-"�.�H�0ÇN���a_`±�%Ñ-"�.�H�0ÇN���a_`±�%Ñ-"�.�H�0ÇN���a_`
• r�()s�����"�MfÒÓa�4r�()s�����"�MfÒÓa�4r�()s�����"�MfÒÓa�4r�()s�����"�MfÒÓa�4
34
[\��U4�F&^_[\��U4�F&^_[\��U4�F&^_[\��U4�F&^_ (3)
• «��¡B¬®�¯K9�hRN!O�«��¡B¬®�¯K9�hRN!O�«��¡B¬®�¯K9�hRN!O�«��¡B¬®�¯K9�hRN!O�
• ����6z��ÄÅz6�{'"� ,M`Ô����6z��ÄÅz6�{'"� ,M`Ô����6z��ÄÅz6�{'"� ,M`Ô����6z��ÄÅz6�{'"� ,M`Ô
• ±]�M4Xz6�{'a±]�M4Xz6�{'a±]�M4Xz6�{'a±]�M4Xz6�{'a “ÕÖÕÖÕÖÕÖ”• ����6z��ÄÅz6�{'�"p-�.�H����6z��ÄÅz6�{'�"p-�.�H����6z��ÄÅz6�{'�"p-�.�H����6z��ÄÅz6�{'�"p-�.�H
�0ÇN���r�()s��0ÇN���r�()s��0ÇN���r�()s��0ÇN���r�()s�|�0a��¡J4|�0a��¡J4|�0a��¡J4|�0a��¡J4
[[[[
• ×ØM�/Ù��×ØM�/Ù��×ØM�/Ù��×ØM�/Ù�� [Segal, et.al. ‘92]• Ç-Ç-Ç-Ç- 1/w �"M��"M��"M��"M� q/w �Ä��Ä��Ä��Ä�
• 9[X�p-����6z��ÄÅz6�{'ÚS9[X�p-����6z��ÄÅz6�{'ÚS9[X�p-����6z��ÄÅz6�{'ÚS9[X�p-����6z��ÄÅz6�{'ÚS
�Û¡J4[ij��Ü,-ÏÐz6�{'-"|�Û¡J4[ij��Ü,-ÏÐz6�{'-"|�Û¡J4[ij��Ü,-ÏÐz6�{'-"|�Û¡J4[ij��Ü,-ÏÐz6�{'-"|
�0a���M4�0a���M4�0a���M4�0a���M4
35
[\��U4�F&^_[\��U4�F&^_[\��U4�F&^_[\��U4�F&^_ (4)
• «��¡B�@?86k�N!O�°±�w²«��¡B�@?86k�N!O�°±�w²«��¡B�@?86k�N!O�°±�w²«��¡B�@?86k�N!O�°±�w²
��������
• q/w �Ä�-\¡Jr�()s�"�.�H�0ÇN�Ä�-\¡Jr�()s�"�.�H�0ÇN�Ä�-\¡Jr�()s�"�.�H�0ÇN�Ä�-\¡Jr�()s�"�.�H�0ÇN
�¦��¦��¦��¦�
• (s/w) / (q/w) = s/q• (t/w) / (q/w) = t/q
• 1Ý !1Ý !1Ý !1Ý ! : ÏÐz6�{'ÏÐz6�{'ÏÐz6�{'ÏÐz6�{'
• OpenGL "ÏÐz6�{'ÚS�ÞßEFJ4["ÏÐz6�{'ÚS�ÞßEFJ4["ÏÐz6�{'ÚS�ÞßEFJ4["ÏÐz6�{'ÚS�ÞßEFJ4[
• àY�t���á�("àY�t���á�("àY�t���á�("àY�t���á�(" q -\[-\[-\[-\[ 1/w �â��â��â��â�
• F�F<U"ÆCÇNF�F<U"ÆCÇNF�F<U"ÆCÇNF�F<U"ÆCÇN
36
`a���`a���`a���`a���*�+,-�b!*�+,-�b!*�+,-�b!*�+,-�b!
• texgen���������� ���������������� ���������������� ���������������� ������
• gh��gh��gh��gh�� (x, y, z, w) pq�(�<�grs�pqtupq�(�<�grs�pqtupq�(�<�grs�pqtupq�(�<�grs�pqtu((�<�_`#$"vwxy�z{(�<�_`#$"vwxy�z{(�<�_`#$"vwxy�z{(�<�_`#$"vwxy�z{)
• ENM�pq�|M�tu-.d(�<�lm��_`#$ENM�pq�|M�tu-.d(�<�lm��_`#$ENM�pq�|M�tu-.d(�<�lm��_`#$ENM�pq�|M�tu-.d(�<�lm��_`#$
"�}~#$%!&=>"�}~#$%!&=>"�}~#$%!&=>"�}~#$%!&=>
• ��tu:-.��X�>��tu:-.��X�>��tu:-.��X�>��tu:-.��X�>
• ������������������������S����T������������ Q �������� 4 �������� ����������� ����������� ����������� �����������
• (s/q, t/q) /(�<�_`#$"/(�<�_`#$"/(�<�_`#$"/(�<�_`#$"S*+��G�S*+��G�S*+��G�S*+��G�
37
OpenGL �cd���cd���cd���cd��
efgchiefgchiefgchiefgchi
• �¨\¡!�³´9��r��³´µ�¨\¡!�³´9��r��³´µ�¨\¡!�³´9��r��³´µ�¨\¡!�³´9��r��³´µ
5678956789567895678956789567895678956789
:;:;:;:;:;:;:;:;
((x, y, z, w)x, y, z, w)
<+<+<+<+<+<+<+<+
:;:;:;:;:;:;:;:;
((x, y, z, w)x, y, z, w)
=>?=>?=>?=>?=>?=>?=>?=>?l l @&A@&A@&A@&A@&A@&A@&A@&A
BCBCBCBCBCBCBCBC
DEDEDEDEDEDEDEDE
BCBCBCBCBCBCBCBC
w w F" F" F" F" F" F" F" F"
GHGHGHGHGHGHGHGH
@&AIA�@&AIA�@&AIA�@&AIA�@&AIA�@&AIA�@&AIA�@&AIA�
��JK��JK��JK��JK��JK��JK��JK��JK
LMNO)PLMNO)PLMNO)PLMNO)PLMNO)PLMNO)PLMNO)PLMNO)P
>Q�#>Q�#>Q�#>Q�#>Q�#>Q�#>Q�#>Q�#
:;:;:;:;:;:;:;:;
((x, y, z)x, y, z)
9R��9R��9R��9R��9R��9R��9R��9R��
:;:;:;:;:;:;:;:;
((x, y, z, w)x, y, z, w)
�ST���ST���ST���ST���ST���ST���ST���ST��
:;:;:;:;:;:;:;:;((x, y, z)x, y, z)
38
:fjk��U4�gc�lD:fjk��U4�gc�lD:fjk��U4�gc�lD:fjk��U4�gc�lD
• JKst9�N!O�³´�°±JKst9�N!O�³´�°±JKst9�N!O�³´�°±JKst9�N!O�³´�°±
.�/01�.�/01�.�/01�.�/01�.�/01�.�/01�.�/01�.�/01�
2323232323232323
4545454545454545
2323232323232323
678678678678678678678678 l l 9��9��9��9��9��9��9��9��
:;:;:;:;:;:;:;:;
����������������
:;:;:;:;:;:;:;:;
w w '< '< '< '< '< '< '< '<
=>=>=>=>=>=>=>=>
9��?��9��?��9��?��9��?��9��?��9��?��9��?��9��?��
!!!!!!!!
@-AB@-AB@-AB@-AB@-AB@-AB@-AB@-AB
CDE�FGCDE�FGCDE�FGCDE�FGCDE�FGCDE�FGCDE�FGCDE�FG
7���7���7���7���7���7���7���7���
2323232323232323
1���1���1���1���1���1���1���1���
:;:;:;:;:;:;:;:;
�HI���HI���HI���HI���HI���HI���HI���HI��
2323232323232323
45JK45JK45JK45JK45JK45JK45JK45JK
��L��L��L��L��L��L��L��L((s, t, s, t, rr, q), q)
((x, y, z)x, y, z)
39
:fjk:fjk:fjk:fjk Texgen�J�=��B�J�=��B�J�=��B�J�=��B
• OpenGL ������������GLfloat Splane[4], Tplane[4], Rplane[4], Qplane[4];glTexGenfv(GL_S, GL_EYE_PLANE, Splane);glTexGenfv(GL_T, GL_EYE_PLANE, Tplane);glTexGenfv(GL_R, GL_EYE_PLANE, Rplane);glTexGenfv(GL_Q, GL_EYE_PLANE, Qplane);glEnable(GL_TEXTURE_GEN_S);glEnable(GL_TEXTURE_GEN_T);glEnable(GL_TEXTURE_GEN_R);glEnable(GL_TEXTURE_GEN_Q);
• ¶JKlm·��¸�¹º»�fg�w¼��b6¶JKlm·��¸�¹º»�fg�w¼��b6¶JKlm·��¸�¹º»�fg�w¼��b6¶JKlm·��¸�¹º»�fg�w¼��b6�½�½�½�½ (¾¿��ÀÁ�ÂÃ)Äž¿��ÀÁ�ÂÃ)Äž¿��ÀÁ�ÂÃ)Äž¿��ÀÁ�ÂÃ)ÄÅ)• ãããã : texgent�äs60åæ"çèÙ����-\¡t�äs60åæ"çèÙ����-\¡t�äs60åæ"çèÙ����-\¡t�äs60åæ"çèÙ����-\¡J¢é�UM4J¢é�UM4J¢é�UM4J¢é�UM4
40
:fjk:fjk:fjk:fjk Texgenhihihihi
• åæêaÏТé�ëSåæêaÏТé�ëSåæêaÏТé�ëSåæêaÏТé�ëS
• 4 I�I�I�I�BC��åæêaBC��åæêaBC��åæêaBC��åæêa 4x4 Ûì�ëSÛì�ëSÛì�ëSÛì�ëS (z6�{'Ûìz6�{'Ûìz6�{'Ûìz6�{'Ûì
"í`"í`"í`"í`)
ssttrrqq
Splane[0] Splane[1] Splane[2] Splane[3]Splane[0] Splane[1] Splane[2] Splane[3]
Tplane[0] Tplane[1] Tplane[2] Tplane[3]Tplane[0] Tplane[1] Tplane[2] Tplane[3]
Rplane[0] Rplane[1] Rplane[2] Rplane[3]Rplane[0] Rplane[1] Rplane[2] Rplane[3]
Qplane[0] Qplane[1] Qplane[2] Qplane[3]Qplane[0] Qplane[1] Qplane[2] Qplane[3]
==xxeeyyeezzeewwee
41
������������*�B:fjk*�B:fjk*�B:fjk*�B:fjk
Texgenhihihihi������������*�B:fjk*�B:fjk*�B:fjk*�B:fjk
Texgenhihihihi
1/21/21/2
1/21/21/2
1/21/21/2
111
1/21/21/2
1/21/21/2
1/21/21/2
4MN
(��):;
4MN4MN
((����)):;:;
��
9��
(look at):;
����
9��9��
((look at)look at):;:;
O
45
9��
(look at):;
OO
4545
9��9��
((look at)look at):;:;
45
9��
(look at):;
4545
9��9��
(look at)(look at):;:;
67�IP
:;
67�IP67�IP
:;:;
xoyozowo
xxooyyoozzoowwoo
xeyezewe
xxeeyyeezzeewwee
===
===xeyezewe
xxeeyyeezzeewwee
strq
ssttrrqq
������������������������������������������������� � � �
������������������������������������������������glTexGen������� !������� !������� !������� !
������������������������ ������������������������������������������������������������������������ � � � � � � � �
������������������������������������������������������������������������������������������������glTexGenglTexGen������� !������� !������� !������� !������� !������� !������� !������� !
QRSTUVWQRSTUVWQRSTUVWQRSTUVW glTexGen'XY'XY'XY'XYQRSTUVWQRSTUVWQRSTUVWQRSTUVWQRSTUVWQRSTUVWQRSTUVWQRSTUVW glTexGenglTexGen 'XY'XY'XY'XY'XY'XY'XY'XY
42
������������*�BmC*�BmC*�BmC*�BmC
• ��#�$�îï��6��$��#�$�îï��6��$��#�$�îï��6��$��#�$�îï��6��$
• ðñMÃÁ¢é�Û]BC��ðñMÃÁ¢é�Û]BC��ðñMÃÁ¢é�Û]BC��ðñMÃÁ¢é�Û]BC�� texgenaxyòU%axyòU%axyòU%axyòU%
����
• (s/q, t/q) "��.�H�0-K¹F%./0���"��.�H�0-K¹F%./0���"��.�H�0-K¹F%./0���"��.�H�0-K¹F%./0���
z6�{'v�NOz6�{'v�NOz6�{'v�NOz6�{'v�NO
• r/q "�./0�VW-KFJLK,M��.�H�"�./0�VW-KFJLK,M��.�H�"�./0�VW-KFJLK,M��.�H�"�./0�VW-KFJLK,M��.�H�
0�0�0�0� Z åæóôåæóôåæóôåæóô ([0,1] �õö-�²�����U��õö-�²�����U��õö-�²�����U��õö-�²�����U�
/���U%2�/���U%2�/���U%2�/���U%2�)• A-A-A-A- (s/q, t/q) �z6�{'c�c�z6�{'c�c�z6�{'c�c�z6�{'c�c r/q XdeXdeXdeXde
• texture[s/q, t/q] ≅≅≅≅ r/q M��&'()-M�M4M��&'()-M�M4M��&'()-M�M4M��&'()-M�M4
• texture[s/q, t/q] < r/q M��&'()-M[M��&'()-M[M��&'()-M[M��&'()-M[
43
nHo@�p�F��nHo@�p�F��nHo@�p�F��nHo@�p�F��
������������*�+,-�OM@=*�+,-�OM@=*�+,-�OM@=*�+,-�OM@=
• SGI RealityEngine����InfiniteReality����GeForce3������������ Xbox ����������������
• z6�{'z6�{'z6�{'z6�{'���D���÷RXFJ&'()���D���÷RXFJ&'()���D���÷RXFJ&'()���D���÷RXFJ&'()z�z�z�z�
0��Û0��Û0��Û0��Û
• 2D z6�{'�z6�{'�z6�{'�z6�{'� (s/q, t/q) �z67����6���z67����6���z67����6���z67����6��
$$$$
• ��6��$c���6��$c���6��$c���6��$c� r/q XdeXdeXdeXde
• z67�az67�az67�az67�a r/q XoF4�±U\fgh4ij"�XoF4�±U\fgh4ij"�XoF4�±U\fgh4ij"�XoF4�±U\fgh4ij"�1.0 �ÚS�ÚS�ÚS�ÚS
• z67�az67�az67�az67�a r/q \f¿�4ij"�\f¿�4ij"�\f¿�4ij"�\f¿�4ij"�0.0 �ÚS�ÚS�ÚS�ÚS
• !-\¡Jø�»¼ !-\¡Jø�»¼ !-\¡Jø�»¼ !-\¡Jø�»¼
• �.�H�0a&'()-M[ij"ùú�M�M�.�H�0a&'()-M[ij"ùú�M�M�.�H�0a&'()-M[ij"ùú�M�M�.�H�0a&'()-M[ij"ùú�M�M
4ij"ø"¢ûFM44ij"ø"¢ûFM44ij"ø"¢ûFM44ij"ø"¢ûFM4
44
������������*�B*�B*�B*�Bo@�p�FqI�o@�p�FqI�o@�p�FqI�o@�p�FqI�
OpenGL �rs�rs�rs�rs
• 2 Æ�Æ�Æ�Æ�ÇÈÉÊ�ËÌÍÎÇÈÉÊ�ËÌÍÎÇÈÉÊ�ËÌÍÎÇÈÉÊ�ËÌÍÎ
• SGIX_depth_texture• ������z6�{'������z6�{'������z6�{'������z6�{'�ü�#�0�ý£�0�ü�#�0�ý£�0�ü�#�0�ý£�0�ü�#�0�ý£�0
• ��������z6�{'��������z6�{'��������z6�{'��������z6�{'Hè�þ�|5�aHè�þ�|5�aHè�þ�|5�aHè�þ�|5�a
ý£�0�U[ý£�0�U[ý£�0�U[ý£�0�U[
• SGIX_shadow• “&'()de&'()de&'()de&'()de”z6�{'z6�{'z6�{'z6�{'���D������D������D������D���è�(è�(è�(è�(
������������
• r/q ���� (s/q, t/q) �z67�cXde�z67�cXde�z67�cXde�z67�cXde
• #�{#�{#�{#�{������������ý£�0ý£�0ý£�0ý£�0 : SGI����NVIDIA����±�±�±�±�����?• Brian Paul ��J�.ENM��������J�.ENM��������J�.ENM��������J�.ENM������ Mesa ������������
|NZ|NZ|NZ|NZ
45
A���U4��A���U4��A���U4��A���U4��
t7^uv��U4�t7^uv��U4�t7^uv��U4�t7^uv��U4�wx@*�=wx@*�=wx@*�=wx@*�=
• SGIX_depth_texture"&'()"&'()"&'()"&'()#�5��@���c#�5��@���c#�5��@���c#�5��@���c
������������z6�{'�ý£�0z6�{'�ý£�0z6�{'�ý£�0z6�{'�ý£�0
• 3 I�I�I�I�����F4vF4vF4vF4v�����ü�#�0�ü�#�0�ü�#�0�ü�#�0
• GL_DEPTH_COMPONENT16_SGIX• GL_DEPTH_COMPONENT24_SGIX• GL_DEPTH_COMPONENT32_SGIX
(GeForce3 ���� 24f �f �f �f �X˺X˺X˺X˺)• ���������ü�#�0-"�ü�#�0-"�ü�#�0-"�ü�#�0-" GL_DEPTH_COMPONENT �?�?�?�?@@@@
• glCopySubTexImage2D XXXXFJïRF������FJïRF������FJïRF������FJïRF������
���z6�{'þ�����z6�{'þ�����z6�{'þ�����z6�{'þ������|5���|5���|5���|5�������
• NVIDIA "<U��|5�"<U��|5�"<U��|5�"<U��|5�z6�{'z6�{'z6�{'z6�{'���1ðE���1ðE���1ðE���1ðE
46
A���U4��yzA���U4��yzA���U4��yzA���U4��yz
• ?@?@?@?@ :glCopyTexImage2D(GL_TEXTURE_2D, level=0,
internalfmt=GL_DEPTH_COMPONENT24_SGIX,x=0, y=0, w=256, h=256, border=0);
• z6�{'�1z6�{'�1z6�{'�1z6�{'�1�����v�v�v�v�����ü�#�0�Q�ü�#�0�Q�ü�#�0�Q�ü�#�0�Q����F%�"�F%�"�F%�"�F%�"�glCopySubTexImage2D �?@-\¡Jû�?@-\¡Jû�?@-\¡Jû�?@-\¡Jû����a\f�a\f�a\f�a\f�����-M-M-M-M
[[[[
• �����0�0�0�0 : z6�{'vz6�{'vz6�{'vz6�{'v�����ü�#�0-"�ü�#�0-"�ü�#�0-"�ü�#�0-"GL_DEPTH_COMPONENT �?]<X�?]<X�?]<X�?]<X
• “n_SGIX”����������������Q�?@FM4ij�(./�"���Q�?@FM4ij�(./�"���Q�?@FM4ij�(./�"���Q�?@FM4ij�(./�"���
������-jT������-jT������-jT������-jT����[[[[
• ���������a��z6�{'���-YZFJ4���������a��z6�{'���-YZFJ4���������a��z6�{'���-YZFJ4���������a��z6�{'���-YZFJ4
[ij-�z6�{'�|5����ü�#��"1g-[ij-�z6�{'�|5����ü�#��"1g-[ij-�z6�{'�|5����ü�#��"1g-[ij-�z6�{'�|5����ü�#��"1g-
M[M[M[M[
47
A���U4�A���U4�A���U4�A���U4�{+@�|wx@*,{+@�|wx@*,{+@�|wx@*,{+@�|wx@*,
UUUU
• �z�#�LM2 Ï7;>¦WÐ���O�ÑÒ�z�#�LM2 Ï7;>¦WÐ���O�ÑÒ�z�#�LM2 Ï7;>¦WÐ���O�ÑÒ�z�#�LM2 Ï7;>¦WÐ���O�ÑÒ
• 512x512 �|5�"�|5�"�|5�"�|5�" 256x256 ���� 4 �����������[���[���[���[
• 0��(t�0��(t�0��(t�0��(t� : \f\f\f\f����4&'()-"�\f�44&'()-"�\f�44&'()-"�\f�44&'()-"�\f�4��������
��&'()��&'()��&'()��&'()#�$a_`#�$a_`#�$a_`#�$a_`����a�|5�a�|5�a�|5�a�|5������"�"�"�"����´́́́
• 16 f �LM2�f �LM2�f �LM2�f �LM2� 24f �LM2f �LM2f �LM2f �LM2 (32f �f �f �f � Ó�Ó�Ó�Ó�
Ô�Õ?567�Ô�Õ?567�Ô�Õ?567�Ô�Õ?567�) �cÖ�z� �cÖ�z� �cÖ�z� �cÖ�z� 2 ×ØÙ×ØÙ×ØÙ×ØÙ
• 16 ��0�������`�F��0�������`�F��0�������`�F��0�������`�F (32 ��0��0��0��0����.�.�.�.�����
���ab¡J2���ab¡J2���ab¡J2���ab¡J2)����16��0��z6�{'-|5��0��z6�{'-|5��0��z6�{'-|5��0��z6�{'-|5
�9[X��9[X��9[X��9[X�24��0�������?]\f2���0�������?]\f2���0�������?]\f2���0�������?]\f2�����
• 16 ��0�������?@9[X��"�z�&���0�������?@9[X��"�z�&���0�������?@9[X��"�z�&���0�������?@9[X��"�z�&�
a?¬M4<X-ã�a?¬M4<X-ã�a?¬M4<X-ã�a?¬M4<X-ã�
48
o@�p�����o@�p�����o@�p�����o@�p�����****
�B�B�B�Bw}���,-w}���,-w}���,-w}���,-
• “Percentage Closer”Wr�¢A�XWr�¢A�XWr�¢A�XWr�¢A�X
• ���z6�{'���z6�{'���z6�{'���z6�{'���D���"øS��å���D���"øS��å���D���"øS��å���D���"øS��å����E9[E9[E9[E9[
��������
• ��c�å��c�å��c�å��c�å����E"µ~FM4E"µ~FM4E"µ~FM4E"µ~FM4
• ����PPPP���� [Reeves, SIGGARPH 87]• r�()s��ý�$�r�()s��ý�$�r�()s��ý�$�r�()s��ý�$�����X-de��ÛX-de��ÛX-de��ÛX-de��Û
• A-�de� !�åA-�de� !�åA-�de� !�åA-�de� !�å����E9[E9[E9[E9[
• &'()&'()&'()&'()#�$#�$#�$#�$¯�ä-��{¯/��&���¯�ä-��{¯/��&���¯�ä-��{¯/��&���¯�ä-��{¯/��&���� � � �
• +Ð+Ð+Ð+Ð / !!!!Ð�����Ð�����Ð�����Ð�����""""�0�0�0�0&'()�"M4&'()�"M4&'()�"M4&'()�"M4
49
o@�p�����o@�p�����o@�p�����o@�p�����****
�B�B�B�Bw}���,-�~w}���,-�~w}���,-�~w}���,-�~
GL_NEAREST: GL_NEAREST: �! �! �! �! �! �! �! �!
�"�"�"�"�"�"�"�"
GL_LINEAR: GL_LINEAR: #�$%�&##�$%�&##�$%�&##�$%�&##�$%�&##�$%�&##�$%�&##�$%�&#
'()*+�%�,'()*+�%�,'()*+�%�,'()*+�%�,'()*+�%�,'()*+�%�,'()*+�%�,'()*+�%�,
ZH8[�IPR\]^*_`Wab� Gc'deZH8[�IPR\]^*_`Wab� Gc'deZH8[�IPR\]^*_`Wab� Gc'deZH8[�IPR\]^*_`Wab� Gc'deZH8[�IPR\]^*_`Wab� Gc'deZH8[�IPR\]^*_`Wab� Gc'deZH8[�IPR\]^*_`Wab� Gc'deZH8[�IPR\]^*_`Wab� Gc'de
�������������������������������� ��fg-Whijke ��fg-Whijke ��fg-Whijke ��fg-Whijke ��fg-Whijke ��fg-Whijke ��fg-Whijke ��fg-Whijke
50
A��]�X,��9�A��]�X,��9�A��]�X,��9�A��]�X,��9�
• ÚÛ�Wr�¢A�X�&ÜÝÚÛ�Wr�¢A�X�&ÜÝÚÛ�Wr�¢A�X�&ÜÝÚÛ�Wr�¢A�X�&ÜÝ
gh
��#$"S*
+�4X%*�5
�� �=>��
S*�5�!"5
_` = 0.25S*�5�!"5
_` = 0.63
0.63
0.25 0.25
0.63
Average(0.25, 0.25, 0.63, 0.63) = 0.440.57 > 0.44 Xn>�X%*�5� “�����n>”�/���������� : 0.44 �/���C�0.25 : 0.57 ��
%*�5_` = 0.57
51
Percentage Closer w}���,-w}���,-w}���,-w}���,-
gh
��#$"S
*+�4X%*�
5�� �=>��
S*�5�!"5
_` = 0.25S*�5�!"5
_` = 0.63
���� Average(0.57>0.25, 0.57>0.25, 0.57<0.63, 0.57<0.63) = 50%������������ ������������ ������������ ������������ 50% ����!"�����!"�����!"�����!"�
(#$!�%&��'(�)*+,-.�#/#$!�%&��'(�)*+,-.�#/#$!�%&��'(�)*+,-.�#/#$!�%&��'(�)*+,-.�#/)
%*�5_` = 0.57
�����"0
• LM20�)�UV�LM20�)�UV�LM20�)�UV�LM20�)�UV�-.-.-.-.�lÞ��lÞ��lÞ��lÞ�
52Percentage Closer ������ ��������� ��������� ��������� ���
����� !��"#$%#$����� !��"#$%#$����� !��"#$%#$����� !��"#$%#$����������������
�������� (1)
• ß P� Pß P� Pß P� Pß P� P Wr�¢A�X ÉÊ#�Wr�¢A�X ÉÊ#�Wr�¢A�X ÉÊ#�Wr�¢A�X ÉÊ#�
• ý�$���F%ý�$���F%ý�$���F%ý�$���F% 1 I%"I%"I%"I%" 2 I�I�I�I�####�$#�$�$#�$�$#�$�$#�$����
������de !��de !��de !��de !����EEEE
• gluBuild2DMipmaps �CQ86LMN!O��CQ86LMN!O��CQ86LMN!O��CQ86LMN!O� ßßßß
P� P�α#�à<�0�)7 P� P�α#�à<�0�)7 P� P�α#�à<�0�)7 P� P�α#�à<�0�)7
• ��c"���(�hM4%Ñ��c"���(�hM4%Ñ��c"���(�hM4%Ñ��c"���(�hM4%Ñ
• ß P� P áF)Z[:áF)�5â5�ãäß P� P áF)Z[:áF)�5â5�ãäß P� P áF)Z[:áF)�5â5�ãäß P� P áF)Z[:áF)�5â5�ãä
M0����å�æA�X8 #� �Ü)BP�M0����å�æA�X8 #� �Ü)BP�M0����å�æA�X8 #� �Ü)BP�M0����å�æA�X8 #� �Ü)BP�
��������
• ���9���9���9���9$$$$J�J�J�J�####�$#�$�$#�$�$#�$�$#�$����������<U�Û]�"��<U�Û]�"��<U�Û]�"��<U�Û]�"
|�0a��f9¶J|�0a��f9¶J|�0a��f9¶J|�0a��f9¶J�����,�M4�,�M4�,�M4�,�M4
• OpenGL 1.2 ���� LOD %%%%Q"�Q"�Q"�Q"� 1x1 ��������������������&&&&JJJJ
��������������������������������'('('('(9[�-9[�-9[�-9[�-)*)*)*)*IIII
53Percentage Closer ������ ��������� ��������� ��������� ���
����� !��"#$%#$����� !��"#$%#$����� !��"#$%#$����� !��"#$%#$����������������
�������� (2)
• ß P� P��c:{�Wß P� P��c:{�Wß P� P��c:{�Wß P� P��c:{�W ���çè�éê���çè�éê���çè�éê���çè�éê#�ÜÝ)}A~�#�ÜÝ)}A~�#�ÜÝ)}A~�#�ÜÝ)}A~��W{ ��W{ ��W{ ��W{ � Oë�����iIOë�����iIOë�����iIOë�����iI
BO�ìT �8�)�Z[ ��BO�ìT �8�)�Z[ ��BO�ìT �8�)�Z[ ��BO�ìT �8�)�Z[ ��
• R<��R<��R<��R<�� 512x512 ������������ 256x256<7²<7²<7²<7² 2 Æ�Æ�Æ�Æ�ßßßß P� P P� P P� P P� P åí��CQ8:�î�����åí��CQ8:�î�����åí��CQ8:�î�����åí��CQ8:�î����� LOD ïT�ïT�ïT�ïT� 0.5 �¬T#�à<0:�¬T#�à<0:�¬T#�à<0:�¬T#�à<0:“8-tap”Wr�¢A�Wr�¢A�Wr�¢A�Wr�¢A�
X 0��X 0��X 0��X 0��
• OpenGL 1.2 ���� LOD %%%%Q�?@Q�?@Q�?@Q�?@
54
���'GH78�����F����'GH78�����F����'GH78�����F����'GH78�����F�
I���T�UI���T�UI���T�UI���T�U (1)
• ���5���5���5���5S*+��UV-Zz����'��5S*+��UV-Zz����'��5S*+��UV-Zz����'��5S*+��UV-Zz����'��5 :( ambient + diffuse ) * decal + specular
• ��������#$"/������#$"/������#$"/������#$"/������
• ��������#$"����#$"����#$"����#$"���� shade���=>:� ���=>:� ���=>:� ���=>:�
• ���¦�{�N�\���¦�{�N�\���¦�{�N�\���¦�{�N�\
• 100% = ��)80ðñ:��)80ðñ:��)80ðñ:��)80ðñ:0% = òó���òó���òó���òó���
• ���!&V�� -Z�'��5���!&V�� -Z�'��5���!&V�� -Z�'��5���!&V�� -Z�'��5 :( ambient + shade * diffuse ) * decal + shade * specular
• ¡/��¢£�ef�bcd����>�j1���)m ¡/��¢£�ef�bcd����>�j1���)m ¡/��¢£�ef�bcd����>�j1���)m ¡/��¢£�ef�bcd����>�j1���)m
�8�8�8�8�P���!&��P���!&��P���!&��P���!&� 100% |¤¥>E:/�C:CDE:|¤¥>E:/�C:CDE:|¤¥>E:/�C:CDE:|¤¥>E:/�C:CDE:
• ô�Çõ#�ö�����ô�p÷�)K0�)7ô�Çõ#�ö�����ô�p÷�)K0�)7ô�Çõ#�ö�����ô�p÷�)K0�)7ô�Çõ#�ö�����ô�p÷�)K0�)7
55
��^�}w?@���^�}w?@���^�}w?@���^�}w?@� (Dimming)FI�RS��FI�RS��FI�RS��FI�RS��
Dimming �- : ���¦§/0% ���)m�8d0% �+¨©m(
Dimming n� : ���¦§/40% ���)m�8d0% �+¨©m(
ªj�«C.C>���
¦§�A¬��)($<�
¤>
���¦§�®¯�
¤>
W°M�bc
����
¦§�+¨©
m(/�C
56
���'GH78�����F����'GH78�����F����'GH78�����F����'GH78�����F�
I���T�UI���T�UI���T�UI���T�U (2)• Dimming F%F%F%F%++++ØèÙ�ØèÙ�ØèÙ�ØèÙ� :
( ambient + diffuseShade * diffuse) * decal + specular * shade
diffuseShade"A�XÉf"A�XÉf"A�XÉf"A�XÉf
diffuseShade = dimming + ( 1.0 – dimming ) * shade
• NV_register_combinerXXXX OpenGL 1.2 ���� “�ô���ô���ô���ô��,,,,����
....����.�.�.�.�”ý£�0�?@FJ�ý£�0�?@FJ�ý£�0�?@FJ�ý£�0�?@FJ�----Ç-��}~Ç-��}~Ç-��}~Ç-��}~
• �ô��,�.-\f�Ù�����É\Ê��,�.�ÆCÇN./z��� !a./-01�U[
• NV_register_combiner-\f�$./#� (Ù�����) �.�X7���� (��,�.) �.��567�ÇN�È2��3êX4yjT�[<Xa�h[
57
��[\�����[\�����[\�����[\���*�B*�B*�B*�B
F&^_���F&^_���F&^_���F&^_��� (1)
• ´øk�N!O�<ù*�²�:��´øk�N!O�<ù*�²�:��´øk�N!O�<ù*�²�:��´øk�N!O�<ù*�²�:�� � P� P� P� PÖúÄk� û°8ü�ÖúÄk� û°8ü�ÖúÄk� û°8ü�ÖúÄk� û°8ü�
+±$<(�<��
��²:=(³C´��ef)
“�µ�”���¶wX�>+±$<(�<�'�·r
+±$<(�<�'�
·r�¸x��
¹º»/¼½
�¾Y�C:
¿���J�
.�-C�'
:�M�C
58
��[\�����[\�����[\�����[\���*�B*�B*�B*�B
F&^_���F&^_���F&^_���F&^_��� (2)
• ¸x���ÀÁ=>S*T$*¸x���ÀÁ=>S*T$*¸x���ÀÁ=>S*T$*¸x���ÀÁ=>S*T$* :• ��#$"ÂÃ�dÄÅ��$<;)�ÆÇ 1 Ç�ÈhÉ[+±$<(�<�(�S�!&ÂÃXÊË=> (Ì�+±$<(�<�¸x(�<�IÍ “;)”�=>E:)
• (�<kM�ijÎÏ� “s”Xn>Ð|C 1D S*+��UV=>: (“s”/ij texgen��Xvw)d1D S*+�/Ñ�ÎÏ�ÇC./ 0.0d��ÎÏ�ÇC./ 1.0 ��>
• *7$"ij�UVdEN�/(�<�[\:+±$<(�<�x«�J�. Ò|N>ij�VC>
• ��#$"�ÄV=>:�d(�<� “¸Ó”��;�<7�¶w=>E:/Ô^> (*7$"ijJ��JC)
• NV_texture_shader� GL_PASS_THROUGH_NV ��
59
������������*�+,-���F��&*�+,-���F��&*�+,-���F��&*�+,-���F��&
���������������� OpenGL rs��rs��rs��rs��
• ARB_pbuffer –��#$"_` $)o�Q!R7!&=>ZÕ�;)+*7�!Q!R7!&��)P+�¶w
• Ö×/ $* $)o���#$"�¶w-dÌN�S*+��Ø%�X�>
• -k-d��#$"��Ù`���!���Ù`J��ÚCbc/ pbuffer�UV=>E:
• NV_texture_rectangle –S*+��Û]JÜÚ|� 2 �ÝÞX�K.�JCß-C 2D S*+�à�á$<
• âã
• ä$"#$"åZ/ä$"#$")�5à7!&/�±�<|N.C�C
• ($"æ ����C• S*+�pq�çè/ [0..1]x[0..1] X/�K
[0..w]x[0..h] • ��#$%!&�éêÄ=
60
������������*�+,-%*�+,-%*�+,-%*�+,-%
������������������������������������������������������������
• ýþ[D�6²?�ÉÊ#�N!ýþ[D�6²?�ÉÊ#�N!ýþ[D�6²?�ÉÊ#�N!ýþ[D�6²?�ÉÊ#�N!���� ! ! ! !
• �z�&��?@FJ�&'()�v�z�&��?@FJ�&'()�v�z�&��?@FJ�&'()�v�z�&��?@FJ�&'()�v5555�����5�5�5�5��8��8��8��8
9D��567�-9D��567�-9D��567�-9D��567�-6�6�6�6�[[[[
• ������������m������������m������������m������������m��������z6��6�?@z6��6�?@z6��6�?@z6��6�?@
• ��$��$��$��$#�5��#�5��#�5��#�5��
• z6�{'z6�{'z6�{'z6�{'ÙÙÙÙ������M®��M®��M®��M®
• &'()&'()&'()&'()#�5��"\f#�5��"\f#�5��"\f#�5��"\f78787878M#�{��M#�{��M#�{��M#�{��������������
������������������X������X������X������X9999j}~j}~j}~j}~
• ��������� z�X� z�X� z�X� z�X B�~AB�~AB�~AB�~A�����0��0��0��0�����Kåí�Kåí�Kåí�Kåí�
»�¢µ�B!{O�&F»�¢µ�B!{O�&F»�¢µ�B!{O�&F»�¢µ�B!{O�&F
• ÆC$ú�.�M®X�ÆC$ú�.�M®X�ÆC$ú�.�M®X�ÆC$ú�.�M®X�:;:;:;:;aaaa----ÇÇÇÇ
61
������������*�+,-��'�&*�+,-��'�&*�+,-��'�&*�+,-��'�&
o@�p����� o@�p����� o@�p����� o@�p�����
• |�&��#|�&��#|�&��#|�&��#<�<�<�<� 3D r�()s�r�()s�r�()s�r�()s�""""���&���&���&���&====����
• Wolfgang Heidrichaaaa 1999 >>>>����?@AB?@AB?@AB?@AB�����C�C�C�C
• ����Û�|�&��#Û�|�&��#Û�|�&��#Û�|�&��#<�<�<�<�#�{#�{#�{#�{z6�{'z6�{'z6�{'z6�{'r�(r�(r�(r�(
)s��)s��)s��)s��DDDD@@@@
• EEEE 1 z6�{'z6�{'z6�{'z6�{'���0"���0"���0"���0" 2D ��#�$��#�$��#�$��#�$z6z6z6z6
�{'-�67��{'-�67��{'-�67��{'-�67�
• EEEE 2 z6�{'z6�{'z6�{'z6�{'���0"���0"���0"���0" 1D Z õöz6�{õöz6�{õöz6�{õöz6�{
'-�67�'-�67�'-�67�'-�67�
• ÀÀÀÀFFFF�U%z6�{'�U%z6�{'�U%z6�{'�U%z6�{'GHGHGHGH�"��"��"��"�EEEE 1 z6�{'�z6�{'�z6�{'�z6�{'�
����EEEE 2 z6�{'�z6�{'�z6�{'�z6�{'�IIII����
• 0 \fgh4ij"&'()-Mf�±]�M\fgh4ij"&'()-Mf�±]�M\fgh4ij"&'()-Mf�±]�M\fgh4ij"&'()-Mf�±]�M
4ij"&'()-M�M44ij"&'()-M�M44ij"&'()-M�M44ij"&'()-M�M4
• &'()-M¡%�.�H�0�&'()-M¡%�.�H�0�&'()-M¡%�.�H�0�&'()-M¡%�.�H�0�JKJKJKJK9[-"9[-"9[-"9[-"
��������������������z�0�?@z�0�?@z�0�?@z�0�?@
62
������������*�+,-�¡!*�+,-�¡!*�+,-�¡!*�+,-�¡! (1)
• ��������������������
• íîíîíîíîLLLLM¯/��&��aM¯/��&��aM¯/��&��aM¯/��&��aMMMMÚFÚFÚFÚFNNNN94949494
• “Percentage Closer”���D�������D�������D�������D����OPOPOPOP�h[�h[�h[�h[
• ����������������.�.�.�.����D���"]�µ~FM4���D���"]�µ~FM4���D���"]�µ~FM4���D���"]�µ~FM4
• ���/��"���/��"���/��"���/��"QQQQ-�2?4-�2?4-�2?4-�2?4NNNN94X"94X"94X"94X"RRRR¬M4¬M4¬M4¬M4
• ���������&'()�&'()�&'()�&'()#�$#�$#�$#�$��������������������������Xz6�{��Xz6�{��Xz6�{��Xz6�{
'xyòya_`'xyòya_`'xyòya_`'xyòya_`
• ��������������&'()��&'()��&'()��&'()#�$�?¬�."#�$�?¬�."#�$�?¬�."#�$�?¬�."IIII[[[[
• F�F�z6�{'�|5�9[|�02F�F�z6�{'�|5�9[|�02F�F�z6�{'�|5�9[|�02F�F�z6�{'�|5�9[|�02SSSS¬[¬[¬[¬[
63
������������*�+,-�¡!*�+,-�¡!*�+,-�¡!*�+,-�¡! (2)
• ��������������������
• &'()"BVW�;-&'()"BVW�;-&'()"BVW�;-&'()"BVW�;-TTTTQ�U[Q�U[Q�U[Q�U[
• &&&&¨̈̈̈<<<<./0@-./0@-./0@-./0@- 6 I�I�I�I�BVW�?@}~BVW�?@}~BVW�?@}~BVW�?@}~
• 36��$æ�36��$æ�36��$æ�36��$æ�UUUU6��$æ�6��$æ�6��$æ�6��$æ��5�5�5�5-b[�%"6-b[�%"6-b[�%"6-b[�%"6
��$æX��$æX��$æX��$æXVWVWVWVW9[t�äs60"�&'()/��9[t�äs60"�&'()/��9[t�äs60"�&'()/��9[t�äs60"�&'()/��
�ÅF��ÅF��ÅF��ÅF�XYXYXYXY�UM4�UM4�UM4�UM4
• 36��$æ"�h[36��$æ"�h[36��$æ"�h[36��$æ"�h[��������3�-3�-3�-3�-ZZZZï9[ï9[ï9[ï9[
• %%%%����F�3F�3F�3F�3[�[�[�[�9¶[X�ÏÐVW�?] -�9¶[X�ÏÐVW�?] -�9¶[X�ÏÐVW�?] -�9¶[X�ÏÐVW�?] -�\\\\
M��#�$��aM��#�$��aM��#�$��aM��#�$��a]^]^]^]^-M[-M[-M[-M[
64
������������*�B�¢£�'*�B�¢£�'*�B�¢£�'*�B�¢£�'
¤��%¥�¦§¤��%¥�¦§¤��%¥�¦§¤��%¥�¦§ (1)
• (�<�lm��%*�5(�<�lm��%*�5(�<�lm��%*�5(�<�lm��%*�5 (�!"5�!"5�!"5�!"5) :dgë�lm��%*�:dgë�lm��%*�:dgë�lm��%*�:dgë�lm��%*�
5555 (�!"5�!"5�!"5�!"5) :���8�G��Yk�.C>IB�n>:���8�G��Yk�.C>IB�n>:���8�G��Yk�.C>IB�n>:���8�G��Yk�.C>IB�n>
• ì�!"7!&� ¡ì�!"7!&� ¡ì�!"7!&� ¡ì�!"7!&� ¡
• efrs:ghrs�íµ�çèX�-KÊî|N.C>bcdefrs:ghrs�íµ�çèX�-KÊî|N.C>bcdefrs:ghrs�íµ�çèX�-KÊî|N.C>bcdefrs:ghrs�íµ�çèX�-KÊî|N.C>bcd
�!"5�!"5�!"5�!"5��8�ïc/��8�ïc/��8�ïc/��8�ïc/ 1.0 �ðK�>�ðK�>�ðK�>�ðK�>
• gë:(�<�rs�ñò�zXnNó�-CG�gë:(�<�rs�ñò�zXnNó�-CG�gë:(�<�rs�ñò�zXnNó�-CG�gë:(�<�rs�ñò�zXnNó�-CG�
• -k-dÌN/ôg���ñ:õW�CE:�ö÷=>-k-dÌN/ôg���ñ:õW�CE:�ö÷=>-k-dÌN/ôg���ñ:õW�CE:�ö÷=>-k-dÌN/ôg���ñ:õW�CE:�ö÷=>
• øù�(!"�ú¤>øù�(!"�ú¤>øù�(!"�ú¤>øù�(!"�ú¤> (û5�$<�´C.C>(�<�Wû5�$<�´C.C>(�<�Wû5�$<�´C.C>(�<�Wû5�$<�´C.C>(�<�W)• E�JD�(!"�UDü�ýþ/d(!"���-.C>E�JD�(!"�UDü�ýþ/d(!"���-.C>E�JD�(!"�UDü�ýþ/d(!"���-.C>E�JD�(!"�UDü�ýþ/d(!"���-.C>
�/(!"����¤�C:CDE:�/(!"����¤�C:CDE:�/(!"����¤�C:CDE:�/(!"����¤�C:CDE:
65
������������*�B�¢£�'*�B�¢£�'*�B�¢£�'*�B�¢£�'
¤��%¥�¦§¤��%¥�¦§¤��%¥�¦§¤��%¥�¦§ (2)
• �Ü)ë�O��Ü)ë�O��Ü)ë�O��Ü)ë�O������������P���P���P���P
• ��������)ë�O�h�)ë�O�h�)ë�O�h�)ë�O�h������867��I����867��I����867��I����867��I���
����
• “á�(./0-á�(./0-á�(./0-á�(./0-++++��U%��U%��U%��U%____”�·¸�·¸�·¸�·¸ –____-X¡J"-X¡J"-X¡J"-X¡J"
Ø��-1Ø��-1Ø��-1Ø��-1`̀̀̀�²���²���²���²��
• “VW�PVW�PVW�PVW�Paaaa”·¸XFJ2·¸XFJ2·¸XFJ2·¸XFJ2bbbb�UJ4[�UJ4[�UJ4[�UJ4[
• à�à<�à�à<�à�à<�à�à<�����J�8RJ�8RJ�8RJ�8R�����ñ#�ñ#�ñ#�ñ#…
66
¨©�¤ª«@U��¬@¨©�¤ª«@U��¬@¨©�¤ª«@U��¬@¨©�¤ª«@U��¬@
45R45R45R45R45R45R45R45R
9��9��9��9��9��9��9��9��
��R��R��R��R��R��R��R��R
9��9��9��9��9��9��9��9��
��Rl���Rl���Rl���Rl���Rl���Rl���Rl���Rl� m�m�m�m�m�m�m�m�
�E�FGn�� �E�FGn�� �E�FGn�� �E�FGn�� �E�FGn�� �E�FGn�� �E�FGn�� �E�FGn��
���������������� op8R��Wop8R��Wop8R��Wop8R��Wop8R��Wop8R��Wop8R��Wop8R��W
hijG45R9�hijG45R9�hijG45R9�hijG45R9�hijG45R9�hijG45R9�hijG45R9�hijG45R9�
�������� ::qqqqqqqq = = r$r$r$r$r$r$r$r$ssssssss = = r�r�r�r�r�r�r�r�
tuR45vwR�tuR45vwR�tuR45vwR�tuR45vwR�tuR45vwR�tuR45vwR�tuR45vwR�tuR45vwR�
x�/Wy��jGx�/Wy��jGx�/Wy��jGx�/Wy��jGx�/Wy��jGx�/Wy��jGx�/Wy��jGx�/Wy��jG
��R9����R9����R9����R9����R9����R9����R9����R9��
67
¨©�¤ª«@UF®¯�¨©�¤ª«@UF®¯�¨©�¤ª«@UF®¯�¨©�¤ª«@UF®¯�
4 &�&�&�&��¬@�¢°�¬@�¢°�¬@�¢°�¬@�¢°
45R45R45R45R45R45R45R45R
9��9��9��9��9��9��9��9��
��R��R��R��R��R��R��R��R
9��9��9��9��9��9��9��9��
��R9��Rr�z{��R9��Rr�z{��R9��Rr�z{��R9��Rr�z{��R9��Rr�z{��R9��Rr�z{��R9��Rr�z{��R9��Rr�z{
|"45R9��}|~�|"45R9��}|~�|"45R9��}|~�|"45R9��}|~�|"45R9��}|~�|"45R9��}|~�|"45R9��}|~�|"45R9��}|~�
'$%ez{'*�ke '$%ez{'*�ke '$%ez{'*�ke '$%ez{'*�ke '$%ez{'*�ke '$%ez{'*�ke '$%ez{'*�ke '$%ez{'*�ke
�QF|"�wv*��QF|"�wv*��QF|"�wv*��QF|"�wv*��QF|"�wv*��QF|"�wv*��QF|"�wv*��QF|"�wv*�
� ����� ����� ����� ����� ����� ����� ����� ���� ��/'< ��/'< ��/'< ��/'< ��/'< ��/'< ��/'< ��/'<
\]^*_`W�� Gc\]^*_`W�� Gc\]^*_`W�� Gc\]^*_`W�� Gc\]^*_`W�� Gc\]^*_`W�� Gc\]^*_`W�� Gc\]^*_`W�� Gc
'|"~�'�fg-R�'|"~�'�fg-R�'|"~�'�fg-R�'|"~�'�fg-R�'|"~�'�fg-R�'|"~�'�fg-R�'|"~�'�fg-R�'|"~�'�fg-R�
������������������������ �����'* �����'* �����'* �����'* �����'* �����'* �����'* �����'*
Q!W��� �Q!W��� �Q!W��� �Q!W��� �Q!W��� �Q!W��� �Q!W��� �Q!W��� �
68¨©�¤ª±²F®¯�¨©�¤ª±²F®¯�¨©�¤ª±²F®¯�¨©�¤ª±²F®¯�
������������³���´µ�¶·³���´µ�¶·³���´µ�¶·³���´µ�¶· (�<�<�<�<) �~�~�~�~
QR��}|"QR��}|"QR��}|"QR��}|"QR��}|"QR��}|"QR��}|"QR��}|"
��|� �'���|� �'���|� �'���|� �'���|� �'���|� �'���|� �'���|� �'�
v�ke v�ke v�ke v�ke v�ke v�ke v�ke v�ke
�� ����� ����� ����� ����� ����� ����� ����� ���
�������� ��/R\]^��/R\]^��/R\]^��/R\]^��/R\]^��/R\]^��/R\]^��/R\]^
*_`*_`*_`*_`*_`*_`*_`*_`
�������������������������������� ��������
�/�QR�/�QR�/�QR�/�QR�/�QR�/�QR�/�QR�/�QR
��}|C��}|C��}|C��}|C��}|C��}|C��}|C��}|C
j)Y��j)Y��j)Y��j)Y��j)Y��j)Y��j)Y��j)Y��
Fke 5Fke 5Fke 5Fke 5Fke 5Fke 5Fke 5Fke 5
'��'��'��'��'��'��'��'��
69
¸^~¸^~¸^~¸^~ (¹º�<,BF»^¹º�<,BF»^¹º�<,BF»^¹º�<,BF»^)
45R45R45R45R45R45R45R45R
9��9��9��9��9��9��9��9��
��R��R��R��R��R��R��R��R
9��9��9��9��9��9��9��9��
<)�<)�<)�<)�<)�<)�<)�<)�
G9�G9�G9�G9�G9�G9�G9�G9�
��������
l�l�l�l�l�l�l�l� m��E�Fm��E�Fm��E�Fm��E�Fm��E�Fm��E�Fm��E�Fm��E�F
G�x�/���jGG�x�/���jGG�x�/���jGG�x�/���jGG�x�/���jGG�x�/���jGG�x�/���jGG�x�/���jG
�[�IW��jk��[�IW��jk��[�IW��jk��[�IW��jk��[�IW��jk��[�IW��jk��[�IW��jk��[�IW��jk�
+"���R� ��+"���R� ��+"���R� ��+"���R� ��+"���R� ��+"���R� ��+"���R� ��+"���R� ��
���Fke 5'����Fke 5'����Fke 5'����Fke 5'����Fke 5'����Fke 5'����Fke 5'����Fke 5'�
�� �R@- ���� �R@- ���� �R@- ���� �R@- ���� �R@- ���� �R@- ���� �R@- ���� �R@- ��
fg-���IR$¡fg-���IR$¡fg-���IR$¡fg-���IR$¡fg-���IR$¡fg-���IR$¡fg-���IR$¡fg-���IR$¡
¢'£jk¤¥)¦§¢'£jk¤¥)¦§¢'£jk¤¥)¦§¢'£jk¤¥)¦§¢'£jk¤¥)¦§¢'£jk¤¥)¦§¢'£jk¤¥)¦§¢'£jk¤¥)¦§
jke Q!W���jke Q!W���jke Q!W���jke Q!W���jke Q!W���jke Q!W���jke Q!W���jke Q!W���
¨���|���¨���|���¨���|���¨���|���¨���|���¨���|���¨���|���¨���|���
����'© ¡����'© ¡����'© ¡����'© ¡����'© ¡����'© ¡����'© ¡����'© ¡
¢'ª«� ¢'ª«� ¢'ª«� ¢'ª«� ¢'ª«� ¢'ª«� ¢'ª«� ¢'ª«�
70
����~����~����~����~
• �¨\¡!��{�W�¨\¡!��{�W�¨\¡!��{�W�¨\¡!��{�W ��I�X���O���I�X���O���I�X���O���I�X���O���������)��W¡O)��W¡O)��W¡O)��W¡O
.�/01�R¬8Z.�/01�R¬8Z.�/01�R¬8Z.�/01�R¬8Z.�/01�R¬8Z.�/01�R¬8Z.�/01�R¬8Z.�/01�R¬8Z �����IP'�����IP'�����IP'�����IP'�����IP'�����IP'�����IP'�����IP'
����������������
72
����~����~����~����~
• W�BÖ���W�BÖ���W�BÖ���W�BÖ�������<#<#<#<#
Z���®'¯Z���®'¯Z���®'¯Z���®'¯Z���®'¯Z���®'¯Z���®'¯Z���®'¯
eGc�����eGc�����eGc�����eGc�����eGc�����eGc�����eGc�����eGc�����
°Fke 5'�°Fke 5'�°Fke 5'�°Fke 5'�°Fke 5'�°Fke 5'�°Fke 5'�°Fke 5'�
��������
Z��W±)� Z��W±)� Z��W±)� Z��W±)� Z��W±)� Z��W±)� Z��W±)� Z��W±)�
Q!}²C³§Q!}²C³§Q!}²C³§Q!}²C³§Q!}²C³§Q!}²C³§Q!}²C³§Q!}²C³§
73
UM�=<�=UM�=<�=UM�=<�=UM�=<�=����������������
[\��U4�%������[\��U4�%������[\��U4�%������[\��U4�%������
• O} ��I�,·�k�N!O��CQ86�O} ��I�,·�k�N!O��CQ86�O} ��I�,·�k�N!O��CQ86�O} ��I�,·�k�N!O��CQ86����� � P�O} ��I�� P�O} ��I�� P�O} ��I�� P�O} ��I� WÐ���W�WÐ���W�WÐ���W�WÐ���W�����6666
����
74
���������� �������������� �������������� �������������� �������������� �������������� �������������� �������������� ����
������������������������������������������������������������������������
1) 1) �������������������������������� ���� !���� !���� !���� !���� !���� !���� !���� !
2)2) �������������������������������� ����"#��������"#��������"#��������"#��������"#��������"#��������"#��������"#����
$� !$� !$� !$� !$� !$� !$� !$� !
3)3) %&'�()�%&'�()�%&'�()�%&'�()�%&'�()�%&'�()�%&'�()�%&'�()� *+�,-%&*+�,-%&*+�,-%&*+�,-%&*+�,-%&*+�,-%&*+�,-%&*+�,-%&
�������������������������������� ����./����./����./����./����./����./����./����./
4)4) 0123415�����0123415�����0123415�����0123415�����0123415�����0123415�����0123415�����0123415����� (6(6(6(6(6(6(6(6
*(71*(71*(71*(71*(71*(71*(71*(71 ((�89%&'�()��89%&'�()��89%&'�()��89%&'�()��89%&'�()��89%&'�()��89%&'�()��89%&'�()�
*+�,:./�;9�*+�,:./�;9�*+�,:./�;9�*+�,:./�;9�*+�,:./�;9�*+�,:./�;9�*+�,:./�;9�*+�,:./�;9�) ) �<��<��<��<��<��<��<��<�
$�$�$�$�$�$�$�$�
• ;àcb;àcb;àcb;àcb����7777��������������������
���%¼½³wp�=%�������%¼½³wp�=%�������%¼½³wp�=%�������%¼½³wp�=%����
��������
���������������� : : Cass Cass EverittEveritt
75
������������*�+,-'GH78*�+,-'GH78*�+,-'GH78*�+,-'GH78
������������������������ Luxo Jr.
• MacWorld Japan �������� Steve Jobs �Ùè��0��&�Ùè��0��&�Ùè��0��&�Ùè��0��&====
���� (Mac ���� OpenGL �r�()s��r�()s��r�()s��r�()s�&'()&'()&'()&'()#�5��#�5��#�5��#�5��
�?@�?@�?@�?@)
76
• Luxo Jr. �/�/�/�/�T����T����T����T�������!!!!����|NZ(�<�|NZ(�<�|NZ(�<�|NZ(�<� 2 Ç:dÇ:dÇ:dÇ:d������������
n>(�<�n>(�<�n>(�<�n>(�<� 1 ÇÇÇÇUYN.C>UYN.C>UYN.C>UYN.C>
• 3 Ç�Ç�Ç�Ç���������#$"�)Q�9#$"�)Q�9#$"�)Q�9#$"�)Q�9����:�:�:�:�UV UV UV UV vwvwvwvw
• ����������;�<7��;�<7��;�<7��;�<7 (Ø�:(!"���9Ø�:(!"���9Ø�:(!"���9Ø�:(!"���9) /=/=/=/=����.�-K�.�-K�.�-K�.�-K�
����ý|N.C>ý|N.C>ý|N.C>ý|N.C>
• ����������lm��Ø!<��lm��Ø!<��lm��Ø!<��lm��Ø!<��������
5-.�5-.�5-.�5-.�d���!&���=>d���!&���=>d���!&���=>d���!&���=>
• 7�5à�9�7�5à�9�7�5à�9�7�5à�9� Luxo Jr. ////OpenGL �:�.��:�.��:�.��:�.� � � � �����������������
• OpenGL X��X��X��X������Vô�Vô�Vô�Vô�
Luxo Jr. ����yz����yz����yz����yz
(1�23�456�78�9:;5�0�<,4=>�?&@�Apple A MacWorld Japan BWeb CDE7FBGB�=>)
77
������������*�+,-�*�+,-�*�+,-�*�+,-�
¾@U¾@U¾@U¾@U{@�{@�{@�{@�
• NVIDIA ���� Web �I��I��I��I�
• """"��������|�(|�(|�(|�(
• “&'()&'()&'()&'(),,,,'�0'�0'�0'�0” OpenGL |�(|�(|�(|�(
• cccc@}~M1��&'()@}~M1��&'()@}~M1��&'()@}~M1��&'()#�5��#�5��#�5��#�5��ý£�0�?@ý£�0�?@ý£�0�?@ý£�0�?@
FJ4[FJ4[FJ4[FJ4[ TNT����GeForce����Quadro����GeForce3��������Û}~Û}~Û}~Û}~
• EXT_texture_env_combine�ý£�0FJ4[�ý£�0FJ4[�ý£�0FJ4[�ý£�0FJ4[��������
��2�Û}~��2�Û}~��2�Û}~��2�Û}~
• NVIDIA OpenGL Extension Specifications• EXT_texture_env_combine����
NV_register_combiners����SGIX_depth_texture����SGIX_shadow-I4J�(-I4J�(-I4J�(-I4J�(,,,,�H�0�H�0�H�0�H�0
• http://www nvidia com
78
�X�=�X�=�X�=�X�=
• àà0ñ8RBI»rB�àà0ñ8RBI»rB�àà0ñ8RBI»rB�àà0ñ8RBI»rB������)bR�)bR�)bR�)bR��������
• Wolfgang Heidrich, Max-Planck Institute for Computer Science• 1111�����Ù����Ù����Ù����Ù���z6�{'z6�{'z6�{'z6�{'&'()&'()&'()&'()#�5���#�5���#�5���#�5���
�/���/���/���/��
• dddd����ABeABeABeABeHigh-quality Shading and Lighting for Hardware-accelerated Renderingffff
• Michael McCool, University of Waterloo• #�{Ù�ä�0�&'()de��/Ù���#�{Ù�ä�0�&'()de��/Ù���#�{Ù�ä�0�&'()de��/Ù���#�{Ù�ä�0�&'()de��/Ù�������
CCCC
79
¿%�¿%�¿%�¿%�
• &'()&'()&'()&'()#�5��"���D/��&'()/��#�5��"���D/��&'()/��#�5��"���D/��&'()/��#�5��"���D/��&'()/��¯�¯�¯�¯�
s60��s60��s60��s60������
• &���&���&���&���78787878�X"�X"�X"�X"]]]]::::gggg
• #�{z6�{'X��4ðj#�{z6�{'X��4ðj#�{z6�{'X��4ðj#�{z6�{'X��4ðjhhhh
• �z�&��z�&��z�&��z�&�&'()&'()&'()&'()iiii����X"����X"����X"����X"jjjjMf�#�{Mf�#�{Mf�#�{Mf�#�{
��a_��a_��a_��a_kkkk�M4�M4�M4�M4
• �£�0./0�&'()-1ð�£�0./0�&'()-1ð�£�0./0�&'()-1ð�£�0./0�&'()-1ð
• 1111����|�&��#|�&��#|�&��#|�&��#<�<�<�<�r�()s��&'()r�()s��&'()r�()s��&'()r�()s��&'()#�$#�$#�$#�$ý£ý£ý£ý£
�0�0�0�0
• GeForce3• Ù���z6�{'Ù���z6�{'Ù���z6�{'Ù���z6�{'z6��6"�z6��6"�z6��6"�z6��6"�llll&�&�&�&�r�()sr�()sr�()sr�()s
��ý£�0��ý£�0��ý£�0��ý£�0
• ˺*+z6��6a˺*+z6��6a˺*+z6��6a˺*+z6��6a Pixar���� CG mnmnmnmn����&'()-?@�UJ4[&'()-?@�UJ4[&'()-?@�UJ4[&'()-?@�UJ4[