Unity关闭shader中的光照模型以及如何自定义光照模型
- // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
- // Upgrade NOTE: replaced '_World2Object' with 'unity_WorldToObject'
- Shader "Custom/RadarWave" {
- Properties {
- _Color ("Color", Color) = (,,,)
- _MainTex ("Albedo (RGB)", 2D) = "white" {}
- _Glossiness ("Smoothness", Range(,)) = 0.5
- _Metallic ("Metallic", Range(,)) = 0.0
- _TransVal("Transparency Value", Range(,)) = 0.5
- _StripWidth("Strip Width", Range(0.1,)) = 0.2
- _Speed("Speed", Range(,)) =
- }
- SubShader {
- Tags { "RenderType"="Opaque" "Queue" = "Transparent" }
- LOD
- //Cull Off//关闭背面裁剪
- //Lighting Off//此设置在surface shader中不起作用,貌似是在Unlit Shader中使用的
- //ZWrite On
- //ZTest On
- Blend SrcAlpha OneMinusSrcAlpha
- CGPROGRAM
- // Physically based Standard lighting model, and enable shadows on all light types
- //#pragma surface surf Standard fullforwardshadows alpha vertex:vert
- #pragma surface surf NoLightModel fullforwardshadows alpha vertex:vert
- // Use shader model 3.0 target, to get nicer looking lighting
- #pragma target 3.0
- sampler2D _MainTex;
- struct Input {
- float2 uv_MainTex;
- float4 modelPos_;
- };
- half _Glossiness;
- half _Metallic;
- half _TransVal;
- half _StripWidth;
- half _Speed;
- fixed4 _Color;
- // Add instancing support for this shader. You need to check 'Enable Instancing' on materials that use the shader.
- // See https://docs.unity3d.com/Manual/GPUInstancing.html for more information about instancing.
- // #pragma instancing_options assumeuniformscaling
- UNITY_INSTANCING_CBUFFER_START(Props)
- // put more per-instance properties here
- UNITY_INSTANCING_CBUFFER_END
- void surf(Input IN, inout SurfaceOutput o) {
- // Albedo comes from a texture tinted by color
- fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color;
- o.Albedo = c.rgb;
- //float4 tmp = mul(unity_WorldToObject, IN.modelPos_);
- if (fmod(floor((IN.modelPos_.z-_Time.y*_Speed)/ _StripWidth),)!=)
- {
- //clip(-1);
- discard;
- }
- //o.Alpha = c.a;
- o.Alpha = _TransVal;
- }
- void vert(inout appdata_full v, out Input o)
- {
- UNITY_INITIALIZE_OUTPUT(Input, o);
- o.modelPos_ = v.vertex;
- }
- //命名规则:Lighting接#pragma suface之后起的名字
- //lightDir :点到光源的单位向量 viewDir:点到摄像机的单位向量 atten:衰减系数
- float4 LightingNoLightModel(SurfaceOutput s, float3 lightDir, half3 viewDir, half atten)
- {
- float4 c;
- c.rgb = s.Albedo;
- c.a = s.Alpha;
- return c;
- }
- ENDCG
- }
- FallBack "Diffuse"
- }
Unity关闭shader中的光照模型以及如何自定义光照模型的更多相关文章
- [Unity]在Shader中获取摄像机角度、视线的问题
又踩了一坑,好在谷歌到了之前的一个人遇到相同的问题,顺利解决. 先说说问题背景,我目前的毕设是体数据渲染,实现的办法是raycast.最基本的一点就是在fragment program里,获取rayc ...
- Unity Shader入门教程(三)自制光照模型
光照模型的概念目前还不明晰,因为笔者也是一个初学者,所以请小心对待笔者介绍的内容.笔者认为光照模型是规定光照算法的模型,比如说前面提到的Lambert光照模型,规定了材质表面的光线的表达式为 环境光+ ...
- 【Unity Shaders】Shader中的光照
写在前面 自己写过Vertex & Fragment Shader的童鞋,大概都会对Unity的光照痛恨不已.当然,我相信这是因为我们写得少...不过这也是由于官方文档对这方面介绍很少的缘故, ...
- 【Unity Shaders】Diffuse Shading——在Surface Shader中使用properties
本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...
- unity, multi pass shader中的surface pass
今天尝试写一个multi pass shader,但其中有一个Pass是surface pass,总是莫名奇妙地报错.后来看到下面帖子: http://forum.unity3d.com/thread ...
- unity, shader中获得当前像素深度
frag shader中直接访问i.pos.z就是深度,不必除以i.pos.w,因为系统已经自动进行过了透视除法且已将i.pos.w置为0.
- 【淡墨Unity3D Shader计划】五 圣诞用品: Unity在Shader三种形式的控制&混合操作编译
本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/42060963 作者:毛星云(浅墨) ...
- Unity的shader学习1
先来看一段我们项目常见的Shader代码,这个是Vertex&Fragment shader,目前已经不常用了,不过还是适合我们理解一些基础知识和理解一些比较老的shader 代码.下次我们再 ...
- [转] Draw Call未被批处理?告诉你在Unity 5.6中如何查找原因 [复制链接]
Unity在5.6之前的版本中并未提供很直接的方式来查找Draw Call未被批处理的原因,但Unity 5.6在Frame Debugger中新增了一项功能,帮助开发者查找相关信息.今天这篇文章就为 ...
随机推荐
- Linux共享库 base64库
base64网上实现很多,但是如果是对中文进行编码,有的无法编码,有的编码结果不一致 经过研究,发现base64算法都没有问题,问题出现在汉字的编码上,下面的base64编码稍微做了一些改进,增加了编 ...
- FPGA静态时序分析——IO口时序(Input Delay /output Delay)(转载)
转载地址:http://www.cnblogs.com/linjie-swust/archive/2012/03/01/FPGA.html 1.1 概述 在高速系统中FPGA时序约束不止包括内部时钟 ...
- C++ 结构体和枚举
共同体 共同体(union) 是一种数据格式, 它能够存储不同的数据类型, 但只能同时存储其中的一种类型.也就是说, 结构可以同时存储int.long 和 double, 共同体只能存储int.lon ...
- Android O seLinux 编译错误
编译android O源码,遇到错误 FAILED: out/target/product/hon450/obj/ETC/sepolicy_intermediates/sepolicy /bin/ba ...
- mysql存储过程----临时表 temporary
在存储过程中可以使用临时表,下面有一个分割字符串的例子 语法 1.创建:create temporary table 表名(列信息); 2.删除:drop table 表名; 3.清空:truncat ...
- 在Asp.net WebAPI使用Session
最近在改写WebApp时要将以前用泛型处理例程写的Captcha 改成使用WebApi 来实作机制,在实作的过程中发现使用IRequiresSessionState session也无法使用(cont ...
- Unity -----一些可能存在的错误
关于Unity中的资源管理,你可能遇到这些问题 张鑫 8 个月前 原文链接:关于Unity中的资源管理,你可能遇到这些问题 - Blog 在优化Unity项目时,对资源的管理可谓是个系统纷繁的大工程. ...
- (转)libhybris及EGL Platform-在Glibc生态中重用Android的驱动
原文地址:http://blog.csdn.net/jinzhuojun/article/details/41412587 libhybris主要作用是为了解决libc库的兼容问题,目的是为了在基于G ...
- (实用)Ubuntu 开启NFS服务
本文介绍如何在Ubuntu下开启NFS文件系统,从而挂载网络上其他机器的文件系统. NFS, Network File System, 即网络文件系统,通常NFS有提供者和使用者,提供者export自 ...
- font-awesome 使用方法
需要引入文件 font-awesome.css <link rel="stylesheet" href="{$yf_theme_path}public/font-a ...