2018.10.11

小结
反思:晚上看比赛去了。浪费的挺多时间。RNG加油!!(我怎么就管不住啊。)
上午的时候,继续遮罩纹理的收尾,以及透明效果的开头。
透明效果主要是,透明度测试和透明度混合。这两块。当然对于渲染顺序在透明效果中的影响也是非常要重视的。感觉关于渲染队列的具体使用,可能还需要加留心。此外在今天透明测试时,发现虽然是很简单的代码,却没有得到预期的效果,我开始希望自己能够独立的解决这个问题,但是仔细分析(第一次觉得是clip函数的问题;第二次觉得是片元着色器输出时将fixed4 的W变量的取值问题)最后实在没有发现,对着书才找到了是透明阈值参数定义时没有考虑精度的问题。非常细节,却十分致命,这次我是对着书一步一步比对,以后如果没有参考,哪怎么办?
我觉得在之后的学习中,应该有意识的锻炼排错的能力,减少对书上代码的依赖。

//警告,虽然很简单但是 _Cutoff 一定要小心 函数内声明的时候 float 和float4 的问题
//如果是float4 那么在用采样获得的Alpha通道的值减去 cutoff时,标量向上转型,最后得到的结果,是一个float4类型
//永远不会小于0
Shader “Unlit/Alpha Test”
{
Properties
{
_Color(“Color”,Color)=(1,1,1,1)
_MainTex(“MainTex”,2D) = “white”{}
_Cutoff(“AlphaCutoff”,Range(0,1)) = 0.5

}
	SubShader
	{ Tags{"Queue" = "AlphaTest" "IgnoreProjector" = "True" "RenderType" = "TransparentCutout"}
	Pass
	{	Tags{"LightMode" = "ForwardBase"}
		CGPROGRAM
		#pragma vertex vert
		#pragma fragment frag
		// make fog work
		#pragma multi_compile_fog
		#include "Lighting.cginc"
		#include "UnityCG.cginc"

		fixed4 _Color;
		sampler2D _MainTex;
		float4 _MainTex_ST;
		float  _Cutoff;

		struct appdata
		{
			fixed4 vertex : POSITION;
			float3 normal:NORMAL;
			float4 texcoord:TEXCOORD0;
		};

		struct v2f
		{
			fixed4 pos : SV_POSITION;
			float2 uv:TEXCOORD0;
			float3 worldNormal:TEXCOORD1;
			float3 worldPos:TEXCOORD2;
		};



		v2f vert(appdata v)
		{
			v2f o;
			o.pos = UnityObjectToClipPos(v.vertex);
			o.worldNormal = UnityObjectToWorldNormal(v.normal);
			o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
			o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);
			return o;
		}

		fixed4 frag(v2f i) : SV_Target
		{
			fixed3 worldNormal = normalize(i.worldNormal);
			fixed3 worldLightDir = normalize(UnityWorldSpaceLightDir(i.worldPos));

			fixed4 texColor = tex2D(_MainTex,i.uv);   //采样
			clip(texColor.a - _Cutoff);             //透明度测试
			float3 albent = texColor.rgb*_Color.rgb;  //  纹素
			float3 ambient = UNITY_LIGHTMODEL_AMBIENT * albent;   
			fixed3 diffuse = _LightColor0.rgb*albent*max(0, dot(worldNormal, worldLightDir));

			return fixed4(diffuse + ambient,1 );

		}
		ENDCG
				
	}		
    }Fallback "Transparent/Cutout/VertexLit"

}

透明度混合仅仅是修改了队列参数,将clip函数去掉,修改了片元着色器的返回值,改动很小。不过对于blend命令可能还是不太清楚。明天继续吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的有限差分法实验报告用MATLAB中的有限差分法计算槽内电位;对比解析法和数值法的异同点;选取一点,绘制收敛曲线;总的三维电位图+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值