2. Kessenich J., Baldwin D., Rost R. The OpenGL Shading Language, Version 1.051/ 3Dlabs. 2003 (http://www.3dlab5.com/support/deveioper/ogl2).
3. Perlin K. An Image Synthesizer//Computer Graphics (Proc. SIGGRAPH-85). 1985. July. P. 287-296.
4. Perlin K. Improving Noise// Computer Graphics (Proc. SIGGRAPH-2002). 2002, July. P. 681-682 (http://mrl.nyu.edu/perLin/paper445.pdf).
5. Pixar, The RenderMan Interface Specification, Version 3.2 / Pixar. 2000 (http:// renderman.pixar.com/products/rispec/index.htm).
6. Segal M., Akeley K. The OpenGL Graphics System: A Specification (Version 1.5)/ Ed.: Ch. Frazier (v. 1.1), J. Leech (v. 1.2-1.5). 2003 (http://opengl.org).
7. Upstill S. The RenderMan Companion: A Programmer's Guide to Realistic Computer Graphics. Reading, MS: Addison-Wesléy, 1990.
8. Zwillinger D. CRC Standard Mathematical Tables and Formulas. 30th ed. CRC Press, 1995 (http://geom.math.uiuc.edu/docs/reference/CRC-formulas).

, Пример простого 1 шейдера Рассмотрим простой пример. Предположим, необходимо наложить на объект изображение кирпичной стены. Этот шаблон будет вычисляться фрагментным тендером. Если вы хотите побыстрее перейти к обсуждению API для определения шейдеров и управления ими, то эту главу можно пропустить.

Пример, как и большинство примеров, приводимых в этой книге, состоит из трех основных компонентов: исходного кода вершинного шейдера, исходного кода фрагментного шейдера и кода приложения, которое инициализирует и использует эти шейдеры. В данной главе основное внимание уделяется именно шейдерам, а код приложения можно найти в разделе 7.11, после обсуждения API языка шейдеров OpenGL.

В первом примере будут подробно рассмотрены все детали - это поможет лучше усвоить информацию; в последующих примерах подробно будут рассматриваться только новые возможности, которых не было в предыдущих примерах.

.1. Обзор шейдера кирпичной стены

Один из приемов написания шейдеров состоит в том, чтобы сначала описать желаемый эффект, а потом определить, какие части функциональности должны быть реализованы в вершинном шейдере, а какие - во фрагментном, и как связать эти части через приложение.


⇐ Предыдущая| |Следующая ⇒