unity/shader 小结

来源:互联网 发布:linux 回到用户根目录 编辑:程序博客网 时间:2024/05/13 12:08

周末把自己关于shader的知识做了一个总结 梳理 

关于CG语言/shader 基础我就不再多做赘述

 有需要的同学可以去看浅墨的UNITY学习网      传送门 http://www.unity.5helpyou.com/2367.html

一 only--vertex/-shader.shader   只有顶点渲染shader

算法是08年一位歪果仁大兄弟的  逻辑我也没完全理解透(因为在火星时代做一个VR游戏孵化 需要一个科技感强的虚拟三维地图   )

var lineColor : Color;var backgroundColor : Color;var ZWrite = true;var AWrite = true;var blend = true;private var lines : Vector3[];private var linesArray : Array;private var lineMaterial : Material;private var meshRenderer : MeshRenderer;function Start (){meshRenderer = GetComponent(MeshRenderer);if(!meshRenderer) meshRenderer = gameObject.AddComponent(MeshRenderer);meshRenderer.material = new Material("Shader \"Lines/Background\" { Properties { _Color (\"Main Color\", Color) = (1,1,1,1) } SubShader { Pass {" + (ZWrite ? " ZWrite on " : " ZWrite off ") + (blend ? " Blend SrcAlpha OneMinusSrcAlpha" : " ") + (AWrite ? " Colormask RGBA " : " ") + "Lighting Off Offset 1, 1 Color[_Color] }}}");lineMaterial = new Material("Shader \"Lines/Colored Blended\" { SubShader { Pass { Blend SrcAlpha OneMinusSrcAlpha ZWrite Off Cull Front Fog { Mode Off } } } }");lineMaterial.hideFlags = HideFlags.HideAndDontSave;lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;linesArray = new Array();var filter : MeshFilter = GetComponent(MeshFilter);var mesh = filter.mesh;var vertices = mesh.vertices;var triangles = mesh.triangles;for (i = 0; i < triangles.length / 3; i++){linesArray.Add(vertices[triangles[i * 3]]);linesArray.Add(vertices[triangles[i * 3 + 1]]);linesArray.Add(vertices[triangles[i * 3 + 2]]);}lines = linesArray.ToBuiltin(Vector3);}function OnRenderObject(){ meshRenderer.material.color = backgroundColor;lineMaterial.SetPass(0);GL.PushMatrix();GL.MultMatrix(transform.localToWorldMatrix);GL.Begin(GL.LINES);GL.Color(lineColor);for (i = 0; i < lines.length / 3; i++){GL.Vertex(lines[i * 3]);GL.Vertex(lines[i * 3 + 1]);GL.Vertex(lines[i * 3 + 1]);GL.Vertex(lines[i * 3 + 2]);GL.Vertex(lines[i * 3 + 2]);GL.Vertex(lines[i * 3]);}GL.End();GL.PopMatrix();}// http://forum.unity3d.com/threads/wireframe-3d.8814/  //unity 官方论坛一位歪果仁大兄弟 08年就实现了


0 0
原创粉丝点击