DirectX Lighting - PullRequest
       8

DirectX Lighting

2 голосов
/ 31 марта 2012

Привет. У меня есть небольшая игра, использующая DirectX10 и C ++. Тем не менее, я начал делать это с помощью meshloader из примера X XJJJ и я только что использовал его. Однако все мои объекты выглядят просто черными, хотя и имеют цвет.

Я знаю, что это из-за света, но казалось бы, изменение любого кода, связанного со светом, ничего не делает из этого образца.

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

Приветствие.

1 Ответ

1 голос
/ 01 апреля 2012

Однако все мои объекты выглядят просто черными, хотя и имеют цвет.

Если шейдер ожидает, что текстура будет установлена, и считывает информацию о материале из этой текстуры, и вы устанавливаете нулевую текстурудо соответствующей стадии текстуры (сэмплер или как она называется в DX10) шейдер будет читать черный цвет из этой нулевой текстуры.И черный материал без зеркального / эмиссионного или отражающего отображения всегда будет выглядеть черным, независимо от того, сколько источников света вы используете.

Используйте белую текстуру на материалах / объектах без текстуры (при условии, что ваш шейдер понимает цвет материала и умножает его на текстуруцвет).Или переключитесь на DX9 и используйте конвейер с фиксированной функцией, который обрабатывает отсутствующие текстуры как белый.Или измените шейдер так, чтобы он поддерживал материалы без текстуры.

метод, чтобы просто осветить все, как, например, сделать его ярким везде

Вы можете использовать "глобальное" окружение (которое выПридется добавить в ваш шейдер, потому что D3D10 не имеет фиксированного конвейера функций).Однако вам это не нужно, потому что

мне нет дела до теней

вы на самом деле заботитесь о тенях, просто еще не знаете об этом.Глобальное окружающее значение сделает все материалы равномерно окрашенными без каких-либо градиентов.Это означает, что если у вас нетекстурированная сложная сетка, вы не сможете понять, на что вы смотрите, и все, что текстурировано, будет выглядеть безобразно.Кроме того, черные материалы будут оставаться черными.Поэтому, чтобы «сделать его ярким везде», вам понадобится «солнце» - направленный источник света или очень большой точечный источник света.

...