iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Unity图形学之ShaderLab入门基础
  • 638
分享到

Unity图形学之ShaderLab入门基础

2024-04-02 19:04:59 638人浏览 薄情痞子
摘要

这篇只是一个总结,方便我写shader的时候查找api; 1.格式 Shader "Custom/MyShader" //命名+右键创建shader路径 { //属

这篇只是一个总结,方便我写shader的时候查找api;

1.格式


Shader "Custom/MyShader"				//命名+右键创建shader路径
{	
    //属性必须在代码里声明才能使用
    Properties{					//属性,会出现在inspector面板
        _MainTex("Main Tex",2D) = "white"{}	//名称("面板显示名称",数据类型) = 初始化
    }
    //针对不同显卡可以有不同subshader,对应不同品质的渲染
    SubShader{					
        Tags{"LightMode"="ForwardBase"}		//tags,定义渲染的设置
        ZWrite Off					//RenderSetup,渲染设置
        Pass{						//通道pass,一个subshader可以有多个pass
        	Name = "MyPass"			//pass可以命名,在其他subshader引用UsePass大写
            CGPROGRAM				//开始CG代码-和ENDCG成对
        	#pragma vertex vert			//定义渲染函数,顶点
        	#pragma fragment frag		//片元
        	#pragma surface surf Lambert 	//表面
        	#include "Lighting.cginc"		//包含方法库
        	
            sample2D _MainTex;			//声明变量
            float4 _MainTex_ST;
            
        	struct a2v				//自定义结构体
        	{
             	float4 vertex : POSITioN;		//变量类型 变量名:语义说明(语言规定)
             	float3 nORMal: NORMAL;
        	}
        	
            v2f vert (appdata v)			//函数体
            {	v2f o;
                return o;
            }
        	ENDCG
        }
    }
    SubShader{...}	
    FallBack "Diffuse"				//以上subshader显卡都不支持,默认返回漫反射
}

uniform修饰词;

Name = "MyPass"

——UsePass "Unlit/Outline/MYPASS"//必须大写

——GrapPass//抓取屏幕结果存储在一张纹理中

2.属性

属性对应的变量类型,声明变量使用;属性中类型和变量中类型不一定一致;

3.语义

SV_开头表示System-Value——系统定义的语义变量;

4.Tags

1)SubShader可用

Queue——渲染队列

RenderType——渲染类型

(1)”Opaque”:绝大部分不透明的物体都使用这个;
(2)”Transparent”:绝大部分透明的物体、包括粒子特效都使用这个;
(3)”Background”:天空盒都使用这个;
(4)”Overlay”:GUI、镜头光晕都使用这个;
(5)还有其他可参考Rendering with Replaced Shaders;用户也可以定义任意自己的RenderType字符串
(6)”TransparentCutout“:透明测试使用;

IgnoreProjector = “True”——忽略投影器影响,AlphaTest和AlphaBlend使用;

ForceNoShadowCasting = “True”——表示不接受阴影;

2)Pass可用

"LightMode"="ForwardBase"

5.RenderSetup

1)Cull剔除

Cull Front/Back/Off

2)深度测试和写入

ZWrite Off

ZTest Off

3)Blend——透明混合设置

BlendOp

Blend效果

6.方法

UnityCG.cginc常用结构体

书写建议:
1.移动平台的shader尽可能使用精度低的变量:fixed-half-float

2.错误:片元中大量计算导致寄存器不足——提高shaderTarget等级

3.尽量不要使用分支语句

4.不要除以0

Life is too short for so much sorrow.  

到此这篇关于Unity图形学之ShaderLab入门基础的文章就介绍到这了,更多相关Unity ShaderLab内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Unity图形学之ShaderLab入门基础

本文链接: https://www.lsjlt.com/news/161636.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Unity图形学之ShaderLab入门基础
    这篇只是一个总结,方便我写shader的时候查找API; 1.格式 Shader "Custom/MyShader" //命名+右键创建shader路径 { //属...
    99+
    2022-11-12
  • Unity图形学中的ShaderLab怎么入门
    Unity图形学中的ShaderLab怎么入门,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.格式Shader "Custom/MyShader&qu...
    99+
    2023-06-22
  • C#多线程学习之基础入门
    目录同步方式异步多线程方式异步多线程优化异步回调异步信号量异步多线程返回值异步多线程返回值回调线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进...
    99+
    2022-11-12
  • Linux 学习基础入门之Linux分区
    安装Linux,首先要有镜像文件,以CentOS为例,可以在官网或者国内某些镜像Server来获取镜像。根据自己的需要可以选择是 Everything 或者minimal iso.这里不写关于安装的细节,对于其中的一些关键步骤做些说明。1....
    99+
    2023-06-05
  • Python基础之tkinter图形化界面学习
    一、基础内容 import tkinter as tk from PIL import Image,ImageTk def my(): pwin.destroy() win.de...
    99+
    2022-06-02
    Python tkinter学习 Python图形化界面学习
  • Android自定义控件绘制基本图形基础入门
    本文讲述绘制Android自定义各种图形效果,为自定义控件的入门篇 相关视频链接: Android自定义控件系列 http://edu.csdn.net/course...
    99+
    2022-06-06
    Android
  • Java 3D入门之基本图形功能 附源码
    目录坐标系基本体组合的显示实例三角面图形三角扇图形四边面图形坐标系 1、原点O在显示器的中间。 2、Z轴是指向屏幕之外的,也就是观察者。 ...
    99+
    2022-11-12
  • 0基础Python入门学习路线图应该是怎样的?
    Python因语法简洁功能强大,受到了很多初学者的喜爱,很多人奔着就业的目的自学Python,那么在自学之前,小优会首先建议同学先充分了解Python的岗位性质,工作内容,然后通过网课自学先试学一下,如果自己真的感兴趣,就可以规划自己的学习...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作