zoukankan      html  css  js  c++  java
  • 实验了一下LitSphere做车漆

    前阵子跟人聊天,聊起过去试验的车漆,不适合做到移动设备上。过去试验的车漆在此http://www.cnblogs.com/sitt/archive/2012/03/28/2420595.html

    于是想了一下,过去的方式就是菲涅尔来控制衰减和颜色变化,可以用litSphere的方式来简化。

    litSphere其实就是用模型的法线当作UV在一张图上取色,效果见下图。

    只使用了一张贴图,就是最下方的这种,和三个模型对应,实际制作的话还要自己去想办法配合漫反射贴图。

    这种图的制作方式随意,可以用photoshop直接画也可以max调个材质球输出,也可以渲染。

    其实这个方式也可以做简化的反射贴图之类的。运行效率很高,代码很短。

    unity里的着色器代码在此。

    Shader "SimpleCar" 
    {
        Properties
        {
            LightSphereTexture("LightSphereTexture",2D) = "white" {}
        }
        SubShader
        {
            Pass 
            {
                CGPROGRAM
                #pragma vertex vertexMain
                #pragma fragment fragmentMain
    
                
                sampler2D LightSphereTexture;
                
                struct appdata 
                {
                    half4 vertex : POSITION;
                    half3 normal : NORMAL;
                    half3 tangent : TANGENT;
                    float2 uv    :    TEXCOORD0;
                };
    
                struct v2f 
                {
                    half4    pos : SV_POSITION;
                    half3    normal : TEXCOORD1;
                    float2  texcoord : TEXCOORD0;
                };
                
                v2f vertexMain (appdata v) 
                {
                    v2f o;
                    o.pos = mul( UNITY_MATRIX_MVP, v.vertex );
                    half4 normal = mul( UNITY_MATRIX_MV, half4(v.normal.xyz,0 ));
                    o.normal = normalize(normal.xyz);
                    o.texcoord = v.uv;
                    return o;
                }
                half4 fragmentMain (v2f i) : COLOR0 
                {
                    float2 litUv = i.normal.xy * 0.5 + 0.5;
                    half4 litSphere = tex2D(LightSphereTexture, litUv);
                    return litSphere; 
                }
                ENDCG
            }
        }
    }
    View Code
  • 相关阅读:
    mysql数据库 表 导入导出
    Java爬虫
    oracle 表空间统计、自动扩展修改
    dba_segements 没有所有的表的信息
    html&css基础框架
    javascript-ajax之json学习笔记
    符合BME风格的弹窗菜单表格文件上传控件
    iframe元素获取
    文件上传与下载
    JSON.parse 函数
  • 原文地址:https://www.cnblogs.com/sitt/p/3576683.html
Copyright © 2011-2022 走看看