Вопрос Imgui blur directx 11

Начинающий
Статус
Оффлайн
Регистрация
13 Сен 2023
Сообщения
17
Реакции[?]
1
Поинты[?]
1K
блять как это сделать. нашел максимум блюр для дх9, но там ваще не то
 
HvH Legend
Забаненный
Статус
Оффлайн
Регистрация
23 Окт 2022
Сообщения
391
Реакции[?]
96
Поинты[?]
26K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
8 Сен 2023
Сообщения
42
Реакции[?]
8
Поинты[?]
8K
HvH Legend
Забаненный
Статус
Оффлайн
Регистрация
23 Окт 2022
Сообщения
391
Реакции[?]
96
Поинты[?]
26K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Пользователь
Статус
Оффлайн
Регистрация
22 Июн 2020
Сообщения
185
Реакции[?]
69
Поинты[?]
41K
там direct9 пастер
пастерок, если все правильно сделать, то на чем угодно будет нормально блюр работать, а уж на директ икс 11 тем более

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

немного потыкать сурсы другие с блюром можно link
ну и еще можно подебажить как делает это игра с помощью мощной штучки -
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Пользователь
Статус
Оффлайн
Регистрация
8 Июн 2020
Сообщения
196
Реакции[?]
63
Поинты[?]
28K
пастерок, если все правильно сделать, то на чем угодно будет нормально блюр работать, а уж на директ икс 11 тем более


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

немного потыкать сурсы другие с блюром можно link
ну и еще можно подебажить как делает это игра с помощью мощной штучки -
Пожалуйста, авторизуйтесь для просмотра ссылки.
А если у меня нормальная видюха а не nvidia будет работать ?
 
Пользователь
Статус
Оффлайн
Регистрация
22 Июн 2020
Сообщения
185
Реакции[?]
69
Поинты[?]
41K
Начинающий
Статус
Оффлайн
Регистрация
8 Сен 2023
Сообщения
42
Реакции[?]
8
Поинты[?]
8K
пастерок, если все правильно сделать, то на чем угодно будет нормально блюр работать, а уж на директ икс 11 тем более


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

немного потыкать сурсы другие с блюром можно link
ну и еще можно подебажить как делает это игра с помощью мощной штучки -
Пожалуйста, авторизуйтесь для просмотра ссылки.
ало долбаёб ты сам нихуя не знаешь и подпёздываешь дак и ещё сурсы на кс 2 кидаешь
пастерок, если все правильно сделать, то на чем угодно будет нормально блюр работать, а уж на директ икс 11 тем более


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

немного потыкать сурсы другие с блюром можно link
ну и еще можно подебажить как делает это игра с помощью мощной штучки -
Пожалуйста, авторизуйтесь для просмотра ссылки.
дак ещё и dx11 блюрчик незя там урезаны шейдеры
 
Пользователь
Статус
Оффлайн
Регистрация
22 Июн 2020
Сообщения
185
Реакции[?]
69
Поинты[?]
41K
ты сам нихуя не знаешь
да ты че, правда что ли? ну ладно, значит каким то чудом я сделал блюр который хавает 0 фпс
дак ещё и dx11 блюрчик незя там урезаны шейдеры
мне кажется у тебя мозг урезан, если ты не можешь документацию почитать и понять, что все там круто, и круче чем dx9
 
Начинающий
Статус
Оффлайн
Регистрация
31 Мар 2024
Сообщения
71
Реакции[?]
14
Поинты[?]
15K
Мега хардово наверное накидать / найти шейдеры под дх11 блюр да...

blurX:
struct PS_INPUT {
    float4 pos : SV_POSITION;
    float4 col : COLOR0;
    float2 uv : TEXCOORD0;
};

Texture2D tex_source : TEX_SOURCE;
sampler tex_sampler;

cbuffer pixel_buffer : register(b0) {
    float2 clamp_coordinats;
    float texel_width;
};

static const float offsets[3] = { 0.0f, 1.3846153846f, 3.2307692308f };
static const float weights[3] = { 0.2270270270f, 0.3162162162f, 0.0702702703f };

