Как вытянуть шейдеры из готовых програм?

Тема в разделе "WASM.DirectX", создана пользователем Dart_Bobr, 18 ноя 2004.

  1. Dart_Bobr

    Dart_Bobr New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    100
    Адрес:
    Ukraine
    Я слышал что можно из проги без исходника можна вытянуть шейдеры которые там используются(странно в Google я про этот топик ничего не нашел)! Ну, вроде запустил свою прогу для ловли шейдеров, запустил ту с которой хочешь эти шейдеры вытянуть, и по завершению работы работы имеешь все шейдеры!

    А как это можна реализовать в своей проге?
     
  2. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    Dart_Bobr

    А что такое шейдеры?
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Dart_Bobr



    Все зависит от того, в каком виде ты хочешь получить свой "шейдер".



    1. GLSL: glGetShaderSourceARB

    2. Низкоуровневые на OpenGL: glGetProgramStringARB

    3. Direct3D: В душе не знаю :)



    Проблемма в том, чтобы приаттачить чужой рендеринг контекст к своему процессу. И я был бы очень рад если бы кто-нибудь рассказал, как это сделать.



    captain cobalt

    Ну это такая штука, понимаешь, шейдер. (С) "Бобик в гостях у Барбоса".
     
  4. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    У меня есть какая-то ati'шная демка, дык в ней есть файл Sushi.ati, который при поверхностном осмотре оказался zip содержащим кучу файлов примерно такого содержания:
    Код (Text):
    1. ps.1.4
    2.  
    3. texld r0, t0   // Base1
    4.    mul      r0.rgb, r0, v0_x2
    5.  


    Так что наверное возможны и другие пути ?
     
  5. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    На винте шейдеры могут быть закриптованы.



    С помощью айса:



    wglGetProcAddress нужной функции.

    Далее breakpoint на нее и все. Взяли адрес и длину из стека и сохранили текст из данных.
     
  6. Dart_Bobr

    Dart_Bobr New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    100
    Адрес:
    Ukraine
    _DEN_



    Вот-вот я тоже хотел бы об этом узнать!



    Не знал что на GL тоже можна шейдеры юзать. Там же вроди только расширения типа ARB, CG и т. д.



    S_T_A_S_

    Так это на винте шейдеры. А я так понимаю их можна из памяти тырить. Тем более что делать когда прога весит 2 гига, и шейдеры где-то в ней закриптованы. Их в коде можна искать до пенсии.
     
  7. jekyll

    jekyll New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2003
    Сообщения:
    92
    Адрес:
    Russia
    2 all

    Интересые вы все. Ну предположим мы приаттачились к чужому RC, а дальше что?

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



    Dart_Bobr

    Не знал что на GL тоже можна шейдеры юзать. Там же вроди только расширения типа ARB, CG и т. д.

    =)) в opengl 2.0 есть кроме расширений, стандартная такая штука - OpenGL Shading Language. Сайты вендоров посмотри, например 3DLabs - поможет.
     
  8. Dart_Bobr

    Dart_Bobr New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2004
    Сообщения:
    100
    Адрес:
    Ukraine
    jekyll

    Спасибо, а то я на GL писал давно, но в основном примитивные проги (тем более на gl1.5, а шейдеров там вроди и не было). Теперь попробую с шейдерами.
     
  9. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Dart_Bobr

    CG это не расширение. И кто тебе сказал, что расширения это не OpenGL?



    jekyll

    Ё, нигер, давно на васме не встречались :) Шейдеры может быть и будут то включаться, то выключаться, вот только объекты-то не будут удаляться-создаваться каждый кадр. На кой хрен это надо? Поэтому если у программеров руки растут хотя бы из талии, то шейдеры вполне можно будет вытащить. Да, может быть не все. glCreateShaderObjectARB делается один раз, а glUseShaderObjectARB - сколько угодно. А объект-то никто не трогает! :)



    PS:



    - Что такое RTFM?

    - RTFM!
     
  10. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    Давеча случайно обнаружил, что "Duke Nukem - Manhattan Project" хранит шейдеры открыто (файлах данных зазипованы), других игрушек у мя нет, но думаю таких много. А вообще - дампить и смотреть.



    ЗЫ: не путайте криптовку (которую IMHO никто юзать не будет) и сжатие широко известными методами.
     
  11. jekyll

    jekyll New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2003
    Сообщения:
    92
    Адрес:
    Russia
    _DEN_

    Ё, нигер, давно на васме не встречались :)

    Теперь я здесь вроде не частый гость.

    Шейдеры может быть и будут то включаться, то выключаться, вот только объекты-то не будут удаляться-создаваться каждый кадр.

    Ты не путай теплое с мягким. Каждый кадр - это ессно бред, но с уровня на уровень скажем, вполне может быть.
     
  12. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    jekyll





    Че так? Обиделся на wasm? :)







    Не путаю :) Там проблемма еще в том, что у шейдера есть хендл, который мы вроде как не знаем, так что придется прямой перебор юзать. Бред какой. По-моему все же самый человеческий способ это искать шейдеры на винте.
     
  13. jekyll

    jekyll New Member

    Публикаций:
    0
    Регистрация:
    20 мар 2003
    Сообщения:
    92
    Адрес:
    Russia
    _DEN_

    Че так? Обиделся на wasm? :)

    На wasm не обижаюсь. =) Грамотный сайт.



    По-моему все же самый человеческий способ это искать шейдеры на винте.

    Вот и я о том же.
     
  14. melnik_sergey

    melnik_sergey New Member

    Публикаций:
    0
    Регистрация:
    23 авг 2004
    Сообщения:
    11
    Я может уже поздно.

    Есть такая замечательная прога 3D analyze

    Конечно со своими обязаннастями она справляется не очень,

    а вот шейдеры тырит только в путь.

    Только придется разобраться какой из них кто.
     
  15. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    melnik_sergey

    Не бывает ничего идеального. Пока ты шейдер в видяху не подгрузишь никакая волшебная программулина тебе его не выдаст. А сразу все шейдеры никто грузить не будет. Я остаюсь при своем мнении - самое надежное - искать шейдеры на винте.