<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Статьи]]></title>
    <link>https://habr.com/ru/users/loreglean/publications/articles/</link>
    <description><![CDATA[Хабр: статьи пользователя loreglean]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Sun, 03 May 2026 00:33:17 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[Software renderer — 2: растеризация и интерполяция атрибутов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/257107/</guid>
      <link>https://habr.com/ru/articles/257107/?utm_campaign=257107&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Привет. В <a href="http://habrahabr.ru/post/243011/">прошлой статье</a> я описал математику, которая необходима для вывода трехмерной сцены на экран в виде сетки — т.е. мы остановились на моменте получения координат вершин в пространстве экрана. Следующий шаг — это «заполнение» полигонов из которых состоит объект, т.е. поиск пикселей, которые входят в изображение объекта на экране. Процесс поиска этих точек называется растеризацией. Мы так же хотим иметь возможность текстурировать и освещать объекты — для этого необходимо уметь интерполировать атрибуты, заданные в вершинах (например, текстурные координаты, нормали, цвет и другие).<br/>
<br/>
Наши входные данные — это набор полигонов (мы будем рассматривать только треугольники): координаты их вершин (система координат зависит от алгоритма) и значения атрибутов в каждой из этих вершин, которые в дальнейшем будут интерполироваться вдоль поверхности треугольника. Существует несколько подводных камней, которые я рассмотрю в этой статье:<br/>
<ul>
<li>Правило заполнения пикселей (filling convention)</li>
<li>Точность</li>
<li>Коррекция перспективы при интерполяции аттрибутов (perspective-correct interpolation)</li>
</ul><br/>
Я рассмотрю три подхода к растеризации:<br/>
<ul>
<li>«стандартный» алгоритм, использующий наклон граней</li>
<li>целый ряд алгоритмов, основанных на использовании уравнений граней полигона (traversal-алгоритмы)</li>
<li>алгоритм растеризации в однородных координатах</li>
</ul><br/>
Так же в конце будет ссылка на проект, который является примером реализации, оттуда же будут и примеры кода.<br/>
 <a href="https://habr.com/ru/articles/257107/?utm_campaign=257107&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Mon, 20 Jul 2015 07:52:12 GMT</pubDate>
      <dc:creator><![CDATA[loreglean]]></dc:creator>
      <category><![CDATA[Разработка игр]]></category><category><![CDATA[Программирование]]></category>
      <category><![CDATA[gamedev]]></category><category><![CDATA[graphics]]></category><category><![CDATA[programming]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Software renderer — 1: матчасть]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/243011/</guid>
      <link>https://habr.com/ru/articles/243011/?utm_campaign=243011&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[Программный рендеринг (software rendering) — это процесс построения изображения без помощи GPU. Этот процесс может идти в одном из двух режимов: в реальном времени (вычисление большого числа кадров в секунду — необходимо для интерактивных приложений, например, игр) и в «оффлайн» режиме (при котором время, которое может быть потрачено на вычисление одного кадра, не ограничено настолько строго — вычисления могут длиться часы или даже дни). Я буду рассматривать только режим рендеринга в реальном времени.<br/>
<br/>
У этого подхода существуют как недостатки так и достоинства. Очевидным недостатком является производительность — CPU не в состоянии конкурировать с современными видеокартами в этой области. К достоинствам стоит причислить независимость от видеокарты — именно поэтому он используется как замена аппаратного рендеринга в случаях, когда видеокарта не поддерживает ту или иную возможность (так называемый software fallback). Существуют и проекты, цель которых — полностью заменить аппаратный рендеринг программным, например, WARP, входящий в состав Direct3D 11.<br/>
<br/>
Но главным плюсом является возможность написания подобного рендерера самостоятельно. Это служит образовательным целям и, на мой взгляд, это — самый лучший способ понять лежащие в основе алгоритмы и принципы.<br/>
<br/>
Это именно то, о чем будет рассказано в серии этих статей. Мы начнем с возможности закрашивать пиксель в окне заданным цветом и построим на этом возможность отрисовки трехмерной сцены в реальном времени, с движущимися текстурированными моделями и освещением, а так же с возможностью перемещаться по этой сцене.<br/>
<br/>
Но для того, чтобы вывести на экран хотя бы первый полигон, необходимо освоить математику, на которой это построено. Первая часть будет посвящена именно ей, поэтому в ней будет много различных матриц и прочей геометрии.<br/>
<br/>
В конце статьи будет ссылка на гитхаб проекта, который можно рассматривать как пример реализации.<br/>
 <a href="https://habr.com/ru/articles/243011/?utm_campaign=243011&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать дальше &rarr;</a>]]></description>
      
      <pubDate>Wed, 12 Nov 2014 10:40:00 GMT</pubDate>
      <dc:creator><![CDATA[loreglean]]></dc:creator>
      <category><![CDATA[Программирование]]></category><category><![CDATA[Разработка игр]]></category>
      <category><![CDATA[game development]]></category><category><![CDATA[graphics]]></category><category><![CDATA[tutorial]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
