新普金娱乐网址


数学哪些到一海自由之咖啡?

啊是措施?

数学【校园】暴力女团覆灭记(1)

  • 十一月 16, 2018
  • 数学
  • 没有评论
Shader "SrfShader1"{
    //定义显示在Inspector中的变量,并从Inspector中获取值
    Properties{
        _Color("Color",Color)=(1,1,1,1) //用来融合漫反射或2d纹理的颜色
        _MainTex("MainTex (RGB)",2D)="white"{} //主2d纹理图片色
        _Gloss("Gloss",Range(1,100)) = 10
    }
    //可以多个SubShader块(渲染方案),从第一个开始匹配,直到可用,否则匹配FallBack方案
    SubShader{
        Pass{
            Tags{"LightMode"="ForwardBase"}//标签
            CGPROGRAM
            //引入unity内置的文件,取得第一个直射光源(这样可以访问它的属性:颜色_LightColor0,法线_World2Object,位置_WorldSpaceLightPos0)
            #include "Lighting.cginc" 
            //声明两个函数,顶点函数和片元函数(系统自动调用这两个函数)
            #pragma vertex vert
            #pragma fragment frag
            //定义变量,从Properties中获得的材质球的颜色
            fixed4 _Color; 
            sampler2D _MainTex; //2d纹理
            float4 _MainTex_ST;  //该2d纹理的缩放和偏移
            half _Gloss;
            //定义结构体(定义了一个顶点的3个属性:顶点坐标、法线方向、纹理贴图中的坐标)
            struct a2v{
                float4 vertex:POSITION; //告诉Unity把模型空间下的顶点坐标填充给该变量vertex
                float3 normal:NORMAL; //告诉Unity把模型空间下的法线方向填充给normal
                float4 texcoord:TEXCOORD0; //告诉Unity把第一套纹理坐标UV填充给texcoord
            };

            struct v2f{
                float4 position:SV_POSITION; //填充为剪裁空间的坐标
                float3 worldNormal:COLOR0;
                float3 worldVertex:COLOR1;
                float2 uv:TEXCOORD1; 
            };
            //定义顶点函数(对模型的每个顶点调用,把结构a2v中的值赋值给f,把返回值应用到每个顶点,根据顶点之间的插值来填充非顶点位置)
            //把逻辑写在这里,表示使用逐顶点计算的光照色
            v2f vert(a2v v){
                v2f f;
                //把把模型空间下的顶点坐标转换为剪裁空间的顶点坐标
                f.position = mul(UNITY_MATRIX_MVP,v.vertex);
                f.worldNormal = mul(v.normal,(float3x3)_World2Object);
                //f.worldNormal = UnityObjectToWorldNormal(v.normal);//也可以使用UnityCG.cginc中一些常用的函数
                f.worldVertex = mul(v.vertex,_World2Object).xyz;
                f.uv = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw; //取到贴图的UV坐标的缩放倍数+偏移
                return f;
            }
            //定义片元函数(对剪裁空间下的模型上的每个像素点调用,把返回值颜色应用到每个对应的像素点)
            //把逻辑写在这里,表示使用逐像素计算的光照色
            fixed4 frag(v2f f):SV_Target{
                //把把模型空间下的法线方向转换为模型空间的法线方向,并取得该法线的单位向量
                fixed3 normalDir = normalize(f.worldNormal);
                //取得光的位置(这里是平行光)的单位向量
                fixed3 lightDir = normalize(_WorldSpaceLightPos0.xyz);
                //取得纹理贴图当前像素点的颜色,并和指定颜色融合
                fixed3 texture2dColor = tex2D(_MainTex,f.uv.xy)*_Color.rgb;
                //1.取得漫反射的颜色(使用半兰伯特光照模型),融合贴图颜色
                fixed3 diffuse = _LightColor0.rgb * (dot(normalDir,lightDir)*0.5+0.5) * texture2dColor;
                //取得反射光的方向,利用reflect()方法,根据入射光和法线来取
                //fixed3 reflectDir = normalize(reflect(-lightDir,normalDir));
                //取得视野方向,_WorldSpaceCameraPos表示视野位置
                fixed3 viewDir = normalize( _WorldSpaceCameraPos.xyz - f.worldVertex );
                //取得平行光和视野方向的平分线方向单位向量(两个向量相加除2就等于平分线向量)
                fixed3 halfDir = normalize(lightDir+viewDir);
                //2-1.取得反射光颜色(Blinn光照模型)
                //fixed3 specular = _LightColor0.rgb * pow(max(dot(reflectDir,viewDir),0),_Gloss);
                //2-2.取得反射光颜色(Blinn-Phong光照模型)
                fixed3 specular = _LightColor0.rgb * pow(max(dot(normalDir,halfDir),0),_Gloss);
                //3.各种影响的颜色叠加:漫反射 + 高光反射 + Unity内置环境光颜色与贴图色融合(融合后效果更好,不会只是变亮或变暗)
                fixed3 tempColor = diffuse + specular + UNITY_LIGHTMODEL_AMBIENT.rgb*texture2dColor;
                return fixed4(tempColor,1);
            }
            ENDCG
        }
    }
    FallBack "Diffuse"
}

