elvis66666 Опубликовано 18 сентября, 2015 Поделиться Опубликовано 18 сентября, 2015 Добрый день, столкнулся с такой проблемой, что в некоторых играх мелкие модели плохо видно.Подскажите можно ли как-то увеличить яркость именно тех моделей, которые мне нужны и отключит динамическое освещение для них(чтобы цвет был однотонным и одинаковым всегда)...float glow[4] = { 0.0f, 0.0f, 0.0f, 0.0f };pDev->SetPixelShaderConstantF(3, glow, 1);Пробовал так, но освещение отключается для всех моделей =\ Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 сентября, 2015 Поделиться Опубликовано 18 сентября, 2015 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 18 сентября, 2015 Автор Поделиться Опубликовано 18 сентября, 2015 (изменено) 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); } Изменено 18 сентября, 2015 пользователем elvis66666 Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 18 сентября, 2015 Автор Поделиться Опубликовано 18 сентября, 2015 Собственно вкурив кода и исходников, сделал вот так вот:На выходе получаем за стеной - яркокрасные объекты, а на прямой видимости зеленые тектурки...Вконце обязательно 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); Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 19 сентября, 2015 Поделиться Опубликовано 19 сентября, 2015 По третьей ссылке из поста2 (внутри темы). Там же есть кусок примера как рисуются разным цветом объекты на разной дистанции (близкие, далекие, очень далекие враги). Если тебе цвет разный не устраивает по дистанции, то можешь копать инфу по шейдерам. Именно в них задается опция общего освещения у данной фигуры(модели) и какого цвета она будет, и многое другое. Еще есть много форумов по игрострою на русском языке. Вот пример можешь там спросить. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения