扩展 Shader 编辑器
来源:互联网 发布:网络 锦城 编辑:程序博客网 时间:2024/05/16 00:30
Shader "Unlit/Test"{Properties{_MainTex ("Texture", 2D) = "white" {}_color("Color", Color) = (1,1, 1, 1)[HideInInspector] _QueueTag ("QueueTag", Float) = 0.0[HideInInspector] _QueueTagOffset ("QueueTagOffset", Float) = 0.0}SubShader{Tags { "RenderType"="Opaque" "PerformanceChecks"="False" }ZWrite OffPass{CGPROGRAM#pragma vertex vert#pragma fragment frag// make fog work#pragma multi_compile_fog#include "UnityCG.cginc"struct appdata{float4 vertex : POSITION;float2 uv : TEXCOORD0;};struct v2f{float2 uv : TEXCOORD0;UNITY_FOG_COORDS(1)float4 vertex : SV_POSITION;};sampler2D _MainTex;float4 _MainTex_ST;float4 _color;v2f vert (appdata v){v2f o;o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);o.uv = TRANSFORM_TEX(v.uv, _MainTex);UNITY_TRANSFER_FOG(o,o.vertex);return o;}fixed4 frag (v2f i) : SV_Target{// sample the texturefixed4 col = tex2D(_MainTex, i.uv);// apply fogUNITY_APPLY_FOG(i.fogCoord, col);return _color;}ENDCG}}CustomEditor "CustomShaderGUI"}
using UnityEngine;using UnityEditor;using System;public class CustomShaderGUI : ShaderGUI{ public enum QueueTag { Background, Geometry, AlphaTest, Transparent, Overlay } public static readonly string[] queueTagNames = Enum.GetNames(typeof(QueueTag)); public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties) { base.OnGUI(materialEditor, properties); MaterialProperty queueTag = FindProperty("_QueueTag", properties); MaterialProperty queueTagOffset = FindProperty("_QueueTagOffset", properties); int qt = (int)queueTag.floatValue; int qtOffset = (int)queueTagOffset.floatValue; bool isModifyQueueTag = false; EditorGUI.BeginChangeCheck(); qtOffset = EditorGUILayout.IntField("QueueTagOffset", qtOffset); if (EditorGUI.EndChangeCheck()) { materialEditor.RegisterPropertyChangeUndo("QueueTagOffset"); queueTagOffset.floatValue = (float)qtOffset; isModifyQueueTag = true; } EditorGUI.BeginChangeCheck(); qt = EditorGUILayout.Popup("QueueTag", qt, queueTagNames); if (EditorGUI.EndChangeCheck()) { materialEditor.RegisterPropertyChangeUndo("QueueTag"); queueTag.floatValue = (float)qt; isModifyQueueTag = true; } if (isModifyQueueTag) { foreach (Material mat in queueTag.targets) { ModifyQueurTag(mat, (QueueTag)qt, qtOffset); EditorUtility.SetDirty(mat); } } } public void ModifyQueurTag(Material mat, QueueTag qt, int offset) { mat.renderQueue = offset; switch (qt) { case QueueTag.Background: mat.renderQueue += 1000; break; case QueueTag.Geometry: mat.renderQueue += 2000; break; case QueueTag.AlphaTest: mat.renderQueue += 2450; break; case QueueTag.Transparent: mat.renderQueue += 3000; break; case QueueTag.Overlay: mat.renderQueue += 4000; break; } }}
0 0
- 扩展 Shader 编辑器
- unity shader 编辑器扩展类 ShaderGUI
- unity shader 编辑器扩展类 ShaderGUI
- Unity编辑器扩展工具Shader Forge和Behavior Designer(行为树)和 Cinema Director
- Unity3D Shader 编辑器搭建
- 编辑器下,显示shader
- 编辑器扩展
- Shader Forge可视化Unity3D Shader编辑器二-基础着色器
- Shader Forge可视化Unity3D Shader编辑器一-简介
- Rcp Edit 扩展编辑器
- unity编辑器扩展
- unity3d扩展编辑器
- Unity编辑器扩展
- unity 编辑器工具扩展
- Unity3d 编辑器扩展
- Unity3D-扩展编辑器
- unity-编辑器扩展
- unity编辑器扩展
- HDU 4277 USACO ORZ(DFS爆搜 + set判重复)
- Linux下软件的安装与卸载方法
- FZU 1692 Key problem(循环矩阵)
- C#预处理器指令
- kphp框架中实现自定义session会话处理方法的php和msyql代码分享
- 扩展 Shader 编辑器
- 4002 大数 java
- 黑马程序员——Java之入门
- 【译】如何使用Android MediaStore裁剪大图片
- android 圆形ListView实现,并附带圆角ImageView
- [Erlang]好用的NIF外部库
- 你不知道的知识产权概念和范围
- Highcharts 4.1.8发布了
- SQL注入攻防入门详解