Где ошибка в шейдере мягких теней.

Для экспериментальных разработок и тем "я нашел чужой исходник, почему он не работает?"

Re: Где ошибка в шейдере мягких теней.

Сообщение antonio 27 окт 2010, 17:32

Решил тоже поэкспериментировать c NVIDIA Soft Shadow шейдером.
Но при попытке заграбить пасс сразу же получил "No subshaders can run on this graphics card" (
(NVIDIA GeForce 8800 GTS) Unity indie 3.0.
Пробовал с нулевого шейдера и тестировал готовые рабочие шейдеры использующие GrabPass - получил тот же ответ.
P.S. Небольшое дополнение. Насколько я понимаю глубину надо считать от источника света, а не от камеры вьюпорта.
Аватара пользователя
antonio
UNIт
 
Сообщения: 132
Зарегистрирован: 03 ноя 2009, 15:42
Откуда: Смоленск

Re: Где ошибка в шейдере мягких теней.

Сообщение Fox Rex 28 окт 2010, 03:20

Он на матрицы не ругается, ругается на неизвестный входной канал.
По поводу GrabPass надо попробовать. Расчет глубины и теней брал из готового шейдера.
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: Где ошибка в шейдере мягких теней.

Сообщение Fox Rex 28 окт 2010, 04:07

GrabPass у меня не выдает ошибок gforce 8200.
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: Где ошибка в шейдере мягких теней.

Сообщение gnoblin 28 окт 2010, 14:06

Я думаю ругаться он будет много на что).
В том числе и на матрицы.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Где ошибка в шейдере мягких теней.

Сообщение Fox Rex 28 окт 2010, 15:01

Если будет ругаться на матрици, то это известно как решить. Заменить названия, так чтобы соответствовали документации. Интересно какую версию cg использует Юнити? И что переделано в cg?
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: Где ошибка в шейдере мягких теней.

Сообщение gnoblin 28 окт 2010, 15:55

Я бы на твоем месте заменил бы матрицы уже СЕЙЧАС.

Еще вот это, имхо, совсем лишнее

Код: Выделить всё
sampler zTextureSampler = sampler_state
      {

          Texture   = (_GrabTexture);

          MinFilter = LINEAR;

          MagFilter = LINEAR;

      };
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Где ошибка в шейдере мягких теней.

Сообщение gnoblin 28 окт 2010, 15:58

И zTextureSampler заменить на _GrabTexture
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Где ошибка в шейдере мягких теней.

Сообщение Fox Rex 28 окт 2010, 16:04

Сделаю.
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: Где ошибка в шейдере мягких теней.

Сообщение gnoblin 28 окт 2010, 16:07

И, наверное, еще
Код: Выделить всё
sampler2D _GrabTexture;


Я не совсем понимаю откуда все эти замечательные входные параметры попадают в шейдер (нормали ребер итд) (popcorn1)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Где ошибка в шейдере мягких теней.

Сообщение Fox Rex 28 окт 2010, 16:10

Хотя где были мои глаза.
f you want to access different vertex data, you have to declare vertex structure yourself. The structure members must be from the following list:

float4 vertex is the vertex position
float3 normal is the vertex normal
float4 texcoord is the first UV coordinate
float4 texcoord1 is the second UV coordinate
float4 tangent is the tangent vector (used for normal mapping)
float4 color is per-vertex color

Неполучиться
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: Где ошибка в шейдере мягких теней.

Сообщение Fox Rex 28 окт 2010, 16:18

Из входных регистров карточки берутся входные данные. Т.е. Идет предварительная отработка данных картой, на определенном этапе вызывается шейдер вершинный, во входные регистры записываются входные данные, вершинный шейдер пишет данные в выходные регистры, они же являются входом для пиксельного шейдера, пиксельный шейдер выдает одну переменную , цвет точки экрана. Вершинный шейдер обрабатывает одну вершину сцены, пксельный (фрагментарный) один пиксель. Вершинный шейдер, как я понимаю, обрабатывает весь поток вершин, после этого начинает работать пиксельный шейдер.
Поправите если не прав.
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: Где ошибка в шейдере мягких теней.

Сообщение gnoblin 28 окт 2010, 18:33

Ну ты написал кусочек теории, а дальше?
На мой вопрос ответа я тут не вижу :D
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Где ошибка в шейдере мягких теней.

Сообщение Fox Rex 29 окт 2010, 09:13

Тогда для ответа на твой вопрос придется читать доки по графическому конвееру видиокарты. Я в эти вопросы не углублялся.
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Re: Где ошибка в шейдере мягких теней.

Сообщение antonio 29 окт 2010, 09:40

Fox Rex писал(а):GrabPass у меня не выдает ошибок gforce 8200.


Возможно у вас Unity Pro?
Я на free делаю (хотя может дело не в этом)

Подсмотрел такую конструкцию

Синтаксис:
Используется glsl
Shader "SoftShadows" {
        Properties {
                /////Code/////
        }
       
        Category
        {
                SubShader
                {
                        Tags                   
                        Pass {
                                        /////Code/////
                                }
                                ENDCG
                                SetTexture [depth]
                        }                      
                        Pass {
                                        /////Code/////
                                }
                                ENDCG
                        }
                }
        }
}
 


Насколько я понимаю я так могу передать текстуру в другой пасс. Такая схема работает подсмотрел в "Fur" shader. Насколько верно мое предположение. Будет время попробую еще.
Аватара пользователя
antonio
UNIт
 
Сообщения: 132
Зарегистрирован: 03 ноя 2009, 15:42
Откуда: Смоленск

Re: Где ошибка в шейдере мягких теней.

Сообщение Fox Rex 29 окт 2010, 09:45

Нет у меня фри версия.
Never more!
Аватара пользователя
Fox Rex
UNITрон
 
Сообщения: 218
Зарегистрирован: 04 сен 2010, 11:24

Пред.След.

Вернуться в Шейдерная кузня

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1