29 октября 2011

Blender 2.6 и экспорт glsl шейдеров

Привет. Если вы еще не слышали, то вышел blender 2.60. Из всех крутых штуковин что в него пихнули, меня заинтересовала GLSL shader export. К сожалению в вики до сих пор есть TODO на ссылку в документацию.

Мне было интересно, а что же все таки делает этот метод. Не то что бы я не доверял документации, но мне стало интересно, что же там внутри этих самых шейдеров. Далее идет простой скрипт на питоне который нужно запустить в блендере что бы получить вершинный и фрагментный шейдер. А новая функция возвращает не что иное как их исходный код.

Вот простой скрипт который сохранить нужные нам шейдеры:

import bpy
import gpu

scene = bpy.context.scene
material = bpy.data.materials['Material']

for k in gpu.export_shader(scene, material).keys():
    if type(gpu.export_shader(scene, material)[k]) == type(""):
        f = open('~/' + k + "." + k[0:4], 'w')
        f.write(gpu.export_shader(scene, material)[k])
        f.close

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