float4 main(PS_INPUT input) : SV_Target {
    float4 color = tex_source.Sample(tex_sampler, input.uv);
    color *= weights[0];
    
    for (int i = 1; i < 3; ++i) {
        float left = clamp(input.uv.x - texel_width * offsets[i], clamp_coordinats.x, clamp_coordinats.y);
        float right = clamp(input.uv.x + texel_width * offsets[i], clamp_coordinats.x, clamp_coordinats.y);
        color += tex_source.Sample(tex_sampler, float2(left, input.uv.y)) * weights[i];
        color += tex_source.Sample(tex_sampler, float2(right, input.uv.y)) * weights[i];
    }

    return color;
}
blurY:
struct PS_INPUT {
    float4 pos : SV_POSITION;
    float4 col : COLOR0;
    float2 uv : TEXCOORD0;
};

Texture2D tex_source : TEX_SOURCE;
sampler tex_sampler;

cbuffer pixel_buffer : register(b0) {
    float2 clamp_coordinats;
    float texel_height;
};

static const float offsets[3] = { 0.0f, 1.3846153846f, 3.2307692308f };
static const float weights[3] = { 0.2270270270f, 0.3162162162f, 0.0702702703f };

float4 main(PS_INPUT input) : SV_Target {
    float4 color = tex_source.Sample(tex_sampler, input.uv);
    color *= weights[0];
    
    for (int i = 1; i < 3; ++i) {
        float upper = clamp(input.uv.y - texel_height * offsets[i], clamp_coordinats.x, clamp_coordinats.y);
        float bottom = clamp(input.uv.y + texel_height * offsets[i], clamp_coordinats.x, clamp_coordinats.y);
        color += tex_source.Sample(tex_sampler, float2(input.uv.x, upper)) * weights[i];
        color += tex_source.Sample(tex_sampler, float2(input.uv.x, bottom)) * weights[i];
    }

    return color;
}
 
Пользователь
Статус
Оффлайн
Регистрация
22 Июн 2020
Сообщения
185
Реакции[?]
69
Поинты[?]
41K
Мега хардово наверное накидать / найти шейдеры под дх11 блюр да...

blurX:
struct PS_INPUT {
    float4 pos : SV_POSITION;
    float4 col : COLOR0;
    float2 uv : TEXCOORD0;
};

Texture2D tex_source : TEX_SOURCE;
sampler tex_sampler;

cbuffer pixel_buffer : register(b0) {
    float2 clamp_coordinats;
    float texel_width;
};

static const float offsets[3] = { 0.0f, 1.3846153846f, 3.2307692308f };
static const float weights[3] = { 0.2270270270f, 0.3162162162f, 0.0702702703f };

float4 main(PS_INPUT input) : SV_Target {
    float4 color = tex_source.Sample(tex_sampler, input.uv);
    color *= weights[0];
  
    for (int i = 1; i < 3; ++i) {
        float left = clamp(input.uv.x - texel_width * offsets[i], clamp_coordinats.x, clamp_coordinats.y);
        float right = clamp(input.uv.x + texel_width * offsets[i], clamp_coordinats.x, clamp_coordinats.y);
        color += tex_source.Sample(tex_sampler, float2(left, input.uv.y)) * weights[i];
        color += tex_source.Sample(tex_sampler, float2(right, input.uv.y)) * weights[i];
    }

    return color;
}
blurY:
struct PS_INPUT {
    float4 pos : SV_POSITION;
    float4 col : COLOR0;
    float2 uv : TEXCOORD0;
};

Texture2D tex_source : TEX_SOURCE;
sampler tex_sampler;

cbuffer pixel_buffer : register(b0) {
    float2 clamp_coordinats;
    float texel_height;
};

static const float offsets[3] = { 0.0f, 1.3846153846f, 3.2307692308f };
static const float weights[3] = { 0.2270270270f, 0.3162162162f, 0.0702702703f };

float4 main(PS_INPUT input) : SV_Target {
    float4 color = tex_source.Sample(tex_sampler, input.uv);
    color *= weights[0];
  
    for (int i = 1; i < 3; ++i) {
        float upper = clamp(input.uv.y - texel_height * offsets[i], clamp_coordinats.x, clamp_coordinats.y);
        float bottom = clamp(input.uv.y + texel_height * offsets[i], clamp_coordinats.x, clamp_coordinats.y);
        color += tex_source.Sample(tex_sampler, float2(input.uv.x, upper)) * weights[i];
        color += tex_source.Sample(tex_sampler, float2(input.uv.x, bottom)) * weights[i];
    }

    return color;
}
Ну это же очень малая часть, так ещё и со статическим размером блюра, хотя +- норм
 
Последнее редактирование:
Похожие темы
Сверху Снизу