Morphing Shader: proof of concept

Шейдеры и все-все-все.

Morphing Shader: proof of concept

Сообщение gnoblin 09 окт 2010, 07:42

Давно хотел попробовать сделать морфинг не программно, а через шейдер.
Уря - получилось :).
Сначала закодировал информацию про шейп в текстуру (кодируется как-то немного криво, где-то косяк), потом понял что не знаю как использовать vertex texture fetch в Unity 3.0 (если такая штука есть в наличии вообще). Поэтому уже было лень брать информацию из меша, из цвет из текстуры загнал в vertex color меша.

Шейдер интерполирует позицию каждой вершины между позицией вершины в меше и позицией, которая записана в цвете вершины.
Наверное значения не могут быть больше 1.0f, поэтому я в качестве модельки выбрал кубик 0.5x0.5x0.5, который превращается в шарик (в демке не совсем шарик, а скорее его четвертинка - это, как я уже писал, я где-то немного накосячил).

Я рад что сам принцип работает [unity 3D]

Синтаксис:
Используется glsl
Shader "GnobTests/MorphShader" {
        Properties {
                //_MainTex ("Base (RGB)", 2D) = "white" {}
                //_MainTex2 ("Base (RGB)", 2D) = "white" {}
                _BlendFactor ("BlendFactor", Float) = 0.5
        }
        SubShader {
    Pass {

        CGPROGRAM
// Upgrade NOTE: excluded shader from Xbox360; has structs without semantics (struct appdata members vertex,color)
#pragma exclude_renderers xbox360
// Upgrade NOTE: excluded shader from OpenGL ES 2.0 because it does not contain a surface program or both vertex and fragment programs.
#pragma exclude_renderers gles
        #pragma vertex vert
       
        #include "UnityCG.cginc"

        struct appdata {
                float4 vertex;
                float4 color;
        };

        struct v2f {
                float4 pos : SV_POSITION;
               
        };

        float _BlendFactor;
        v2f vert (appdata v)
        {
                v2f o;
                o.pos = mul (UNITY_MATRIX_MVP, lerp(v.vertex, v.color, _BlendFactor));
               
                return o;
        }
       
        ENDCG
                }
        }
        Fallback "VertexLit"
}
У вас нет доступа для просмотра вложений в этом сообщении.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Morphing Shader: proof of concept

Сообщение gnoblin 09 окт 2010, 07:44

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

Re: Morphing Shader: proof of concept

Сообщение antonio 09 окт 2010, 13:49

Интересно (popcorn1)
Могу подкинуть старую модельку для опытов, чтобы время не тратить. (в майке с блендами) FBX
TestHeadFBX.rar
У вас нет доступа для просмотра вложений в этом сообщении.
Последний раз редактировалось antonio 10 окт 2010, 18:09, всего редактировалось 1 раз.
Аватара пользователя
antonio
UNIт
 
Сообщения: 132
Зарегистрирован: 03 ноя 2009, 15:42
Откуда: Смоленск

Re: Morphing Shader: proof of concept

Сообщение Neodrop 09 окт 2010, 16:58

Слава, syntax=glsl (для отображения кода шейдера в теге syntax)
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Morphing Shader: proof of concept

Сообщение gnoblin 09 окт 2010, 17:17

У меня нету майи и я не умею использовать там блендшейпы).

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

Re: Morphing Shader: proof of concept

Сообщение antonio 10 окт 2010, 18:11

gnoblin писал(а):У меня нету майи и я не умею использовать там блендшейпы).
Можно два меша в fbx? :)

Не подумал перезалил контент в предыдущем посте.
Аватара пользователя
antonio
UNIт
 
Сообщения: 132
Зарегистрирован: 03 ноя 2009, 15:42
Откуда: Смоленск

Re: Morphing Shader: proof of concept

Сообщение fox 11 окт 2010, 10:15

интересное решение, :-bd
Добавить foxumkov в Skype
Мои проекты:
Turbodrive
Изображение

Изображение
Аватара пользователя
fox
UNITрон
 
Сообщения: 255
Зарегистрирован: 07 ноя 2008, 13:02
Откуда: Питер
  • ICQ


Вернуться в Shader Lab

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

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