顶点Blinn-Phong.Shader

原创 2016年08月31日 11:57:52

Blinn-Phong:高光的一种,高光范围更大,更亮

Shader "Custom/Light/BlinnPhongLight"{
    Properties{
        _Diffuse("Diffuse", Color) = (1, 1, 1, 1)
        _Specular("Specular", Color) = (1, 1, 1, 1)
        _Gloss("Gloss", Range(1.0, 255)) = 20
    }

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

            CGPROGRAM

            #include "Lighting.cginc"

            #pragma vertex vert
            #pragma fragment frag

            fixed4 _Diffuse;
            fixed4 _Specular;
            float _Gloss;

            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 worldNormal = normalize(mul(v.normal, (float3x3)_World2Object));

                fixed3 worldLightDir = normalize(_WorldSpaceLightPos0.xyz);

                fixed3 diffuse = _LightColor0.rgb * _Diffuse.rgb * max(0, dot(worldNormal, worldLightDir));

                fixed3 viewDir = normalize(_WorldSpaceCameraPos.xyz - mul(_Object2World, v.pos).xyz);

                fixed3 specular = _LightColor0.rgb * _Specular.rgb * pow(max(0, dot(normalize(viewDir + worldLightDir), worldNormal)), _Gloss);

                o.color = UNITY_LIGHTMODEL_AMBIENT.xyz + diffuse + specular;

                return o;
            }

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

            ENDCG
        }
    }
    Fallback "Specular"
}

话说片段好麻烦呀。。不想写��

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

顶点法线和面法线

一、问题描述: 当几个面共享了一个顶点时,该如何设置这个顶点的法线呢? 二、下面是参考 Max Wagner 的 文章 《Generating Vertex Normals》,记的笔记。 ...
  • zhw_giser
  • zhw_giser
  • 2013年09月24日 09:36
  • 1636

山顶点的提取

1 流程图 用DEM生成间隔为15m和75m的等高线,生成山体阴影结果图,二者构成地形晕渲图以辅助判断山顶点位置。对DEM数据进行焦点统计分析,以11*11的窗口进行处理,将生成的结果与DEM数据做...
  • BigSun1993
  • BigSun1993
  • 2016年01月11日 11:20
  • 2367

21 Three.js使用顶点绘制立方体

我们在学些WebGL基础的时候每天都是在一直研究顶点位置,法向量,绘制下标什么的。虽然复杂,但是毕竟原生,性能没得说。three.js也给我们提供了相关的接口供我们使用原生的方法绘制模型下面是我的个人...
  • qq_30100043
  • qq_30100043
  • 2017年08月05日 16:48
  • 783

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
  • 1243

OpenGL顶点缓冲区一步步分析

这次讲的所有内容都装在一个立方体中,呵呵。 呵呵,绘制一个立方体,简单呀,我们学了第一课第二课,早就会了。 先别着急,立方体是很简单,但是这里只是拿立方体做一个例子,来说明OpenGL在绘制方法上的改...
  • sgnyyy
  • sgnyyy
  • 2016年09月13日 17:59
  • 1118

OpenGL--顶点数组与缓冲区中使用顶点数组

理论基础 法线向量:简称法线,是一条垂直于某个表面的方向向量。opengl中除了顶点之外,不能为多边形的其他地方分配法线。法线的作用是定义了物体的表面在空间中的方向,具体地说就是,定义了它相对于光...
  • u010223072
  • u010223072
  • 2015年03月21日 17:43
  • 2182

Unity 获得顶点数据

using UnityEngine; using System.Collections; [RequireComponent(typeof(MeshFilter))] public class ...
  • peanut__love
  • peanut__love
  • 2015年04月29日 18:17
  • 3280

二、Unity Shader顶点变换总结

做这个总结的目的是为了加深了解一个模型上的顶点是如何从模型上一步步变换到屏幕上的,搞明白Unity到底做了些啥?...
  • u011748727
  • u011748727
  • 2017年02月13日 23:44
  • 1141

树的最小顶点覆盖

最小顶点覆盖问题是算法设计中一个非常著名的NP完全问题,下面给出顶点覆盖问题的描述:   给定一个无向图:G=(V, E)和一个正整数k,判定是否存在一个顶点子集,其中=k,使得对于任意有u∈V'...
  • XuanZuoNuo
  • XuanZuoNuo
  • 2013年08月26日 12:58
  • 1406

Shader(顶点片段着色器)

//第一种 Shader "VRShader/DiffuseShader" { Properties { _Color("MainColor", Color) = (1, 1, 1, 1) ...
  • ff_0528
  • ff_0528
  • 2017年02月08日 22:23
  • 512
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:顶点Blinn-Phong.Shader
举报原因:
原因补充:

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