先是回:哪来天上掉馅饼,忐忐忑忑走马上任。

“张先生,今年如果预备吃苦啊!学校综合多点考虑,认为你年轻,踏实肯干,在同学等中间产生好好的人头。所以今年让您当初三(1)班的班主任工作。”

嗬?我瞬间发呆住了,半上没有反应过来。三年一样趟,那个给个个班主任摇头,个个科任老师投降的老三年相同趟?

及管理者讲,我更少,再添加感觉奇怪,一时竟是不知该怎么回应。

汪校长直视着自家,他的透镜反射一股强光,让我非克全心全意。

“小张先生啊!本来吴先生是这班的班主任。但是,你看吴老师的儿今年上初中,他而转七年级去亲身带来儿子,请愿书还在自桌上。经过我们支部讨论,挑选,慎重决定,三年级同趟班主任工作便由于乃接。”

“可是我现之班级带的出色的,再说自己耶没带了班主任,我为怕……”

“张先生,年轻人就是是如勇于承担重任,没有当了班主任,可以望全校一直班主任请教嘛!这是该校支部会上面的操纵,就这么自然了哟!我还有另外事,就不再细谈。你当时就是和吴先生去做好衔接,确保明天开学工作顺利。好,就这样!”

自还眷恋再次说点什么,可是汪校长从办公桌后给站起来,一拿围捕把我的手,使劲握一掌握,然后拿自家直接送及外的办公门口。

我虽不再好说啊了,这既是板上钉钉的业务了,容不得自未涉及。在我们S中,汪校长是高手,校长责任制。学校虽处于县城以及民族乡的结合部,但是生源充足,师资力量雄厚,是独旗直学校。班主任工作是学的热门工作,需要应聘才会获得。我一个通常的数学老师,从来只晓得认认真真教书,不见面以及长官应酬,能当上班主任都算提拔了。

自己说今天清早齐眼皮子一直过——原来映在这桩工作上。我“走下”了——不过天上不见面掉馅饼。三年级同次是老师等头疼的趟,不然班主任的职称也未见面不通过应聘就轻易落到自身头上。

全校疯传,三年级同次是校纪律,成绩对垫底的差班。该班一广大女生不适应老师管教,以毁坏校纪校规为荣誉。成绩同样塌糊涂是理所当然,更过分之是,居然将课堂成游乐场,将教室当做他们胡作非为的地方。到本都更换了某些单班主任了。

我不得不心事重重的通向教学楼去,今天是八月三十一号,学校还无生。只有学校负责人、老师早已提前进入战备状态,要于好明开学第一指。

