查看: 631|回复: 0
打印 上一主题 下一主题

[其他] Fixed function shader学习(转载)

[复制链接]

9903

主题

126

听众

7万

积分

首席设计师

Rank: 8Rank: 8

纳金币
53488
精华
316

最佳新人 热心会员 灌水之王 活跃会员 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2016-4-22 05:22:16 |只看该作者 |倒序浏览

看了视频对着写了一下午,还是有很多地方不懂,老师原理并没有多少讲解,但是也不确定是不是这个fixed function shader 没那么重要,只有把老师的代码和解释尽量做清楚一点。后面还有很多课程,等学完
了应该会懂老师现在的用意吧。
  1. Shader "Custom/Day1Shader" {
  2.         properties{
  3.                 _color("Main Color", color) = (1,1,1,1)
  4.                 _ambient("Ambient", color) = (0.3,0.3,0.3,0.3)
  5.                 _specular("Specular", color) = (1,1,1,1)
  6.                 _shininess("Shininess", range(0, 8)) = 4
  7.                 _emission("Emission", color) = (1,1,1,1)
  8.                 _mainTexture("Main Texture", 2D) = ""//默认值就是纹理的名称
  9.                 _secondTexture("Second Texture", 2D) = ""//第二张贴图
  10.         }
  11.         SubShader
  12.         {
  13.                 tags{ "Queue" = "Transparent" }//提高渲染序列,让自己先渲染,防止渲染干扰
  14.                
  15.                 pass
  16.                 {
  17.                         //blend 指的是混合
  18.                         //srcAlpha正在渲染的物体的Alpha值,即源物体
  19.                         //OneMinusSrcAlpha 1- srcAlpha.
  20.                         Blend srcAlpha OneMinusSrcAlpha //按比例混合
  21.                         material
  22.                         {
  23.                                 diffuse[_color]//默认颜色
  24.                                 ambient[_ambient]//环境光
  25.                                 specular[_specular]//集中点镜面高光
  26.                                 shininess[_shininess]//描述镜面高光镜面反射区域强弱
  27.                                 emission[_emission]//自发光
  28.                         }
  29.                         lighting on//开启环境光
  30.                         separateSpecular on//开启高光
  31.                        
  32.                         settexture[_mainTexture]//贴图采样
  33.                         {
  34.                                 //combine是合并操作,primary是关键字,代表前面所有计算过的颜色和光照, 即material到eparateSpecular on
  35.                                 //但是两个相乘会低于正常显示结果, 所以要乘以二, 即double是提高两倍亮度,quad是四倍
  36.                                 combine texture * primary double
  37.                         }
  38.                         //如果需要多张图同时贴入
  39.                         settexture[_secondTexture]//贴图采样2,因为不能settexture[_mainTexture, _mainTexture]
  40.                         {
  41.                                 //combine texture * primary double 不能用,combine texture是拿当前的纹理即_secondTexture
  42.                                 //去乘以之前的所有操作, 即material到eparateSpecular on
  43.                                 combine texture * previous double//previous是前面所有操作,即material到settexture[_mainTexture]
  44.                         }
  45.                 }
  46.        
  47.         }
  48. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-14 19:55 , Processed in 0.349688 second(s), 28 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部