<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2692191</guid>
        <pubDate>Wed, 08 Sep 2010 16:06:34 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2692191</link>
        <description><![CDATA[insolent: <strong class='tag-b'>Mikle</strong>, извините, что я вам мозги компосировал. Я узнал точное ТЗ, что я сам мин. требования к железу задаю, но чтобы не &quot;заигрывался&quot;. Уровень технологий - GeForce 6) Пока по книге Луна буду изучать HLSL..]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2691519</guid>
        <pubDate>Wed, 08 Sep 2010 05:39:04 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2691519</link>
        <description><![CDATA[Mikle: <strong class='tag-b'>insolent</strong><br>
Вторые шейдеры сейчас есть даже на встроенных интелах.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2691388</guid>
        <pubDate>Tue, 07 Sep 2010 20:00:02 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2691388</link>
        <description><![CDATA[insolent: <strong class='tag-b'>Mikle</strong>,с округление вверх хоть как-то позволило переходить на уровне, а при чистой ф-ле для W, тупо, одна смешеная текстура(<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=312121&view=findpost&p=2690446'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mikle &#064; <time class="tag-quote__quoted-time" datetime="2010-09-07T07:06:02+00:00">07.09.10, 07:06</time></span><div class='quote '>В этой статье</div></div><br>
Почитаю, нужно будет что-то добавить в проект, но там много про шейдеры, а я очень сомневаюсь, что на том железе, где буду сдавать я программу стоит мощная видеокарта(]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2690446</guid>
        <pubDate>Tue, 07 Sep 2010 07:06:02 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2690446</link>
        <description><![CDATA[Mikle: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=312121&view=findpost&p=2690224'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>insolent &#064; <time class="tag-quote__quoted-time" datetime="2010-09-06T19:26:43+00:00">06.09.10, 19:26</time></span><div class='quote '>Mikle, ceil. </div></div><br>
Я имел ввиду зачем? Почему не просто W?<br>
В этой статье в примере одна Volume текстура собирается из 64-х обычных:<br>
http://www.dtf.ru/articles/read.php?id=60912]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2690224</guid>
        <pubDate>Mon, 06 Sep 2010 19:26:43 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2690224</link>
        <description><![CDATA[insolent: <strong class='tag-b'>Mikle</strong>, <a class='tag-url' href='http://www.cplusplus.com/reference/clibrary/cmath/ceil/' target='_blank'>ceil</a>. Может, я не правильно текстуру делаю, вы можете показать, как вручную загружать текстуры в volume texture.<br>
<br>
ЗЫЖ а какие могут быть варианты такое плохого смешивания и наложения текстуры?]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2689651</guid>
        <pubDate>Mon, 06 Sep 2010 10:29:58 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2689651</link>
        <description><![CDATA[Mikle: <strong class='tag-b'>insolent</strong><br>
Не вижу ошибок...<br>
Что это:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">ceil(W));</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2687832</guid>
        <pubDate>Sat, 04 Sep 2010 07:30:58 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2687832</link>
        <description><![CDATA[insolent: <strong class='tag-b'>Mikle</strong>, вот:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bool Terrain::ComputeVertices()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;HRESULT hr = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hr = _device-&#62;CreateVertexBuffer(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_NumVertices * sizeof(TerrainVertex),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;D3DUSAGE_WRITEONLY,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TerrainVertex::FVF,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;D3DPOOL_MANAGED,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&amp;_vb,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(FAILED(hr))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Координаты, с которых начинается генерация вершин</div><div class="code_line">&nbsp;&nbsp; &nbsp;int startX = -_Width / 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int startZ = &nbsp;_Depth / 2;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Координаты, на которых завершается генерация вершин</div><div class="code_line">&nbsp;&nbsp; &nbsp;int endX = &nbsp;_Width / 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int endZ = -_Depth / 2;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;float KW = 1.0/(float)(_MaxY-_MinY);</div><div class="code_line">&nbsp;&nbsp; &nbsp;float KU = 1.0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;float KV = 1.0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Вычисляем приращение координат текстуры </div><div class="code_line">&nbsp;&nbsp; &nbsp;// при переходе от одной вершины к другой</div><div class="code_line">&nbsp;&nbsp; &nbsp;//float uCoordIncrementSize = 1.0f / (float)_NumCellsPerRow;</div><div class="code_line">&nbsp;&nbsp; &nbsp;//float vCoordIncrementSize = 1.0f / (float)_NumCellsPerCol;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TerrainVertex* v = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;_vb-&#62;Lock(0, 0, (void**)&amp;v, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int i = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int z = startZ; z &#62;= endZ; z -= _CellSpacing)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int j = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for(int x = startX; x &#60;= endX; x += _CellSpacing)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Вычисляем правильный индекс в буфер вершин</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// и карты высот на основании счетчиков вложенных циклов</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int index = i * _NumVertsPerRow + j;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;float U=x*KU;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;float V=z*KV;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;float W=(float)(_Heightmap[index]-_MinY)*KW*2.0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;v[index] = TerrainVertex(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)x,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)_Heightmap[index],</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)z,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)U,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)V,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ceil(W));</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;j++; // Следующий столбец</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;i++; // Следующая строка</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;_vb-&#62;Unlock();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return true;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">bool Terrain::ComputeIndices()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;HRESULT hr = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hr = _device-&#62;CreateIndexBuffer(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_NumTriangles * 3 * sizeof(WORD), // 3 индекса на треугольник</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;D3DUSAGE_WRITEONLY,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;D3DFMT_INDEX16,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;D3DPOOL_MANAGED,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&amp;_ib,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(FAILED(hr))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;WORD* indices = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;_ib-&#62;Lock(0, 0, (void**)&amp;indices, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Индекс, с которого начинается группа из 6 индексов,</div><div class="code_line">&nbsp;&nbsp; &nbsp;// описывающая два треугольника, образующий квадрат</div><div class="code_line">&nbsp;&nbsp; &nbsp;int baseIndex = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// В цикле вычисляется треугольник для каждого квадрата</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int i = 0; i &#60; _NumCellsPerCol; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for(int j = 0; j &#60; _NumCellsPerRow; j++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;indices[baseIndex] &nbsp; &nbsp; = &nbsp; i &nbsp; * _NumVertsPerRow + j;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;indices[baseIndex + 1] = &nbsp; i &nbsp; * _NumVertsPerRow + j + 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;indices[baseIndex + 2] = (i+1) * _NumVertsPerRow + j;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;indices[baseIndex + 3] = (i+1) * _NumVertsPerRow + j;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;indices[baseIndex + 4] = &nbsp; i &nbsp; * _NumVertsPerRow + j + 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;indices[baseIndex + 5] = (i+1) * _NumVertsPerRow + j + 1;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Следующий квадрат</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;baseIndex += 6;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;_ib-&#62;Unlock();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return true;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
W я ещё умножаю на 2, т.к. без умножения, вообще, одна текстура - результат смешивания всех уровней<br>
<br>
Вот процедура загрузки текстуры:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bool Terrain::LoadTexture(std::string fileName)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;HRESULT hr = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;/*hr = D3DXCreateTextureFromFile(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_device,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fileName.c_str(),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&amp;_tex);*/</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hr = D3DXCreateVolumeTextureFromFile(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_device,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fileName.c_str(),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&amp;_tex);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(FAILED(hr))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return true;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2687816</guid>
        <pubDate>Sat, 04 Sep 2010 06:25:05 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2687816</link>
        <description><![CDATA[Mikle: Что-то не правильно...<br>
Ты правильно понял, тут X, Y и Z - координаты (позиция) вертекса, а не индексы:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">U=X*KU</div><div class="code_line">V=Z*KV</div><div class="code_line">W=(Y-MinY)*KW</div><div class="code_line">KW=1/(MaxY-MinY)</div></ol></div></div></div></div><br>
Дай весь код генерации вертексного и индексного буферов.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2687763</guid>
        <pubDate>Fri, 03 Sep 2010 21:45:46 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2687763</link>
        <description><![CDATA[insolent: Так как я так и не понял, как загружать на каждый уровень текстуру я в DirectX Texture Tool создал текстуру из 3 уровней и загружал в программе.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Device-&#62;SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Device-&#62;SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);</div><div class="code_line">&nbsp;&nbsp; &nbsp;//Device-&#62;SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Device-&#62;SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 1 );</div><div class="code_line">&nbsp;&nbsp; &nbsp;Device-&#62;SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE );</div><div class="code_line">&nbsp;&nbsp; &nbsp;Device-&#62;SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT );</div><div class="code_line">&nbsp;&nbsp; &nbsp;Device-&#62;SetTextureStageState( 1, D3DTSS_COLOROP, &nbsp; D3DTOP_MODULATE2X );</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Device-&#62;SetSamplerState(0, D3DSAMP_ADDRESSW, D3DTADDRESS_MIRROR);</div></ol></div></div></div></div><br>
<br>
Текстура налаживается по идиотски, смешиваются + Нужно что-то добавить в ф-лу W=(Y-MinY)*KW, т.к. у меня макс. высота - 255 и на другие уровни оно плохо переходит.<br>
<br>
<a class='tag-url' href='http://radikal.ru/F/s006.radikal.ru/i215/1009/c8/2907a1402b62.jpg.html' target='_blank'><img class='tag-img' src='http://s006.radikal.ru/i215/1009/c8/2907a1402b62t.jpg' alt='user posted image'></a>]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2686848</guid>
        <pubDate>Fri, 03 Sep 2010 09:02:15 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2686848</link>
        <description><![CDATA[Mikle: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=312121&view=findpost&p=2686347'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>insolent &#064; <time class="tag-quote__quoted-time" datetime="2010-09-02T17:52:37+00:00">02.09.10, 17:52</time></span><div class='quote '>FVF = D3DFVF_XYZ | D3DFVF_TEX1;</div></div><br>
Для Volume нужно ещё D3DFVF_TEXCOORDSIZE указывать.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2686347</guid>
        <pubDate>Thu, 02 Sep 2010 17:52:37 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2686347</link>
        <description><![CDATA[insolent: <strong class='tag-b'>Mikle</strong>, вот моя структура вершины:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">struct TerrainVertex</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Описываем структуру для хранения данных вершин </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// и приводим описание настраивамого формата вершин для этой структуры</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// Структура вершин содержит только информацию о </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// местоположении вершины и текстуре</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TerrainVertex(){}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TerrainVertex(float x, float y, float z, </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;float u, float v, float w)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_x &nbsp;= x; &nbsp; _y = y; &nbsp; _z = z;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;_u &nbsp;= u; &nbsp;_v &nbsp;= v; &nbsp; _w = w;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;float &nbsp;_x, &nbsp;_y, &nbsp;_z;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;float _u, _v, &nbsp; &nbsp;_w; // координаты текстуры</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;static const DWORD FVF;</div><div class="code_line">&nbsp;&nbsp; &nbsp;};</div><div class="code_line">&nbsp;</div><div class="code_line">const DWORD Terrain::TerrainVertex::FVF = D3DFVF_XYZ | D3DFVF_TEX1;</div></ol></div></div></div></div><br>
<br>
Вот моя процедура вычисления вершин:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">HRESULT hr = 0;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;hr = _device-&#62;CreateVertexBuffer(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;_NumVertices * sizeof(TerrainVertex),</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;D3DUSAGE_WRITEONLY,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;TerrainVertex::FVF,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;D3DPOOL_MANAGED,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&amp;_vb,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if(FAILED(hr))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return false;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Координаты, с которых начинается генерация вершин</div><div class="code_line">&nbsp;&nbsp; &nbsp;int startX = -_Width / 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int startZ = &nbsp;_Depth / 2;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Координаты, на которых завершается генерация вершин</div><div class="code_line">&nbsp;&nbsp; &nbsp;int endX = &nbsp;_Width / 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int endZ = -_Depth / 2;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;float KW = 1/(MaxY-MinY);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;float KU = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;float KV = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;float U=X*KU;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;float V=Z*KV;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;float W=(Y-MinY)*KW;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;TerrainVertex* v = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;_vb-&#62;Lock(0, 0, (void**)&amp;v, 0);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int i = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for(int z = startZ; z &#62;= endZ; z -= _CellSpacing)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;int j = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for(int x = startX; x &#60;= endX; x += _CellSpacing)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// Вычисляем правильный индекс в буфер вершин</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// и карты высот на основании счетчиков вложенных циклов</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int index = i * _NumVertsPerRow + j;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;v[index] = TerrainVertex(</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)x,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)_Heightmap[index],</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)z,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)U,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(float)V,</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(int)W);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;j++; // Следующий столбец</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;i++; // Следующая строка</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;_vb-&#62;Unlock();</div></ol></div></div></div></div>]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2685610</guid>
        <pubDate>Thu, 02 Sep 2010 09:10:39 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2685610</link>
        <description><![CDATA[Mikle: Можно вычислить текстурные координаты и при создании вертексного буфера, только это бкдет не две, а три координаты на вершину. Вычислять по той же формуле, KU и KV для начала поставь =1, потом будешь вручную подбирать, откуда брать KW - я написал, DW там нет, это я лишнюю константу скопипастил :).<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=312121&view=findpost&p=2685532'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>insolent &#064; <time class="tag-quote__quoted-time" datetime="2010-09-02T08:24:42+00:00">02.09.10, 08:24</time></span><div class='quote '>вычислять координаты для текстуры или, как вы мне объяснили только для всего полигона?</div></div><br>
Вопрос непонятен - текстурные координаты вычисляют не для текстуры и не для полигона, а для каждого вертекса.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2685532</guid>
        <pubDate>Thu, 02 Sep 2010 08:24:42 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2685532</link>
        <description><![CDATA[insolent: ОМГ&#33; Мне, пока, хотя бы с обыкновенным разобраться, а уже за шейдеры браться(Я учусь по книге Луна и шейдеры там на последок). Я же могу при генерации вершин так же вычислять координаты для текстуры или, как вы мне объяснили только для всего полигона? А в каких пределах брать KU, KV, DW и KW. + нужно разобраться в VolumeTexture]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2685397</guid>
        <pubDate>Thu, 02 Sep 2010 06:23:33 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2685397</link>
        <description><![CDATA[Mikle: <strong class='tag-b'>insolent</strong><br>
Если возможности шейдеров, вплоть до PS1_3 включительно, ПОЧТИ полностью можно повторить на FFP, то PS1_4, а тем более PS2_0 и выше, уже на FFP не сымитируешь. Примерно то же с вертексными шейдерами, только там бОльшая гибкость была уже даже в VS1_0.<br>
Пора переходить на шейдеры :).]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2685268</guid>
        <pubDate>Wed, 01 Sep 2010 21:17:04 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2685268</link>
        <description><![CDATA[insolent: <strong class='tag-b'>Mikle</strong>, текстуры в разных dds. Как это без вшивания в вершину? Хоть и в моем проекты я не вшивал, но другому способу текстурирования я не знаю :( Шейдеры не изучал..]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2683905</guid>
        <pubDate>Tue, 31 Aug 2010 11:21:47 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2683905</link>
        <description><![CDATA[Mikle: Зачем вообще зашивать в вертекс текстурные координаты, если у нас регулярная сетка?<br>
Получаем U, умножая X на KU:<br>
U=X*KU<br>
соответственно остальные:<br>
V=Z*KV<br>
W=(Y-MinY)*KW<br>
Всё это в шейдере.<br>
KU, KV, DW и KW - константы. Чем больше KU и KV - тем мельче текстура (чаще повторяется). <br>
KW=1/(MaxY-MinY)<br>
MinY и MaxY - минимальная и максимальная высота.<br>
D3DSAMP_ADDRESSW лучше сделать равным D3DTADDRESS_MIRROR или D3DTADDRESS_CLAMP.<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Для загрузки текстур в уровни использовать D3DXCreateVolumeTextureFromFileEx? </div></div><br>
Почему нет, если у тебя есть готовый DDS с набором текстур?<br>
Если нет - грузим каждую текстуру самостоятельно, потом Lock - и перенос в Volume.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2683821</guid>
        <pubDate>Tue, 31 Aug 2010 10:13:33 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2683821</link>
        <description><![CDATA[insolent: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=312121&view=findpost&p=2683755'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Mikle &#064; <time class="tag-quote__quoted-time" datetime="2010-08-31T09:25:33+00:00">31.08.10, 09:25</time></span><div class='quote '>умножать height на подобранную константу</div></div><br>
Можно поподробнее? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2010-08-31T10:33:35+00:00">31.08.10, 10:33</time></span></span><br>
Для загрузки текстур в уровни использовать D3DXCreateVolumeTextureFromFileEx?]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2683755</guid>
        <pubDate>Tue, 31 Aug 2010 09:25:33 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2683755</link>
        <description><![CDATA[Mikle: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>В Volume Texture уровни смешиваются?</div></div><br>
Если включить мипфильтр, то смешиваются, то есть между травой и камнями, например, будет плавная граница. Для этого лучше убрать блок if, и просто умножать height на подобранную константу.]]></description>
        <author>Mikle</author>
        <category>Программирование графики</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2683689</guid>
        <pubDate>Tue, 31 Aug 2010 08:34:50 +0000</pubDate>
        <title>Тектурирование</title>
        <link>https://forum.sources.ru/index.php?showtopic=312121&amp;view=findpost&amp;p=2683689</link>
        <description><![CDATA[insolent: Есть ландшафт, построенный на карте высот. Его нужно текстурирование: снег/трава/камни. Пытаюсь понять Volume Texture(может есть более лучший вариант?), возникли вопросы: как правильно вычислить уровень w и координаты u и v текстуры для полигона. Если с уровнем w немного понятно: 0 - камни, 1 - трава и 2 - снег.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">if( (height) &#60; 42.5f ) &nbsp; &nbsp; &nbsp; &nbsp;w = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;else if( (height) &#60; 205.0f ) &nbsp;w = 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;else &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;w = 2;</div></ol></div></div></div></div><br>
Если добавить переходы, то число уровней возрастет в несколько раз, то все равно нужно будет вручную вычислять высоты для каждого уровня?<br>
<br>
Как правильно вычислить координаты текстуры? В Volume Texture уровни смешиваются? От этого результат не пострадает?<br>
<br>
<a class='tag-url' href='http://narod.ru/disk/24306337000/Terrain.7z.html' target='_blank'>Terrain.7z</a>]]></description>
        <author>insolent</author>
        <category>Программирование графики</category>
      </item>
	
      </channel>
      </rss>
	