老三年级同次在教学楼三楼,左边第一个教室,紧挨在楼梯间。我跨着沉重的步履走过锁在的教室,来到位于教室东边的导师办公室。

还不曾进门就听到办公室充分热闹——老师等看来已当办公召开开学准备干活了。

目本人活动进去,吴先生这站起来迎接自己:“张先生,正使失去摸索你!你来了。”

其余几各名师看起吴先生看管我,就朝我乐,我哪怕相继回敬一个微笑。

自身对吴老师说:“吴先生,你带来的名特优的,怎么撂了,我从未带了班主任,这生怎么处置?”

吴先生反复说说自己之小子今年升可初中,老婆下了很命令,这三年家里别的事非随便可,自己男肯定要是带动好,一定要送及重点高中。这不,没办法的转业。

自己心头说,我呢任罢是次的动静,不是故意撂挑子吧!但是嘴上依然不好意思说下。

吴先生看我或者一副不情愿的典范,又安慰我说:“你年轻,有的是时间跟精力,缺少的是久经考验的机。应该好带几年班主任,这对协调下之迈入,进职称都发帮扶。不像我年纪很了,一凡是身体不像小伙子,二凡职称都迈入了备受同就到到了,无所要了。确实是班学生有若干难管,你年轻迎难而上!我信任你能够实施之!”

实际也不曾稍微要连接的,吴先生带本人去教室查看了门窗玻璃、桌椅、云课堂教学设备等一应财产,列了一个财产清单
,我们俩都在资产清单及签上名。

回来办公室,吴先生将一个文件夹递给自家,端起桌上就整理好之纸箱转身去了。剩下自己面对正在空空的办公桌,我要糊里纷纷扬扬的。我翻文件夹,里面混在一页页的公文,有班级学生名单,有学员详细情况登记表,有班级值日表,有学童读期期中期末成绩表……

扣押本身从未称,隔壁桌的吃老师笑着对本身说:“张主任,我是同样趟的英语老师,以后还请多多关照。”

自身看正在完美的为教工这样主动出示好,也快回一个客气的微笑。说:“你知道我,我以前从未当过班主任,好多转业还无明了怎么开吧!你针对是班熟悉些,你及自家说说情况嘛!”

深受老师环顾办公室,看看就将近中午,办公室只有咱俩人口矣,就变换了一个音和我聊起。

“哎呀!不是本人说公,张老师,这个次是何人吧不思量当班主任。从八月半就起来定是班的班主任,我闻的人选不产五个。听说他们还不涉及。别的班班主任要竞聘,这个班定不下来,校长做工作且不好使。你应当就是亮是什么了!”

圈我愁的禁闭正在其,她还要接着说,“你怎么就应了呢?也不思量想
,有好事会落至我们年轻教师头上?”

“这个,我耶和校长说了,我非带的,可是校长说就行既定了……”

“哎!我看咱们岁数差不多我才多口一词,那是公态度不坚!人家说勿带来就不带来,校长能怎样?开除吗?”

自放了被教工的话,竟然无言以对,是啊!刚才校长布置任务的时候,我当态度坚决一点,声音非常一点之。怎么糊里糊涂就将如此难的作业让答应下来了吧?

自自言自语又例如是请教一样的于导师说:“现在怎么惩罚?”

“怎么收拾,先干着还说嘛!干不下来了便错过和校长说,不关乎了!我反正就去校长办公室说了了,今年而起新调入的英语老师就接我此次。我初二接手带及今日,已经是漫天一年了。我莫也是未曾办法,去年初调入这个学校,什么呢非掌握就接这个班了。总不能够一如既往年不至就是打退堂鼓吧!学校领导会怎么看我?”

她告知自己,这个班兴风作浪的女生,是坐让狐美、田甜、金婷婷几个牵头。可能已结合一个女团了。她们一般都产生自己之园地,行动突出的一致。上课不任道,随进随有,想法子捉弄女导师、瘦弱一点底阳老师。想怎么样就怎么着,个个老师还头疼。经常是课上不下来,要处处去搜寻学生。一不小心,她们旷课到以外打架去矣,就坏做!

