Страница 1 из 1

Как в 3d max'e сделать материал с вертекс-колорным шейдером?

СообщениеДобавлено: 04 фев 2018, 16:48
maksimov
В Юнити у меня есть очень простой, самописный вертекс-колорный шейдер.

Синтаксис:
Используется csharp
Shader "BlastDigger/VertexColor"
{
        Properties
        {
        }

        SubShader
        {
                Tags { "Queue" = "Geometry-1" "RenderType"="Opaque" }
                Lighting Off
                //Cull Off
                ZWrite On
                Fog { Mode Off }
                LOD 100

                Pass
                {
                        CGPROGRAM
                        #pragma vertex vert
                        #pragma fragment frag
                        #include "UnityCG.cginc"

                        struct appdata
                        {
                                float4 vertex : POSITION;
                                float3 color : COLOR;
                                float3 normal : NORMAL;
                        };

                        struct v2f
                        {
                                float4 vertex : SV_POSITION;
                                float4 ramps : TEXCOORD0;
                                float3 color : TEXCOORD1;
                        };

                        v2f vert (appdata v)
                        {
                                v2f o;
                                UNITY_INITIALIZE_OUTPUT(v2f, o);

                                o.vertex = UnityObjectToClipPos(v.vertex);


                                float ambientLight = dot(normalize(mul(unity_ObjectToWorld, v.vertex)), half3(0, 1, 0)) * 0.5 + 0.5;
                                //float directLight = dot(normalize(mul(unity_ObjectToWorld, float4(v.normal.xyz,0))), half3(0,1,0)) * 0.5 + 0.5;

                                //o.col = _Color;
                                o.color = v.color;

                                o.ramps.z = abs(pow(1 - dot(normalize(ObjSpaceViewDir(v.vertex)), v.normal.xyz), 4));
                                o.ramps.z *= ambientLight;// / 2;
                                o.ramps.z *= 5;
                                return o;
                        }
                       
                        half4 frag (v2f i) : COLOR
                        {
                                half3 color = i.color;
                                color += half3(1, 1, 1) * i.ramps.z;

                                return half4(color, 1);
                        }
                        ENDCG
                }
        }
}
 



Как в 3d max'e сделать рендер модели максимально похожий на то, что имеет место быть в Юнити? =)

Re: Как в 3d max'e сделать материал с вертекс-колорным шейдером?

СообщениеДобавлено: 04 фев 2018, 16:53
maksimov
Результат работы шейдера в Юнити - следующий:
Изображение
(модели вертексам назначены цвета. по ним и идёт расцвечивание)


P.S.
И ещё. Если кто, взглянув своим профессиональным взглядом, увидит в шейдере какой-нибудь "ай-яй-яй" (ну, что там можно оптимизировать, или улучшить...) - буду очень благодарен, если пнёте меня. Ибо сам в шейдере-написании очень слаб.

Re: Как в 3d max'e сделать материал с вертекс-колорным шейдером?

СообщениеДобавлено: 04 фев 2018, 17:14
seaman
Написать аналогичный шейдер для Макса.
https://knowledge.autodesk.com/support/ ... B-htm.html
Правда вроде можно и так:
http://help.autodesk.com/view/3DSMAX/20 ... 87CE0ECEB7

Re: Как в 3d max'e сделать материал с вертекс-колорным шейдером?

СообщениеДобавлено: 04 фев 2018, 18:24
maksimov
seaman писал(а):Правда вроде можно и так:
http://help.autodesk.com/view/3DSMAX/20 ... 87CE0ECEB7

Большущее спасибо!! =)