Теперь заходим в закладку Linker->Additional Dependencies и указываем там “.\ lib\shader.lib” (соответственно, если вы не копировали “.lib файлы локально в проект, то указываем тут полный путь до них “c:\Program Files\Alias\Maya7.0\devkit\mentalray\lib\nt\ shader.lib”).
В свойствах проекта, в закладке C/C++->Code Generation->Runtime Library выбираем “Multi-threaded Debug DLL (/MDd)” для Debug режима и “Multi-threaded DLL (/MD)” для Release соответственно.
Теперь следует все то же самое проделать и для Release режима компиляции.
Следующий шаг не обязателен, но его желательно проделать, чтобы избежать следующего warning’a при компиляции шейдера:
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB: library
В свойствах проекта в поле Linker->lgnore Specific Library нужно прописать следующее:
libc.lib;libcmt.lib;msvcrt.lib;libcd.lib;libcmtd.lib для Debug режима (Multithreaded Debug DLL (/MDd) )
libc. lib; libcmt. lib ; libcd. lib ; libcmtd. lib ;msvcrtd. lib для Release режима (Multithreaded DLL (/MD))
Подробнее об этой проблеме и зачем все это нужно делать, можно узнать по этому адресу: http://
msdn.microsoft.com/library/default.asp?url=/library/en-us/wcepbguide5/
html/wce50errLinkerToolsWarningLNK4098.asp
Поздравляю! Ваш проект полностью готов к работе.
Первый шейдер
Настроив проект, приступаем непосредственно к написанию первого шейдера. Открываем созданный ранее файл my_constant.cpp и вписываем туда следующий код:
#pragma once #include <math.h>
#include “shader.h”
typedef struct {
miColor color;
}my constant_t;
extern "c"
{
DLLEXPORT int my_constant_version(void) {return(l);}
DLLEXPORT miBoolean my_constant(miColor *result, miState *state, my_constant_t *paras)
{
*result = *mi_eval_color(¶s->color); return(miTRUE);
}
}
Это код самого простого constant шейдера, который возвращает заданный цвет вне зависимости от освещения. Constant, как ни странно, может оказаться достаточно полезным и часто используемым шейдером.
Подробнее суть кода будет описана чуть ниже, а сейчас просто компилируем код, чтобы увидеть его в работе. На выходе должен получиться my_mr_shaders.dll, это и есть функциональная часть нашего шейдера.
Следующим шагом нам необходимо будет создать файл с названием my_mr_shad-ers.mi. Для этого воспользуйтесь вашим любимым текстовым редактором, например: Notepad, WordPad, Textpad или UltraEdit и т.п., но только не Word. Я бы рекомендовал использовать именно Textpad или UltraEdit, так как это наиболее продвинутые и удобные текстовые редакторы, но это дело вкуса. Набираем следующий текст и сохраняем его как my_mr_shaders.mi
declare shader
color "my_constant" (
color "color" #: default 1.0 1.0 1.0
)
version 1 apply material #: nodeid 666055 end declare
Готово. Осталось подключить получившийся шейдер к Maya и протестировать. Для этого надо вначале установить шейдер.