zoukankan      html  css  js  c++  java
  • Cg入门21:Fragment shader

    体纹理:是啥?
    tex2D 曾经仅仅能在Fragment程序中纹理採样
    UV坐标系:事实上点为左下角,范围为【0,1】。U为x轴,V为y轴


    Texture.wrapMode 循环模式:
    TextureWrapMode.Clamp:设置纹理充满拉伸使用
    TextureWrapMode.Repeat:纹理反复平铺使用
    假设採用Repeat,那么等于U>=1的情况就会用纹理图在右边在平铺一张图

    Texture.filterMode 过滤模式:
    Point:像素过滤(不进行过滤
    Bilinear:双线性
    Trilinear:三线的

    UV纹理採样:
    UV 纹理

    贴图后效果:立体空间的UV坐标为左上角,U为水平向右方向,V为垂直向下方向 ,默认范围[0,1] 

    源码:
    Shader "Sbin/TexShader"
    {
    	Properties
    	{
    		_MainTex ("Texture", 2D) = "white" {}
    		_U("U",range(-0001,0.001)) = 0
    		_V("V",range(0,1)) = 0
    	}
    	SubShader
    	{
    		Pass
    		{
    			CGPROGRAM
    			#pragma vertex vert
    			#pragma fragment frag
    			#include "UnityCG.cginc"
    
    			sampler2D _MainTex;
    			float _U;
    			float _V;
    
    			struct v2f{
    				float4 pos:POSITION;
    				float2 uv:TEXCOORD0;
    			};
    
    			v2f vert (appdata_base v)
    			{
    				v2f o;
    				o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
    				o.uv = v.texcoord.xy;
    				return o;
    			}
    
    			fixed4 frag (v2f v) : COLOR
    			{
    				fixed4 col = tex2D(_MainTex, v.uv);//第一个參数:纹理,第二个參数UV向量
    				return col;
    			}
    			ENDCG
    		}
    	}
    }
    


    纹理平铺缩放和偏移:

    Tiling :缩放模型UV纹理採样坐标。比方:Tiling x=2。表示把模型UV坐标的U扩大2倍,U范围值变成2,纹理假设WrapMode选择Repeat。那么U轴方向就会纹理採样两次。V轴同理

    Offset:偏移模型UV纹理採样坐标;比方:Offset x = 0.1,表示把模型UV坐标往左编译,然后再採样UV纹理贴图。



    以上两种操作导致例如以下效果:

  • 相关阅读:
    eclipse版本、代号
    eclipse中jdk及编译器版本问题
    改变cmd命令行颜色
    mysql-installer-community-8.0.12.0的安装
    算法简介
    Java--将数据以文本形式导出
    安装MySQL
    网络配置
    电脑拷软件到其他设备
    探针设备
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/7323798.html
Copyright © 2011-2022 走看看