题库 软件开发 题目列表 着色器(Shader)编辑测试 题目:下列代码是一个Dif...
问答题
着色器(Shader)编辑测试

题目:下列代码是一个Diffuse材质的shader,修改要求如下:

  为Shader着色器增加一个高光贴图属性和Gloss参数(光泽度),利用高光贴图的RGB通道控制高光颜色,A通道控制高光的光泽度Gloss参数
代码:
// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'

Shader "Test/TestShader"
{
    Properties
    {
        _diffuse("Diffuse",Color)=(1.0,1.0,1.0,1.0)
    }
    SubShader
    {
       Pass
       {   
           Tags{"LightMode"="ForwardBase"}
           CGPROGRAM
           #pragma vertex vert 
           #pragma fragment frag 
           #include "Lighting.cginc"
           
           fixed4 _diffuse;
           
           struct a2v
           {
              float4 vertex:POSITION;
              float3 normal:NORMAL;
              float4 texcoord:TEXCOORD0;
           };
           struct v2f 
           {
              float4 pos:SV_POSITION;
              float3 worldnormal:TEXCOORD0;
              float3 worldpos:TEXCOORD1;
              float2 uv:TEXCOORD2;
           };
           
           v2f vert(a2v v)
           {
               v2f o;
               o.pos=UnityObjectToClipPos(v.vertex);
               o.worldnormal=UnityObjectToWorldNormal(v.normal);
               o.worldpos=mul(unity_ObjectToWorld,v.vertex).xyz;
               o.uv=v.texcoord.xy;
               return o;
           }
           fixed4 frag(v2f i):SV_Target 
           {
              fixed3 worldnormal=normalize(i.worldnormal);
              fixed3 worldlight=normalize(UnityWorldSpaceLightDir(i.worldpos));
              fixed3 diffuse=_LightColor0.rgb*_diffuse.rgb*max(dot(worldnormal,worldlight),0);
              return fixed4(diffuse,1.0);
           }
           ENDCG
        }
     }          
}


题目信息
校招真题
-
正确率
0
评论
43
点击