- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
unity3d 镜面反射代码(Unity3d specular reflection code)
unity3d 镜面反射代码(Unity3d specular reflection code)
Uinty3d mirror code
Specular reflection code
The file name MirrorReflection.cs
Using UnityEngine;
Using System.Collections;
This is in fact just the / Water script from Pro Standard Assets,
With refraction stuff removed. / / just
[ExecuteInEditMode] Make mirror Live-update even when not / in play mode
Public class MirrorReflection: MonoBehaviour
{
Public bool m_DisablePixelLights = true;
Public int m_TextureSize = 256;
Public float m_ClipPlaneOffset = 0.07f;
Public LayerMask m_ReflectLayers = -1;
Private Hashtable m_ReflectionCameras = new (Hashtable); / / Camera - Camera table
Private RenderTexture m_ReflectionTexture = null;
Private int m_OldReflectionTextureSize = 0;
Private static bool s_InsideRendering = false;
This is called when its known / that the object will be rendered by some
Camera. We render reflections and do / other updates here.
The script executes in edit / Because mode, reflections for the scene view
Will just work / / camera!
Public void (OnWillRenderObject)
{
If (enabled renderer || ||!!! Renderer.sharedMaterial renderer.enabled ||!)
Return;
Camera cam = Camera.current;
If (cam!)
Return;
From recursive reflections. / / Safeguard
If (s_InsideRendering)
Return;
S_InsideRendering = true;
Camera reflectionCamera;
CreateMirrorObjects (cam out reflectionCamera);
Find out the reflection plane: position / and normal in world space
Vector3 POS = transform.position;
Vector3 normal = transform.up;
Disable pixel lights for reflection / / Optionally
Int oldPixelLightCount = QualitySettings.pixelLightCount;
If (m_DisablePixelLights)
QualitySettings.pixelLightCount = 0;
UpdateCameraModes (CAM, reflectionCamera);
Render / / reflection
Camera around reflection plane / / Reflect
Float d = -Vector3.Dot (normal, POS) - m_ClipPlaneOffset;
Vector4 reflectionPlane = new Vector4 (normal.x, normal.y, normal.z, D);
Matrix4x4 reflection = Matrix4x4.zero;
CalculateReflectionMatrix (Ref reflection reflectionPlane);
Vector3 o
您可能关注的文档
- opengl错误解析(OpenGL错误解析).doc
- ora-03113错误分析(Ora-03113 error analysis).doc
- oracle dbtimezone与os时区不一致的解决办法(Oracle dbtimezone inconsistent with OS time zone solution).doc
- mysql双机热备(MySQL hot standby).doc
- oracle execute immediate的语法(Oracle执行的语法).doc
- oracle hang分析(Oracle挂分析).doc
- oracle to_char&to_date(Oracle to_char和to_date).doc
- oracle 事务控制、数据并发性和一致性(Oracle transaction control, data concurrency, and consistency).doc
- oracle job 语法和时间间隔的设定(The Oracle job syntax and the setting of the time interval).doc
- oracle 几个服务各代表什么作用(Oracle what are the roles of several services).doc
文档评论(0)