我猜你一定能写一个转型不只是随机颜色显示红色shader。你需要从Unity编辑器shader传递参数。

本文中,我们将使用shader的Properties和GLSL特殊的变量类型uniforms。

加入一个选项使得我们能从Unity编辑器的Inspector视图选择颜色。

为了做到这一点,我们会改动上篇文章中Properties部分的代码,像这样:

  1. Properties
  2. {
  3. //能够从编辑器中选择颜色
  4. _Color ("Main Color", Color) = (1,0.5,0.5,1)
  5. }

好了,假设我们从编辑器中选定这个shader,我们就能够选择一个颜色了。为了把这个颜色值传递给片段着色器,我们也相同须要对上篇文章的片段着色器部分代码进行改动:

  1. #ifdef FRAGMENT
  2. //这就是从Unity编辑器给GLSL shader传递数据的方法,定义uniforms类型变量
  3. uniform vec4 _Color ;
  4. void main()
  5. {
  6. gl_FragColor = _Color;
  7. }
  8. #endif

那么完毕后的代码就是这种:

  1. Shader "simple_Color_Shader"
  2. {
  3. Properties
  4. {
  5. //能够从编辑器中选择颜色
  6. _Color ("Main Color", Color) = (1,0.5,0.5,1)
  7. }
  8. SubShader
  9. {
  10. Tags { "Queue" = "Geometry" }
  11. Pass
  12. {
  13. GLSLPROGRAM
  14. #ifdef VERTEX
  15. void main()
  16. {
  17. gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
  18. }
  19. #endif
  20.  
  21. #ifdef FRAGMENT
  22. //这就是从Unity编辑器给GLSL shader传递数据的方法,定义uniforms类型变量
  23. uniform vec4 _Color ;
  24. void main()
  25. {
  26. gl_FragColor = _Color;
  27. }
  28. #endif
  29. ENDGLSL
  30. }
  31. }
  32. }

好了,打完收工!

帮助文档解决了一篇文章,仍然是有效的哦。

原文地址

Unity3D环境GLSL shaders书面 — 固体参数的更多相关文章

  1. unity3d环境安装指南: Unity 4.5.5 + Visual Studio 2010

    1. UnitySetup-4.5.5.exe 官网下载最新版本4.X 安装exe文件 2. Unity 4.x Pro Patch.exe 复制exe到安装目录下 C:\Program Files ...

  2. 如何在ES5与ES6环境下处理函数默认参数

    函数默认值是一个很提高鲁棒性的东西(就是让程序更健壮)MDN关于函数默认参数的描述:函数默认参数允许在没有值或undefined被传入时使用默认形参. ES5 使用逻辑或||来实现 众所周知,在ES5 ...

  3. 笔记:JFB 部署新环境,要更改的参数清单列表

    ylbtech-笔记:JFB 部署新环境,要更改的参数清单列表 1. Web.config返回顶部   2. JS返回顶部 1./m/js/utils.js var utils = {} 序号 参数 ...

  4. .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参 ...

  5. xcode4的环境变量,Build Settings参数,workspace及联编设置

    转自:http://www.cnblogs.com/lancidie/archive/2013/04/08/3007566.html 一.xcode4中的环境变量 $(BUILT_PRODUCTS_D ...

  6. [译]SSIS 通过环境变量配置数据源连接参数

    场景 希望在包执行的时候可以随意选择参数,这时候我们可以用环境变量 . 另外所有包都可以用环境变量,有大量包的时候就比较方便. Step 1: 创建SSIS包 在Data Flow Task里面创建 ...

  7. python服务器环境搭建(3)——参数配置

    前面我们已安装好了python服务器运行所需要的相关软件,而最重要最繁琐的就是参数配置,写这篇就踩了好多坑,花了好多时间,遇到了各种各样的问题.好了费话少说,直接进入本篇话题. PS:本人不是专业的运 ...

  8. Centos环境下手动设置-网络参数配置-网络挨排错顺序-设置网卡为上网模式的设定

    Linux中网络参数大致包含以下内容: IP地址 子网掩码 网关 DNS服务器 主机名(默认 localhost) 历来Linux系统中修改这些参数的方式通常有:命令.文件两种.其中通过命令设置可以立 ...

  9. 织梦后台系统设置在PHP5.4环境中不能保存中文参数的解决方法

    在没用PHP5.4的环境做Dede后台的时候,织梦58一直没有遇到这个问题,昨天上传一个新的模版到空间去测试发现后台的系统基本参数设置中所有的中文内容都无法保存,关于这个问题,其实以前也听说过,知识一 ...

随机推荐

  1. Android学习路径(十)如何将Action Bar堆放在布局

    默认情况下,action bar出如今activity窗体的顶部,稍微降低了activity布局的总空间.假设你想隐藏或者显示action bar,在这堂用户体验的课程中,你能够通过调用hide()  ...

  2. 客户端上显示csdn上的各类别下的的文章列表 (制作csdn app 三)

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/23597229 今天将在Android 使用Fragment,ViewPagerI ...

  3. 解决iOS app集成共享QQ场地,微信的朋友,朋友等功能圈,不能采用苹果公司的审计问题

    最近提交的应用程序App Store时刻,由于App综合QQ登录.份额QQ场地.微信等功能.被拒绝.很郁闷:在最佳.想想办法,这个问题是可以解决. 当共享平台列表显示.根据推断当前设备被安装在一节Ap ...

  4. ProgressBar样式总结与自己主动填充方法(代码)

    有时候开发的时候须要用一个进度条告知用户眼下正在执行一个耗时操作,可是并不须要明白知道某个value来setProgress,所以就能够自己定义一个时间和进度让进度条自己主动执行了. 以下是代码: H ...

  5. Linux下/proc目录简介(转)

    1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...

  6. Android 浏览器开发WebView setBlockNetworkImage本末

    含义本身防止网络数据图片 webSettings.setBlockNetworkImage(true); 停止发布数据 webSettings.setBlockNetworkImage(false); ...

  7. vs2012 网站无法使用自定义服务器的解决方法

    我已经习惯新建一个Asp.net网站时把它挂载在IIS下调试运行,在使用Visual Studio 2012后,新建网站配置启动选项时,自定义服务器居然不可用 原来是Visual Studio 201 ...

  8. ramoops具体失败原因来解释驱动寄存器

    正在使用linux的ramoops驱动器模块,当编译完成加载.查找驱动程序加载失败.显然,直接用内核代码,为什么会出现这种情况? 第一眼ramoops初始化代码: 180 static int __i ...

  9. android Intent.createChooser 应用选择

    在微博案例: 1.public void onClickShare(View view) { 2. 3. Intent intent=new Intent(Intent.ACTION_SEND); 4 ...

  10. 设计模式--简单工厂VS工厂VS抽象工厂

    前几天我一直在准备大学毕业生,始终绑起来,如今,终于有时间去学习设计模式.我们研究今天的话题是植物三口之家的设计模式的控制--简单工厂VS工厂VS抽象工厂. 经过细心推敲,我们不难得出:工厂模式是简单 ...