欢迎来到天天文库
浏览记录
ID:40576666
大小:104.00 KB
页数:9页
时间:2019-08-04
《u3d27-shader-镜面反射》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、u3d27-shader-镜面反射说实话镜面反射很简单,难就难在实现镜面反射的代码困难,但是现在我们的代码都是集成好的所以直接使用就可以了!我们创建一个组件作为我们要变成镜面的工具(一般我们选择plane),之后创建一个材质,在其属性界面选择我们shader创建的方法把我们创建的材质赋给我们要做成镜面的组件(plane),把我们的代码与我们的组件绑定!Ok我们的镜面就做好了!共享一段JS代码。。。。可以让我们创建的组件自行旋转欧!functionUpdate(){transform.Rotate(0,Time.deltaT
2、ime*10,0);}把代码共享如下:Shader文件:Shader"FX/MirrorReflection"{Properties{_MainTex("Base(RGB)",2D)="white"{}_ReflectionTex("Reflection",2D)="white"{TexGenObjectLinear}}//twotexturecards:fullthingSubshader{Pass{SetTexture[_MainTex]{combinetexture}SetTexture[_ReflectionTex
3、]{matrix[_ProjMatrix]combinetexture*previous}}}//fallback:justmaintextureSubshader{Pass{SetTexture[_MainTex]{combinetexture}}}}Cs文件:usingUnityEngine;usingSystem.Collections;//实际上ThisisinfactjusttheWaterscriptfromProStandardAssets,//justwithrefractionstuffremoved.[
4、ExecuteInEditMode]//Makemirrorlive-updateevenwhennotinplaymodepublicclassMirrorReflection:MonoBehaviour{publicboolm_DisablePixelLights=true;publicintm_TextureSize=256;publicfloatm_ClipPlaneOffset=0.07f;publicLayerMaskm_ReflectLayers=-1;privateHashtablem_Reflection
5、Cameras=newHashtable();//Camera->CameratableprivateRenderTexturem_ReflectionTexture=null;privateintm_OldReflectionTextureSize=0;privatestaticbools_InsideRendering=false;//Thisiscalledwhenit'sknownthattheobjectwillberenderedbysome//camera.Werenderreflectionsanddoot
6、herupdateshere.//Becausethescriptexecutesineditmode,reflectionsforthesceneview//camerawilljustwork!publicvoidOnWillRenderObject(){if(!enabled
7、
8、!renderer
9、
10、!renderer.sharedMaterial
11、
12、!renderer.enabled)return;Cameracam=Camera.current;if(!cam)return;//Safeguardfromrecu
13、rsivereflections.if(s_InsideRendering)return;s_InsideRendering=true;CamerareflectionCamera;CreateMirrorObjects(cam,outreflectionCamera);//findoutthereflectionplane:positionandnormalinworldspaceVector3pos=transform.position;Vector3normal=transform.up;//Optionallydi
14、sablepixellightsforreflectionintoldPixelLightCount=QualitySettings.pixelLightCount;if(m_DisablePixelLights)QualitySettings.pixelLightCount=0;UpdateCamer
此文档下载收益归作者所有