标签:
反射效果在制作游戏场景时是经常需要的,特别是在大理石、陶瓷类材质上有助于提升场景质感与氛围。
说道反射,游戏中常见做法就是利用当前场景cubemap作为反射源
而cubemap又是当前场景+Skybox的作用结果。
一 制作CubeMap
// Render scene from a given point into a static cube map.
// Place this script in Editor folder of your project.
// Then use the cubemap with one of Reflective shaders!
class RenderCubemapWizard extends ScriptableWizard {
var renderFromPosition : Transform;
var cubemap : Cubemap;
function OnWizardUpdate () {
helpString = "Select transform to render from and cubemap to render into";
isValid = (renderFromPosition != null) && (cubemap != null);
}
function OnWizardCreate () {
// create temporary camera for rendering
var go = new GameObject( "CubemapCamera", Camera );
// place it on the object
go.transform.position = renderFromPosition.position;
go.transform.rotation = Quaternion.identity;
// render into cubemap
go.GetComponent.<Camera>().RenderToCubemap( cubemap );
// destroy temporary camera
DestroyImmediate( go );
}
@MenuItem("GameObject/Render into Cubemap")
static function RenderCubemap () {
ScriptableWizard.DisplayWizard.<RenderCubemapWizard>(
"Render cubemap", "Render!");
}
}
二 利用ShaderForge制作反射shader
简单的forge shader
Texture 2D – 模型漫反射贴图
CubeMap – 刚生成的CubeMap文件
CubeMap – 控制CubeMap的反射强度[你也可以用其他变量 不唯一]
Multiply – 乘法节点负责倍增反射强度
生成shader后回到场景资源文件夹中,将场景某地面的贴图材质球shader换成我们自己制作的shader即可,如图效果!
PS:当然你也可以自己DIY 增加自发光 增加高光 方法不固定
标签:
原文地址:http://blog.csdn.net/dingd_158/article/details/51333480