Unity简单shader

这篇博客详细介绍了如何使用Unity创建一个名为'MyFirstShader'的基础着色器,涉及Properties、SubShader中的Pass和HLSL编程。它涵盖了颜色属性设置、顶点和像素着色器的编写,适合初学者理解Shader基础概念。
摘要由CSDN通过智能技术生成
Shader "MyFirstShader" 
{
    Properties
	{
        _Color("color1",Color)=(1,1,0,1)
		_BaseMap("Base Map",2D)="white" {}
    	}
	
	SubShader
	{
		Pass //pass可以用多个pass
		{
	     HLSLPROGRAM //HLSL可以进行替换替换成GLSL

		#pragma vertex Vertex    //声明函数 //顶点着色器
		#pragma fragment Pixel   //片段着色器 像素着色器

	     half4 _Color;//声明变量
	     sampler2D _BaseMap;

	     
	     //model将物体的局部空间变换到世界空间
	     //view 通过摄像机的变化矩阵从世界空间变换到摄像机的空间中
	     //projection 投影变换变换到屏幕空间

	     #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"

        struct Attributes
        {
        	float4 vertex:POSITION;
        	float2  uv : TEXCOORD0;
	        
        };

	      struct Varyings
        {
        	float4 positionCS:SV_POSITION;
        	float2  uv : TEXCOORD0;
	        
        };
	     
	    #if 0 
	    float4 Vertex(float4 vertex:POSITION) :SV_POSITION //顶点着色器 float4输入的变量类型 vertex变量名字
	     //:后面说的是顶点着色器关联的裁切空间位置 SV含义为system value系统中的值
		{
	 
		float positionMS=	mul(UNITY_MATRIX_M, float4(vertex.xyz,1.0));
		float positionCS=	mul(UNITY_MATRIX_M, float4(positionMS.xyz,1.0));
	 
		return 	positionCS;
			
		// TransformObjectToHClip(vertex);	//也可以通过TransformObjectToHClip直接返回到裁切空间
		// return TransformObjectToHClip(vertex);
	 
	    }
	     #endif

	     Varyings Vertex(Attributes IN)  //顶点着色器 float4输入的变量类型 vertex变量名字
	     //:后面说的是顶点着色器关联的裁切空间位置 SV含义为system value系统中的值
		{
            Varyings OUT;
			OUT.uv=IN.uv;//如果你不需要UV进行改变就用输入进来的uv
			OUT.positionCS=TransformObjectToHClip(IN.vertex.xyz);
			
            return OUT;
	    }
	     
	     

		half4 Pixel(Varyings IN) : SV_TARGET //SV含义为system value
	     //SV_TARGET表示最后输出一个像素颜色
	    {
	    	half4 color;
	    color.rgb=tex2D(_BaseMap,IN.uv).rgb*_Color;
	    	color.a=1;
		return color;
	
	    }
		ENDHLSL
	    }
	
	
	}


}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值