Москвич-408 — элегантность, ставшая классикой

Тема в разделе "Vulkan", создана пользователем ml64, 25 июл 2026 в 21:51.

  1. ml64

    ml64 Member

    Публикаций:
    0
    Регистрация:
    29 окт 2017
    Сообщения:
    66
    Друзья, сегодня хочу поговорить об автомобиле, который для многих из нас является не просто машиной, а настоящим произведением инженерного и дизайнерского искусства.
    Речь, конечно же, о Москвиче-408.

    FR_01.jpg

    Историческая справка


    Первый экземпляр собрали в 1964 году, а серийное производство стартовало осенью того же года. Автомобиль выпускался на МЗМА (позднее АЗЛК) в Москве, а с 1966 года — и на Ижевском автозаводе.
    R_01.jpg

    Дизайн: революция на фоне эволюции


    Москвич-408 многое унаследовал от предшественников – моделей 403 и 407. Однако кузов 408-го был абсолютно новым и стилистически революционным. Если «Москвич-407» представлял собой классическую «круглую мыльницу» в стилистике 50-х годов, то 408-й предлагал совершенно иной подход — лаконичный, гармоничный и элегантный.
    В его облике читался «плоскостной» дизайн – прямые линии в сочетании с плоскими поверхностями. Фирменный «нос» с обратным наклоном радиаторной решётки и небольшими «капюшонами» над фарами стал настоящей визитной карточкой. Автомобиль получил панорамные переднее и заднее стёкла и изящные вертикальные задние фонари «а-ля Чайка».
    На момент начала производства — осень 1964 года — «Москвич-408» выглядел очень современно, даже ультрамодно. Он ничуть не уступал своим зарубежным аналогам: американо-британскому Ford Cortina, французскому Renault 8/10 или немецкому Opel Kadett.

    Rear_02.jpg

    Утрата элегантности: рестайлинг 1969 года


    C 6 декабря 1969 года с конвейера АЗЛК стали сходить видоизменённые 408-е и 412-е. Обе модели получили одинаковые изменения в экстерьере в рамках унификации:
    Круглые фары заменили на прямоугольные.
    Вертикальные задние фонари уступили место горизонтальным.
    Изменилась крышка багажника.
    Да, возможно, это было продиктовано производственной необходимостью и желанием освежить автомобиль. Но, коллеги, я позволю себе высказать крамольную мысль: это была потеря. Потеря той самой уникальной элегантности, того шарма, который делал «Москвич-408» узнаваемым с первого взгляда. Горизонтальные фонари сделали корму более обыденной, лишив её той изюминки, что была у вертикальных «чаек».

    Техническая характеристика


    По технической части «Москвич-408» был вполне прогрессивен для своего времени:
    ПараметрЗначение
    Тип кузоваЦельнометаллический седан несущего типа
    Габариты4090 x 1550 x 1480 мм
    Колёсная база2400 мм
    ДвигательБензиновый, рядный 4-цилиндровый
    Мощность50 л.с.
    Коробка передачМеханическая, 4-ступенчатая (рычаг на рулевой колонке)
    Максимальная скорость120 км/ч
    Разгон до 100 км/ч29 с
    Снаряжённая масса990 кг

    Завершение эпохи


    Производство «Москвича-408» продолжалось до декабря 1975 года. На смену ему с февраля 1976 года пришло семейство «Москвич-2138». Так закончилась история одной из самых стильных советских малолитражек.
    RL_01.jpg
     

    Вложения:

    Последнее редактирование: 28 июл 2026 в 15:44
    Mikl___, GRAFik и Application нравится это.
  2. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    534
    ml64, SUPER !!! Прям образец для сложного проекта MASM64.
    У меня если что, дилетантский, наверно, вопрос, поэтому сильно не пинайте. :)
    Если у меня видеокарта не будет поддерживать Вулкан, ну и соответственно драйвер не заработает, то этот проект, который в этом треде ( Москвич-408 — элегантность, ставшая классикой ) возможно ли переделать под обычный стандартный OpenGL, чтобы на любых компьютерах запускался ? Или это нереально, т.к. много кода придётся переделывать ?
     
  3. ml64

    ml64 Member

    Публикаций:
    0
    Регистрация:
    29 окт 2017
    Сообщения:
    66
    Да, возможно.
    Это приложение состоит из четырёх независимых блоков:
    • app (всё, что связано с WinAPI),
    • vk (среда Vulkan),
    • obj (файлы 3D-модели .obj и .mat, а также парсеры вершин, нормалей, полигонов и материалов) и
    • SPIR-V (вершинный и фрагментный шейдеры).
    Достаточно заменить контекст vk на контекст OpenGL.
    У меня пока нет готового кода на MASM, но во вложении подходящий код на VBA.
    В теме РБМК и движок OpenGL на MASM объект рисуется по модели OpenGL 1.0 (как у NeHe), а во вложенном файле Immediate mode заменён на vertex arrays.
    Было ~65 000 вызовов DLL за кадр (glBegin / glVertex3f / glNormal3fv / glTranslatef / glMaterialfv) -> стало ~15. Вся сетка (11 520 квадов) рисуется одним glDrawArrays.
    И вот этой функции glDrawArrays можно передать данные, полученные от парсера .obj-файла:

    Код (Text):
    1. Call glVertexPointer(3, GL_FLOAT, 0, lpVerts)
    2. Call glNormalPointer(GL_FLOAT, 0, lpNorms)
    3. Call glColorPointer(3, GL_FLOAT, 0, lpCols)
    4. Call glDrawArrays(GL_QUADS, 0, gVertCount)
     

    Вложения:

    Последнее редактирование: 26 июл 2026 в 09:44
    Mikl___ нравится это.
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    4.267
    Уроки от NeHe на masm64
     
    Application нравится это.
  5. ml64

    ml64 Member

    Публикаций:
    0
    Регистрация:
    29 окт 2017
    Сообщения:
    66
    Да, и мой OpenGL микро-движок был основан на уроке 10 NeHe. Но это OpenGL 1.0:

    Код (C):
    1.     for (int loop_m = 0; loop_m < numtriangles; loop_m++)
    2.     {
    3.         glBegin(GL_TRIANGLES);
    4.             glNormal3f( 0.0f, 0.0f, 1.0f);
    5.             x_m = sector1.triangle[loop_m].vertex[0].x;
    6.             y_m = sector1.triangle[loop_m].vertex[0].y;
    7.             z_m = sector1.triangle[loop_m].vertex[0].z;
    8.             u_m = sector1.triangle[loop_m].vertex[0].u;
    9.             v_m = sector1.triangle[loop_m].vertex[0].v;
    10.             glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
    11.    
    12.             x_m = sector1.triangle[loop_m].vertex[1].x;
    13.             y_m = sector1.triangle[loop_m].vertex[1].y;
    14.             z_m = sector1.triangle[loop_m].vertex[1].z;
    15.             u_m = sector1.triangle[loop_m].vertex[1].u;
    16.             v_m = sector1.triangle[loop_m].vertex[1].v;
    17.             glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
    18.    
    19.             x_m = sector1.triangle[loop_m].vertex[2].x;
    20.             y_m = sector1.triangle[loop_m].vertex[2].y;
    21.             z_m = sector1.triangle[loop_m].vertex[2].z;
    22.             u_m = sector1.triangle[loop_m].vertex[2].u;
    23.             v_m = sector1.triangle[loop_m].vertex[2].v;
    24.             glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
    25.         glEnd();
    26.     }
    Для примера NeHe это было допустимо. Но современные 3D-модели содержат огромное количество полигонов. Например, этот "Москвич":
    И для отрисовки каждого полигона уже нельзя вызывать glBegin/glEnd.
    Теперь из вершин, нормалей, индексов и материалов формируются массивы, загружаются в G-RAM, и дальше с ними работает GPU.
    Поэтому Vulkan можно условно заменить только на OpenGL 4.0+ с VAO/VBO/EBO и шейдерами:

    Код (C):
    1. // Настройка VAO/VBO один раз
    2. glBindVertexArray(vao);
    3. glBindBuffer(GL_ARRAY_BUFFER, vbo);
    4. glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(Vertex), vertices.data(), GL_STATIC_DRAW);
    5. glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ebo);
    6. glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices.size() * sizeof(unsigned int), indices.data(), GL_STATIC_DRAW);
    7. // ... настройка атрибутов ...
    8. // Отрисовка каждого кадра:
    9. glDrawElements(GL_TRIANGLES, indices.size(), GL_UNSIGNED_INT, 0);
     
    Последнее редактирование: 26 июл 2026 в 13:16
    GRAFik нравится это.
  6. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    534
    ml64, OpenGL у меня, скорее всего, не ниже 4.x, несмотря на возраст видеокарты, а вот Вулкан она не поддерживает. В связи с этим вопрос: если я вас попрошу переделать проект под мою видеокарту - вы мне откажете, потому что это сложно и долго или можете пойти на встречу, если я буду себя хорошо вести ? :)
     
  7. Application

    Application Active Member

    Публикаций:
    1
    Регистрация:
    29 мар 2021
    Сообщения:
    390
    Если только не хорошо, а элегантно.
     
  8. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    534
    Согласен. Могу даже пошло и похабно, по отношению к Дефексекову. :)
     
  9. ml64

    ml64 Member

    Публикаций:
    0
    Регистрация:
    29 окт 2017
    Сообщения:
    66
    Без проблем, но сначала мне нужно закончить с Вулканом. Я сейчас пишу парсер материалов. Как только "Москвич" станет синим, а не радужным, я смогу переключиться на OpenGL.
    Но за это время Вы можете и сами это сделать - примерный код на VBA я дал. Перевести на ассемблер - дело техники.
    На Вулкане самое сложное - это следить за структурами. У OpenGL только одна большая структура - pfd. Так что там всё намного проще.
     
  10. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    534
    Страшновато мне что-то самому это переделывать. Размер кода приличный для ассемблера, боюсь что-нибуть напутать. Лучше подожду вас. Мне же не горит, торопиться некуда.
     
  11. ml64

    ml64 Member

    Публикаций:
    0
    Регистрация:
    29 окт 2017
    Сообщения:
    66
    У меня "Москвич" уже синий (в смысле: парсер материалов в целом готов), но нет ни прозрачности, ни отражений.

    Сейчас вот так:
    FL_01.jpg


    А надо, чтобы было вот так:
    FL_02.jpg

    Так что придётся подождать
    --- Сообщение объединено, 28 июл 2026 в 05:20 ---
    Освещение надо добавить
    RR_01.jpeg

    Чтобы было вот так:
    RR_02.jpeg



     

    Вложения:

    • m408_35.zip
      Размер файла:
      450,4 КБ
      Просмотров:
      1
    Application и Mikl___ нравится это.
  12. GRAFik

    GRAFik Active Member

    Публикаций:
    0
    Регистрация:
    14 мар 2020
    Сообщения:
    534
    Ну, в общем, как я посмотрю, прям целая программа 3D MAX на MASM64 вырисовывается. :)
     
    Application нравится это.
  13. ml64

    ml64 Member

    Публикаций:
    0
    Регистрация:
    29 окт 2017
    Сообщения:
    66
    Исправил серьёзный баг, который мешал запускаться на интегрированных GPU.
    Ну и бонусом подправил цвета (пока не настроены Ambient, Specular и Transparency - всё имитируется одним Diffuse)

    FR_02.jpg
     

    Вложения: