1.#pragma fragmentoption ARB_precision_hint_fastest 意思就是会用低精度(一般是指fp16),以提升fragment着色器的运行速度,减少时间。#pragma fragmentoption ARB_precision_hint_nicest 意思就是会用高精度(一般是指fp32),可能会降低运行速度,增加时间。
参考:https://blog.csdn.net/biezhihua/article/details/79141924
2._MainTex_TexelSize表示_MainTex这张贴图一个像素/素纹的大小,是一个四元数,是 unity 内置的变量,它的值为 Vector4(1 / width, 1 / height, width, height),比如最终屏幕输出是1k x 2k 那么:
_MainTex_TexelSize.x = 1/1024
_MainTex_TexelSize.y = 1/2048
官方的解释为:
https://docs.unity3d.com/Manual/SL-PropertiesInPrograms.html
按官方文档来的话把_MainTex替换为对应贴图名字即可得到对应像素/素纹大小,{TextureName}_ST、{TextureName}_HDR也在官方文档有说明。可是在UnityShaderVariables.cginc却没找到对应的定义,不知道这些变量是在哪里定义的。
bloom屏幕特效的实现原理,可以参考一下:
https://blog.csdn.net/stalendp/article/details/40859441
3.UNITY_UV_STARTS_AT_TOP
表示纹理的uv坐标原点是在左下还是在左上,Direct3D 和opengl等不同平台的定义不一样,在 Direct3D 中,坐标顶部为零,向下增加。 在 OpenGL 和 OpenGL ES 中,坐标底部为零,向上增加。UNITY_UV_STARTS_AT_TOP 总是1或0,Direct3D类似平台使用1;OpenGL类似平台使用0。
v2f_simple vertBloom (appdata_img v)
{
v2f_simple o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.uv = v.texcoord.xyxy;
#if UNITY_UV_STARTS_AT_TOP
if (_MainTex_TexelSize.y < 0.0)
o.uv.w = 1.0 - o.uv.w;
#endif
return o;
}
_MainTex_TexelSize.y < 0.0是用于判断是否开启了抗锯齿,在Direct3D平台下,如果我们开启了抗锯齿,则xxx_TexelSize.y 会变成负值,好让我们能够正确的进行采样。
参考:https://blog.csdn.net/WPAPA/article/details/72721185
4.TANGENT_SPACE_ROTATION这是用于转换法线贴图坐标空间的,UnityCG.cginc有相关定义。
5.ComputeScreenPos这是计算屏幕坐标的,传入经过UNITY_MATRIX_MVP变换后的顶点坐标,返回屏幕坐标。ComputeGrabScreenPos传入经过UNITY_MATRIX_MVP变换后的顶点坐标,返回屏幕坐标的纹理信息。UnityCG.cginc有相关定义。
参考:http://blog.sina.com.cn/s/blog_89d90b7c0102va4m.html
6.安卓命令行把编译后的.class文件打成jar包:jar -cvf xxxx.jar *
7.ios压缩编译好的可执行文件为ipa文件:编译好的文件放在Payload文件夹里,终端cd到当前目录,输入命令zip –r XXXX.ipa即可打包成ipa。
8.在真机上调试好没问题了之后就可以发布正式包了,发越狱包不用证书也可以,拔掉手机连接,设置为Release配置方案(Product/Scheme/Edit Scheme),最后选择Product/Build For/Running,编译完成后就可以在xcode工程目录的Products生成的可执行文件右键Show in Finder打开目录,复制生成的可执行文件到桌面的fabao/Playload里面,直接压缩Playload生成ipa就可以了,也可打开终端cd到Playload同级目录输入”zip –r XXXX.ipa *”回车即可。
9.在unity场景scene视图中调好视角后,应用到当前的game视图:选择当前相机,点击GameObject–>Align With View 选项(快捷键Ctrl+Shift+F)使相机视角和当前Sence视图中一样,反过来,选择相机,点击GameObject–>Align View to Selected 选项,控制Scene中的视图对应到game视图的视角。