Shader学习笔记 例子: Shader "SrfShader1"{ //定义显示在Inspector中的变量,并从Inspector中获取值 Properties{ _Color("Color",Color)=(1,1,1,1) //用来融合漫反射或2d纹理的颜色 _MainTex("MainTex (RGB)",2D)="white"{} //主2d纹理图片色 _Gloss("Gloss",Range…
首先是shader的基础结构: Shader "Custom/Example { Properties//变量属性面板 { } SubShader { Tags { "RenderType"="Opaque" }//设置渲染状态和标签 LOD Pass { //开始cg代码片段 CGPROGRAM #pragma vertex vert//顶点着色器 #pragma fragment frag//片段着色器 #include "UnityCG.c…
本篇文章是对Unity Shader入门精要的学习笔记,插图大部分来自冯乐乐女神的github 如果有什么说的不正确的请批评指正 目录 渲染流水线 流程图 Shader作用 屏幕映射 三角形遍历 两大渲染测试 混合 CPU.GPU.图形接口和驱动的关系 CPU和GPU之间的通信 CPU和GPU并行工作的秘密:命令缓冲区 显示流畅的方法 着色器语言 ShaderLab Shader选用 顶点片元着色器 Unlit Shader 结构 一个简单的Shader 库文件 调试 注意点 3D数学 空间 渲…
第一节:图形处理器简史 GPU发展简史 GPU英文全称Graphic Procssing Unit. T&L变换和光照流水线 可编程GPU GPU的优点和缺点 第二节:Unity Shader Shader和渲染管线 什么是shader 中文翻译是着色器,是一种较为短小的程序片段,用于告诉图形硬件如何计算和输出图像,过去由汇编语言来编写,现在也可以使用高级语言来编写.一句话概括:shader是可编辑图形管线的算法片段. 它主要分为两类,vertexshader和fragmentshader: 什…
促使我学习SHADER的重要原因是希望深入理解3D渲染的机制,在此基础上可以灵活达到某种效果与性能的平衡,开发出具有良好体验的VR应用. 因为VR应用体验的好坏,直接由游戏的帧率决定,而游戏的帧率则受到渲染一帧画面所花时间的影响,因此如何提升渲染时间,而又可以得到期望的效果,必须要对SHADER或者说渲染机制有深入的理解. 一.在U3D中,shader是什么?shader即“着色器”,我们之所以能够看到屏幕上丰富多彩的3D画面,正是得益于它.U3D中与shader相关的概念以及它们同shader…
Properties类,表示一个持久的j集,可以存在流中,或者从流中加载 是Hashtable的子类 map集合的方法都能用 用途之一:在开发项目中,我们最后交给客户的是一个编译过的class文件,客户是无法操作源码的,当我们链接数据库时,需要在源码中写数据库名,密码,那么当客户需要更换数据库或者改密码时,就需要在源码中更改,这是非常不方便的,因此就用到这个类,在外部创建一个文件,文件中写上数据库名,密码,然后java代码读这个文件,这样客户就可以直接更改这个文件的内容来达到目的,方便操作.(具…
1 单张纹理 1.1 纹理 使用纹理映射(Texture Mapping)技术,我们把一张图片逐纹素(Texel)地控制模型的颜色. 美术人员建模时,会在建模软件中利用纹理展开技术把纹理映射坐标(Texture-Mapping Coordinates)存储在每个顶点上.纹理映射坐标定义了该顶点在纹理中的2D坐标. 纹理映射坐标通常是2维坐标(u,v).也被称为UV坐标.(u为横向,v为纵向) 顶点UV坐标通常被归一化到(0, 1)范围内,但纹理采样的时候常常也有不在(0,1)范围内的坐标. Op…
这个泡沫效果来自远古时代的Unity官方海岛Demo, 原效果直接复制3个材质球在js脚本中做UV动画偏移,这里尝试在shader中做动画并且一个pass中完成: // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)' //岸边浪花泡沫 //CloudLty 2016-9-6 Shader "Custom/foams2" { Properties//标记所以外部变量,让该变量按…
纹理可以用来存储任何表面属性. 可以通过使用渐变纹理来实现插画风格的渲染效果. 这项技术是由Valve公司提出的.Valve使用它来渲染游戏中具有插画风格的角色. 我们使用半兰伯特模型计算漫反射. 因为我们使用的实际上是一个一维纹理: 所以在片元着色器中,我们使用fixed2(halfLambert, halfLambert)作为uv坐标进行纹理采样. 代码实现如下: Shader "Unity Shader Book/Chapter 7/RampTexture" { Properti…
1 高度纹理 使用一张纹理改变物体表面法线,为模型提供更多细节. 有两种主要方法: 1.高度映射:使用一张高度纹理(height map)来模拟表面位移(displacement).得到一个修改后的法线值. 2.法线映射:使用一张法线纹理直接存储表面法线. 1.1 高度纹理 高度图中存储的是强度值(intensity).越浅越说明向外凸起,越深越向里凹. 缺点是计算复杂,消耗性能. 高度图也会与法线映射一起使用.给出表面凹凸的额外信息. 1.2 法线纹理 法线纹理中存储的是法线方向.法线方向的范…