顶点漫反射.Shader

原创 2016年08月29日 18:00:57
Shader "Custom/Light/DiffuseLightVert"{
    Properties{
        _DiffuseColor("DiffuseColor", Color) = (1, 1, 1, 1)
    }

    SubShader{
        Pass{
            Tags{
                "LightModel" = "ForwardBase"
            }

            CGPROGRAM

            fixed4 _DiffuseColor;

            #include "Lighting.cginc"

            #pragma vertex vert
            #pragma fragment frag

            struct a2v{
                float4 pos : POSITION;
                float4 normal : NORMAL;
            };

            struct v2f{
                float4 pos : SV_POSITION;
                fixed3 color : COLOR;
            };

            v2f vert(a2v v){
//              v2f o;
//              o.pos = mul(UNITY_MATRIX_MVP, v.pos);
//              fixed3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz;
//              fixed3 worldNormal = normalize(mul(v.normal, (float3x3)_World2Object));
////                fixed3 worldNormal = normalize(mul((float3x3)_Object2World, v.normal));
//              fixed3 worldLight = normalize(_WorldSpaceLightPos0.xyz);
//              fixed3 diffuse = _LightColor0.rgb * _DiffuseColor.rgb * max(0, dot(worldNormal, worldLight));
//              o.color = diffuse + ambient;
//              return o;

                v2f o;
                o.pos = mul(UNITY_MATRIX_MVP, v.pos);
                o.color = UNITY_LIGHTMODEL_AMBIENT.xyz 
                + _LightColor0.rgb * _DiffuseColor.rgb 
                    + * max(0, dot(normalize(mul((fixed3x3)_Object2World, v.normal)), normalize(_WorldSpaceLightPos0.xyz)));
                return o;
            }

            fixed4 frag(v2f i) : SV_Target{
                return fixed4(i.color, 1.0);
            }

            ENDCG
        }
    }

    Fallback "Diffuse"
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

unity3D Shader<三>漫反射

一、漫反射的说明          对于粗糙物体表面的某一点,其亮度应该和入射光线与该点的垂直程度有关,也就是入射光线与此点的夹角相关。如果我们用L表示单位长度的入射光线,用C表示到达此点的光线强度和...
  • bianchengxiaosheng
  • bianchengxiaosheng
  • 2015年03月29日 15:05
  • 1890

unity shader (4)--实现漫反射模型

首先给shader其一个名字 Shader "Custom/DiffuseVertxLevelMat" 为了得到并控制材质漫反射的颜色,在Properties语义块中声明如下 #include "...
  • qq_28221881
  • qq_28221881
  • 2016年10月16日 23:13
  • 1189

unity Shader 的漫反射逐顶点的光照模型

Pass {  Tags { "LightMode"="ForwardBase" } CGPROGRAM #pragma vertex vert #pragma fragment fr...
  • qq_16603297
  • qq_16603297
  • 2016年11月12日 23:22
  • 544

Shader实现漫反射、高光反射、纹理映射

使用Unity有一段时间了,越来越发现shader的重要性,之前也有一篇文章提了编写shader基本语法 最近重操旧业,准备继续深入学习shader 漫反射效果 漫反射几何计算公式: Diffuse ...
  • qq_33747722
  • qq_33747722
  • 2017年05月25日 13:35
  • 594

UnityShader学习笔记(六) 漫反射着色

大家好,我是Zander。今天我们来学习一下漫反射着色器。任何优秀的着色器开始总会依赖于一个基础的漫反射组件或者光照模型。因此从漫反射部分开始着色器的编写是非常有意义的。 Baidu百科     ...
  • zjw1349547081
  • zjw1349547081
  • 2017年01月10日 16:35
  • 444

OpenGL 4.0 GLSL 用单光源 实现逐顶点 漫反射光照模型

漫反射光照模型是:在所有方向上反射的光照强度相等,光照射到物体表面上一部分会被吸收而另一部分在其他方向上散射。一个典型的漫反射表面是没有光泽的,而没有被照射的地方是黑色的。 下面显示了一个漫反射光...
  • zhuyingqingfen
  • zhuyingqingfen
  • 2014年02月11日 14:21
  • 2775

【Unity3D Shader编程】之十二 可编程Shader初步 & 漫反射可编程Shader的实现

从这篇文章开始, Shader系列博文将继续开始更新。且在这次重启,这个系列文章会更多专注于实际Shader的书写,力求推出更多具有特色和实用性的Shader,概念性的东西在原则上上是不会再多讲的。 ...
  • zhmxy555
  • zhmxy555
  • 2016年03月06日 11:23
  • 14781

Unity Shader学习笔记(二)简单的漫反射

// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld' // Upgrade NOTE: replaced '_Ob...
  • zjw1349547081
  • zjw1349547081
  • 2016年12月21日 11:19
  • 334

Vertex Shader 顶点属性

Vertex Shader 标签: shaderconstantsattributesfloatarraysvariables 2012-07-25 08:43 8027人阅读 评论(0)...
  • linuxheik
  • linuxheik
  • 2016年12月21日 10:51
  • 479

unity shader 之 几何变换--顶点位移

Shader "Custom/PointTransform" { Properties { _R("R", range(0.5, 10)) = 1 _OX("OX", range(-...
  • qq_28221881
  • qq_28221881
  • 2017年02月28日 21:40
  • 1335
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:顶点漫反射.Shader
举报原因:
原因补充:

(最多只允许输入30个字)