为先生十分健谈,看之下,她对准是班和这次的学习者来众多闲话。我设想不顶它更了部分啊,说实话,我还有点不信仰,这个次的学童能很到哪里去?

正巧读初中的男生,因为处于荷尔蒙分泌饱满时期,加上男生天性好动,说非信守课堂纪律,有硌小调皮这是发之的。女生嘛!一般不纵是脆弱,娇气,爱臭美一些,总不至于像男生那么难以管教吧!顶多迟到早退,不易于看了!

本着这次的事态,会无见面大家还出某些出口了其实,夸大其词呢?

左一想,右一想,我豁然心升腾一抹决心和胆量。既然受了这个任务,总要坚强起腰试一试跳。不然怎么知道自己出几斤几两?怎么受领导与共事们正确认识到自己之能力也?

已经交了吃午饭时间了,我哉准备回用了。临走前,于教师看本身对它所说的小不以为然,就“嗤”的同样笑,说,“哎呀,回去用。明天开学就知晓了!现在本人和你说啊你或许吧无见面信的。”

                        目录             
下一篇   

法线贴图的运(凹凸调节+透明度)

(本故事纯属虚构,如有雷同实属巧合。)

数学 1

融合:两个颜色相乘,融合后混合了点滴栽颜色,但亮度可能变暗
外加:两个颜色相加,相加后亮度一般会提高

高光反射:
Blinn光照模型
Specular= 直射光 * pow(max(cosθ,0),10) θ:是反射光方向以及视野方向的夹角
Blinn-Phong光照模型
Specular=直射光 * pow(max(cosθ,0),10) θ:是法线和x的夹角 x
是平行光和视野方向的平分线

Shader学习笔记
例子:

CG语言教程官网
http://http.developer.nvidia.com/CgTutorial/cg_tutorial_frontmatter.html

Mesh Filter :
存储一个Mesh(网格,模型的网格,就是范的由于哪三角面组成,组成一个啊则的型,三角面的有些终极信息)
Mesh Renderer:用来渲染一个模子的外观,就是范, 按照
mesh给其皮肤,给它们颜色
经过Material(材质)控制模型渲染的师
Material贴图(可以没有,可以是一个才的颜色)

normalize()
用来将一个向量,单位化(原来方向保持不移,长度成1),单位向量
max() 用来取得函数中极度要命的一个
dot 用来得到两独向量的点积
_WorldSpaceLightPos0 取得平行光的岗位
_LightColor0取得平行光的颜色
UNITY_MATRIX_MVP 这个矩阵用来将一个坐标从模型空间更换到剪裁空间
_World2Object 之矩阵用来把一个样子从社会风气空中更换到范空间
UNITY_LIGHTMODEL_AMBIENT
用来得到环境光,可每当Window>>Linghting菜单里面的Ambient Source设置

OpenGL 使用GLSL 编写shader
DirectX 使用HSSL 编写shader
英伟达 CG 编写shader(跨平台)

正规光照模型
每当规范光照模型中,我们拿上摄像机的光分为底四单部分
1.自发光
2.高光反射(根据法线直接反射,类似镜子)
3.漫照 Diffuse = 直射光颜色 * max(0,cos夹角(光跟法线的夹角) ) cosθ =
光方向· 法线方向
4.环境光

Unityshader中属性的类有哪
_Color(“Color”,Color)=(1,1,1,1)
_Vector(“Vector”,Vector)=(1,2,3,4)
_Int(“Int”,Int)= 34234
_Float(“Float”,Float) = 4.5
_Range(“Range”,Range(1,11))=6
_2D(“Texture”,2D) = “red”{}
_Cube(“Cube”,Cube) = “white”{}
_3D(“Texure”,3D) = “black”{}
传递步骤:1-3
1.从应用程序传递到到点函数的语义有什么样a2v
POSITION 顶点坐标(模型空间下之)
NORMAL 法线( 模型空间下)
TANGENT 切线(模型空间)
TEXCOORD0~n 纹理坐标(0-1的价值)
COLOR 顶点颜色

