OpenGL - Nvidiadeveloper.download.nvidia.com/assets/gamedev/docs/ShadowMaps_CEDEC_J.… · 7...

79
OpenGL CEDEC 2001 Tokyo, Japan OpenGL CEDEC 2001 Tokyo, Japan

Transcript of OpenGL - Nvidiadeveloper.download.nvidia.com/assets/gamedev/docs/ShadowMaps_CEDEC_J.… · 7...

�������� OpenGL ������������������������

���������������� ���� ���� ���� ����

CEDEC 2001Tokyo, Japan

�������� OpenGL ������������������������

���������������� ���� ���� ���� ����

CEDEC 2001Tokyo, Japan

2

Mark J. KilgardGraphics Software EngineerNVIDIA Corporation

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'

����������������

71

����~����~����~����~

• de)�¨\¡!� ó6���de)�¨\¡!� ó6���de)�¨\¡!� ó6���de)�¨\¡!� ó6��� ÆÆÆÆ

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[