Перейти к содержанию

Изменение яркости моделей (Chams WH) C++


Рекомендуемые сообщения

Добрый день, столкнулся с такой проблемой, что в некоторых играх мелкие модели плохо видно.

Подскажите можно ли как-то увеличить яркость именно тех моделей, которые мне нужны и отключит динамическое освещение для них(чтобы цвет был однотонным и одинаковым всегда)...

float glow[4] = { 0.0f, 0.0f, 0.0f, 0.0f };pDev->SetPixelShaderConstantF(3, glow, 1);

Пробовал так, но освещение отключается для всех моделей =\

Ссылка на комментарий
Поделиться на другие сайты

void SetModelColor(LPDIRECT3DDEVICE9 pDevice, float r, float g, float b, float a, float glowr, float glowg, float glowb, float glowa)

{

float lightValues[4] = {r, g, b, a};

float glowValues[4] = {glowr, glowg, glowb, glowa};

pDevice->SetPixelShaderConstantF(1, lightValues, 1);

pDevice->SetPixelShaderConstantF(3, glowValues, 1);

}

Links: 1, 2, 3
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

void SetModelColor(LPDIRECT3DDEVICE9 pDevice, float r, float g, float b, float a, float glowr, float glowg, float glowb, float glowa){    float lightValues[4] = {r, g, b, a};    float glowValues[4] = {glowr, glowg, glowb, glowa};    pDevice->SetPixelShaderConstantF(1, lightValues, 1);    pDevice->SetPixelShaderConstantF(3, glowValues, 1);}
Links: 1, 2, 3

 

Благодарю, вчера уже пробовал таким методом подсвечивать, но увы и ах... он подсвечивает весь страйд или даже все страйды... что приводит к покрасению всей картинки(

Inside my stride the models don't glow but I get full-bright red chams, what have i done wrong?

Нашел вот еще что:

SetRenderState( D3DRS_FOGENABLE, D3DZB_FALSE );SetRenderState(D3DRS_LIGHTING, FALSE); 

Приду после работы попробую)

 

мой код:

	if ((NumVertices == 1646 || NumVertices == 7136 || NumVertices == 1940 || NumVertices == 735 || NumVertices == 408 || NumVertices == 7118 || NumVertices == 1440) && Stride == 32)		{			float glowValues[4] = { 0.0f, 0.0f, 0.0f, 0.5f }; //При изменении значений воздействует на всю картинку вцелом, а не только на выбранные объекты			pDev->SetPixelShaderConstantF(3, glowValues, 1);			pDev->SetRenderState(D3DRS_ZENABLE, FALSE);			pDev->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);			pDev->SetTexture(0, g_pTexRed);			oDrawIndexedPrimitive(pDev, PrimType, BaseVertexIndex,				MinVertexIndex, NumVertices, startIndex,				primCount);			pDev->SetRenderState(D3DRS_ZENABLE, TRUE);			pDev->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);			pDev->SetTexture(0, Green);		}
Изменено пользователем elvis66666
Ссылка на комментарий
Поделиться на другие сайты

Собственно вкурив кода и исходников, сделал вот так вот:

На выходе получаем за стеной - яркокрасные объекты, а на прямой видимости зеленые тектурки...

Вконце обязательно SetModelColor(pDev, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0, 1.0); нужно сделать, вернуть к первоначальному виду так сказать, иначе весь страйд 32 будет закрашен крассным!

В страйде 32, помимо моделей игроков, куча объектов игрового мира =\

 

Пробовал вот так:

закрашивать через шейдеры, но увы и ах, тоже работает на весь страйд, нужно обнулять после включения

И так знатоки, подскажите, мб я что-то делаю не так, или есть какая-то хитрость? как все же подсветить объекты(сделать поярче или отключить влияние источников света) на прямой видимости(за стенкой уже подсветил ^_^)...

NullAlex: Объемный код принято обрамлять в тег спойлера. Устное, последнее предупреждение

if (MinVertexIndex == 0 && NumVertices == 1646 && Stride == 32 && primCount == 950)		{					SetModelColor(pDev, 5.0, 0, 0, 5.0, 5.0, 0, 0, 8.0);			pDev->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);			pDev->SetRenderState(D3DRS_ALPHATESTENABLE, TRUE);						pDev->SetRenderState(D3DRS_LIGHTING, FALSE);			pDev->SetRenderState(D3DRS_ZENABLE, FALSE);			pDev->SetRenderState(D3DRS_FOGENABLE, D3DZB_FALSE);			pDev->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);			oDrawIndexedPrimitive(pDev, PrimType, BaseVertexIndex,								MinVertexIndex, NumVertices, startIndex,								primCount);									pDev->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);			pDev->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);			pDev->SetTexture(0, Green);			SetModelColor(pDev, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0, 1.0);					}
pDev->SetPixelShader(sAdd);
pDev->SetPixelShader(NULL);
Ссылка на комментарий
Поделиться на другие сайты

По третьей ссылке из поста2 (внутри темы). Там же есть кусок примера как рисуются разным цветом объекты на разной дистанции (близкие, далекие, очень далекие враги). Если тебе цвет разный не устраивает по дистанции, то можешь копать инфу по шейдерам. Именно в них задается опция  общего освещения у данной фигуры(модели) и какого цвета она будет, и многое другое.

 

Еще есть много форумов по игрострою на русском языке. Вот пример можешь там спросить.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.