什么是OpenGL、DirectX
shader可以当是一致栽渲染命令 ,由opengl
或者dx进行辨析,来支配渲染丰富多彩的图纸

嗬是光照模型
光照模型就是一个公式,使用此公式来算在某某点之光照效果(模拟现实中的效力)

漫反射:
兰伯特光照模型:背光部分是纯黑的
Diffuse = 直射光颜色 * max(0, cosθ) ,其中cosθ =
dot(光方向,法线方向),即:点积
半兰伯特光照模型:背光部分无见面全黑
Diffuse = 直射光颜色 (cosθ0.5 +0.5)

3.片元函数传递让系统
SV_Target 颜色值,显示到屏幕上的水彩

Unity Shader的分类
使的是ShaderLab编写Unity中之Shader
1,表面在色器 Surface Shader
2,顶点/片最先在色器 Vertex/Fragment Shader
3,固定函数着色器 Fixed Function Shader

2.由巅峰函数传递让片元函数的上可使的语义
SV_POSITION 剪裁空间中之巅峰坐标(一般是系统直接运用)
COLOR0 可以传递一组值 4独
COLOR1 得传递一组值 4个
TEXCOORD0~7 传递纹理坐标

数学函数在线演示
http://zh.numberempire.com/graphingcalculator.php

一些网站
www.shadertoy.com
http://blog.csdn.net/poem_qianmo?viewmode=contents

UnityCG.cginc中有些常用的函数,这个文件默认会自动引入

Tags{ "LightMode"="ForwardBase" }
才出定义了是的LightMode才会收获部分Unity的内置光照变量
#include "Lighting.cginc"
引入unity的放权的文件,取得第一单直射光源(这样好看它的习性)

书籍
unity shader 入门精要(乐乐程序猿)
unity 3d shaderlab开发实战详解(第二版本)
unity 5.x shaders and effects cookbook(中文版
unity着色器和屏幕特效开发秘籍)

法线贴图:显示也蓝色之图,使用切线空间
法线坐标处理吧像素值:
pixel = (normal+1)/2
比如说素值处理啊仿照线坐标:
normal = pixel*2 – 1

Shader "Rock Alpha"{
    Properties{
        //_Diffuse("Diffuse Color",Color) = (1,1,1,1)
        _Color("Color",Color) = (1,1,1,1)
        _MainTex("Main Tex",2D) = "white"{}
        _NormalMap("Normal Map",2D) = "bump"{} //法线贴图
        _BumpScale("Bump Scale",Float)=1 //用来调节凹凸
        _AlphaScale("Alpha Scale",Float)=1 //调节透明度
    }
    SubShader{
        //用于透明度渲染
        Tags{ "Queue"="Transparent" "IngnoreProjector"="True" "RenderType"="Transparent" }
        Pass{
            Tags{ "LightMode" = "ForwardBase" }
            //以下两个用于透明度渲染
            ZWrite Off
            Blend SrcAlpha OneMinusSrcAlpha
            CGPROGRAM
            #include "Lighting.cginc"
            #pragma vertex vert
            #pragma fragment frag
            //fixed4 _Diffuse;
            fixed4 _Color;
            sampler2D _MainTex;
            float4 _MainTex_ST;
            sampler2D _NormalMap;
            float4 _NormalMap_ST;
            float _BumpScale;
            float _AlphaScale;
            struct a2v {
                float4 vertex:POSITION;
                float3 normal:NORMAL;
                float4 tangent:TANGENT;//tangent.w是用来确定切线空间中坐标轴的方向的 
                float4 texcoord:TEXCOORD0;
            };
            struct v2f {
                float4 svPos:SV_POSITION;
                //float3 worldNormal:TEXCOORD0;
                //float4 worldVertex:TEXCOORD1;
                float3 lightDir : TEXCOORD0;
                float4 uv:TEXCOORD1; //贴图坐标存在xy,法线贴图存在zw
            };
            v2f vert(a2v v) {
                v2f f;
                f.svPos = mul(UNITY_MATRIX_MVP, v.vertex);
                //f.worldNormal = UnityObjectToWorldNormal(v.normal);
                //f.worldVertex = mul(v.vertex, _World2Object);
                f.uv.xy = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;
                f.uv.zw = v.texcoord.xy * _NormalMap_ST.xy + _NormalMap_ST.zw;
                TANGENT_SPACE_ROTATION;//调用这个宏之后,会得到一个矩阵 rotation 这个矩阵用来把模型空间下的方向转换成切线空间下
                //ObjSpaceLightDir(v.vertex)//得到模型空间下的平行光方向 
                f.lightDir = mul(rotation, ObjSpaceLightDir(v.vertex)); //得到切线空间下的平行光方向 
                return f; 
            }
            fixed4 frag(v2f f) :SV_Target{
                //fixed3 normalDir = normalize(f.worldNormal);
                fixed4 normalColor = tex2D(_NormalMap,f.uv.zw);
                fixed3 tangentNormal = UnpackNormal(normalColor);//UnpackNormal()转换为切线空间下的法线
                tangentNormal.xy = tangentNormal.xy*_BumpScale;//调节凹凸
                tangentNormal = normalize(tangentNormal);
                fixed3 lightDir = normalize(f.lightDir);
                fixed4 texColor = tex2D(_MainTex, f.uv.xy)*_Color;
                fixed3 diffuse = _LightColor0.rgb * texColor.rgb * max(dot(tangentNormal, lightDir), 0);
                fixed3 tempColor = diffuse + UNITY_LIGHTMODEL_AMBIENT.rgb*texColor;
                return fixed4(tempColor,_AlphaScale*texColor.a );//透明度混合了_AlphaScale和texColor.a 
            }
            ENDCG
        }
    }
    Fallback "Specular"
}

shader中之各种空间坐标
http://blog.csdn.net/lyh916/article/details/50906272
什么是切线空间(法线贴图使用切线空间,就足以接用于不同模型)
http://blog.csdn.net/bonchoix/article/details/8619624

扬言两单函数,顶点函数和片元函数(系统自动调用这半个函数)
#pragma vertex vert
#pragma fragment frag
逐顶点计算光照,效果比差,顶点之间的忒迹象明显,但渲染速度较快
v2f vert(a2v v){…..}
逐像素计算光照,效果比好,平滑过渡,但渲染速度比较缓慢
fixed4 frag(v2f f):SV_Target{…}

//摄像机方向(视角方向)
float3 WorldSpaceViewDir(float4 v)      根据模型空间中的顶点坐标 得到 (世界空间)从这个点到摄像机的观察方向
float3 UnityWorldSpaceViewDir(float4 v) 世界空间中的顶点坐标==》世界空间从这个点到摄像机的观察方向
float3 ObjSpaceViewDir(float4 v)         模型空间中的顶点坐标==》模型空间从这个点到摄像机的观察方向
//光源方向
float3 WorldSpaceLightDir(float4 v)     模型空间中的顶点坐标==》世界空间中从这个点到光源的方向
float3 UnityWorldSpaceLightDir(float4 v)     世界空间中的顶点坐标==》世界空间中从这个点到光源的方向
float3 ObjSpaceLightDir(float4 v)     模型空间中的顶点坐标==》模型空间中从这个点到光源的方向
//方向转换
float3 UnityObjectToWorldNormal(float3 norm) 把法线方向 模型空间==》世界空间
float3 UnityObjectToWorldDir(float3 dir) 把方向 模型空间=》世界空间
float3 UnityWorldToObjectDir(float3 dir) 把方向 世界空间=》模型空间

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图