新普金娱乐网址


口才(【数学】读书笔记)

原生JS:Number对象详解

做作家还是做贰个地法学家?

  • 三月 20, 2019
  • 数学
  • 没有评论

Shader学习笔记
例子:

倘使您的儿女哭着喊着要做八个骚人,怎么做?答案是:别拦着,让她去。假诺他有文采,迟早会找到本人的差事呼召(calling),而对于诗的爱,会默默藏在心中,滋养那个工作。

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"
}

今日要说的这么些美籍韩裔青年朱恩 Huh,正是二个典型的例证。

Mesh Filter :
存款和储蓄3个Mesh(网格,模型的网格,就是模型的由什么三角面组成,组成1个什么体统的模子,三角面包车型大巴一些极端新闻)
Mesh Renderer:用来渲染二个模子的外观,正是榜样, 依据mesh给它皮肤,给它颜色
透过Material(质感)控制模型渲染的旗帜
Material贴图(能够没有,能够是三个单独的颜料)

June Huh

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

JuneHuh方今是Prince顿高等研讨院的数学系的悠长研商员,他被认为是四年一届的数学界最高荣誉Phil茨奖(Fields)的梦想之星。

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

June在加州出生,不过二虚岁时就随老人回来高丽国。他的数学成绩并糟糕,一向期待做三个诗人,他写了一部分诗歌和中篇随笔,然则都并未登出。2003年,他考上了熊津国立大学,知道写诗不能养活本身,他控制做一名科学和技术记者,于是选修了天历史学和物艺术学。

有个别网站
www.shadertoy.com
http://blog.csdn.net/poem_qianmo?viewmode=contents

在高校的最后一年,菲尔茨奖(Fields)的获得者、日本物农学家广中平佑到大田高校教授,June想去采访她,顺便赚点稿费。听了广中有关奇点数学的发言后,他似懂非懂,可是发生了深厚的兴趣,就报了广中的数学课。那门课没多少人能听懂,June也听不太懂,然而坚韧不拔了下去。天天还跟老师拉近乎,一起吃午餐。

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

超越生谈起数学理论的时候,他“假装”知道,并且与之谈笑风生。广中就把自个儿的一生所学,都传给了她。

UnityCG.cginc中有的常用的函数,那个文件暗许会自动引入

所谓奇点,正是微积分遇到的难点,可是透过投入新参数,能够将其消除成多少个一般的微积分难题。

//摄像机方向(视角方向)
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) 把方向 世界空间=》模型空间

June属于偶然成才。广中平佑还饰有点私心的。他早已快80周岁了,还有1个有关奇点点重庆大学数学估摸没有表明,希望能找到衣钵传人,替本身成功终身的自觉。

什么是OpenGL、DirectX
shader能够认为是一种渲染命令 ,由opengl
只怕dx实行解析,来支配渲染丰富多彩的图形

在她援引下,June同学进入了加利福尼亚大学读数学。

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

哪个人也没悟出,这一去让她最终证实了数学皇冠上的一颗宝石:罗塔猜度 (Rota
conjecture.)。

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

我们先来看3个普普通通的三角形。

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 顶点坐标(模型空间下的)
NOSportageMAL 法线( 模型空间下)
TANGENT 切线(模型空间)
TEXCOORD0~n 纹理坐标(0-1的值)
COLOLAND 顶点颜色

3个三角

2.从巅峰函数字传送递给片元函数的时候能够行使的语义
SV_POSITION 剪裁空间中的顶点坐标(一般是系统一向运用)
COLO安德拉0 能够传递一组值 四个
COLOKoleos1 得以传递一组值 伍个
TEXCOORD0~7 传递纹理坐标

一点也不细略,有顶点,有边,这一个哪个人都能看懂,是吗?

3.片元函数字传送递给系统
SV_Target 颜色值,显示到荧屏上的水彩

其一数学算计,能够知道为给多边形的各样点涂上颜色,可是同样条边上的三个点,必须是见仁见智的颜色。

扬言八个函数,顶点函数和片元函数(系统活动调用那多少个函数)
#pragma vertex vert
#pragma fragment frag
逐顶点总结光照,效果较差,顶点之间的过于迹象鲜明,但渲染速度较快
v2f vert(a2v v){…..}
逐像素总计光照,效果较好,平滑对接,但渲染速度较慢
fixed4 frag(v2f f):SV_Target{…}

给三角形顶点涂色

怎么样是光照模型
光照模型就是二个公式,使用这些公式来计算在有些点的普照效果(模拟现实中的效果)

换句话说,能够那样描述。

规范光照模型
在正规光照模型里面,大家把进入录像机的光分为上边多个部分
1.自发光
2.高光反射(根据法线直接反射,类似镜子)
3.漫反光 Diffuse = 直射光颜色 * max(0,cos夹角(光和法线的夹角) ) cosθ =
光方向· 法线方向
4.环境光

  1. 总共有q种色彩,须要涂到多边形的顶点。
  2. 平等条边上的两极分化,必须涂上分化的颜色。

Tags{ "LightMode"="ForwardBase" }
唯有定义了不利的LightMode才能博取部分Unity的内置光照变量
#include "Lighting.cginc"
引入unity的放置的文书,取得第三个直射光源(那样能够访问它的脾气)

标题是: 那么一共有微微种色彩组合。

normalize()
用来把一个向量,单位化(原来方向保持不变,长度变为1),单位向量
max() 用来赢得函数中最大的3个
dot 用来收获八个向量的点积
_WorldSpaceLightPos0 取得平行光的职位
_LightColor0取得平行光的颜料
UNITY_MATRIX_MVP 这些矩阵用来把一个坐标从模型空间更换成剪裁空间
_World2Object 以此矩阵用来把3个方向从世界空中更换来模型空间
UNITY_LIGHTMODEL_AMBIENT
用来博取环境光,可在Window>>Linghting菜单里面包车型客车Ambient Source设置

那是壹其中学生也能回答的题材。

融合:八个颜色相乘,融合后混合了三种颜色,但亮度恐怕变暗
外加:三个颜色相加,相加后亮度一般会抓实

  1. 对于极端,一共有q种颜色可选,因为它是第四个点,你爱涂什么颜色,就涂什么颜色。
  2. 对此底边一侧的终端,则唯有q-1种选拔了,理由相当粗略:它无法跟顶点同色,所以采用上就比q少了1项。
  3. 对此剩余的三个极端来说,唯有q-3个采纳了,因为它不可能与其它的点同色。

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

那般全数的颜料排列,一共有:

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

q x (q – 1) x (q – 2) = q3 – 3q2 + 2q.

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

这么多样。

法线贴图:展现为石磨蓝的图纸,使用切线空间
法线坐标处理为像素值:
pixel = (normal+1)/2
像素值处理为法线坐标:
normal = pixel*2 – 1

其一等式叫做 chromatic polynomial(着色多项式)。它有不少有意思的特色。

法线贴图的应用(凹凸调节+反射率)

取这么些多项式的周全:1, –3 和 2

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"
}

取其相对值,正是: 1, 3, 2

它们有两本性状。

  1. 是单峰(unimodal),也正是说,只有二个终端(在此间是3),在终极之前,数值都以稳中有升的(在那里是1),过了极端都是降低的(在那边是2)。
  2. 是对数凹(log-concave)。意思是,相邻的五个数,前后两边的乘积(在此地是1×5=5)小于中间那些数的平方(3^2=9)。大家相比较之下,即便是数列(2,3,5)则不是对数凹,因为(2×5=10
    大于中间数的平方 3^2=9)。

你可以想像三个有广大条边的图样,有广大的终端,很多的边,以差别方法持续。

每一种图形都有多个不一的着色多项式。

在那样个图形中,物历史学家推断,那几个着色多项式的周详,都合乎地方说过的两个性状:

  1. 单峰。
  2. 对数凹。

那叫做Read’s conjecture.(里德推测)

June注脚了那几个猜度。他用的是奇点理论,在此以前没有有过物农学家从那几个角度去思考里德测度。

随后他才理解,原来Reade测度只是罗塔猜度的3个特例。

罗塔推测更抽象。

June的孝敬,正是跟同伴一起,评释了罗塔预计,并把结果揭橥在互连网上。

June得到这么的做到,即便与温馨的资质有关,也与他的恩师广中平佑深厚的人文修养和她协调的诗文磨练,有不小的关联。

广中平佑曾在贵州高校刊登过一篇《数学中的制造性》的阐述。

她觉得数学的思索格局在今后很首要,要想升高数学思想,必须学会驾驭隐晦
(ambiguity)。

人生也罢,大自然也罢,随地存在隐晦。

广中平佑把隐晦分成了七种:① 、杂音 贰 、不详 叁 、繁杂 四 、不可测 五 、争辩6、抱卵 柒 、方便

每一项都比较好玩,发人深省。

杂音,正是能够建议通信中的噪音和误差。

不解则是读书处理资料不全,或只要不足的难点,比如算计出1个水塘的体积。

忙乱是用分形理论,对付复杂性。

不可测正是认可上帝掷骰子。

抵触很有趣,正是要找到分裂点。

分裂点类似高速公路上的下匝道,错过之后,就无法转化了。

抱卵是句菲律宾语词,指的是思想孕育的进度。他愈加分解:

自我将来还不太能描述这几个孕育进程,可是,仿佛有那般一种说法,在一人坚定信念形成从前,都会有一段完全鲜为人知困顿或是魂不守舍的级差。
好像有趣的事中部分宗教里受苦受难的高人,都有过一段全然思疑无知的场所。
打个比方,好像洗相片,一定要在暗房里才洗的出好照片。
人们往往在一段空白无知的一世之后,而不是在刻意思索又考虑之后,忽然间,峰回路转,真相大白,复杂的东西条理明显的全套显示如今。
就类似前面引述的莫札特的话那样,那是一种很难驾驭的进度,或者和人类思维活动的不逻辑性有关,就像人类的合计进程不是合乎逻辑的一步一步推向结论,而是有时候必要先看到整个,而在逐年擦掉你不想要的部分,最后留下来的刚巧是假诺与结论间的鲜明提到。
就像一定要有这么三个分心的、一片空白的愚拙状态,才会弄明白一些东西。
要是你有这种心神不安的经历,也许你会有变为地经济学家的恐怕。

终极,方正是指,正是无法为了分类的有利,无视事物的扑朔迷离。

June深受恩师影响,才从收受隐晦初始,找出了一条光明的正途,沿着一条大约平素不人攀登的照相,爬上了数学的山上。

广中与June

二〇一八年Fields奖,也许会公布给朱恩,假如没有,2022年,他也是那么些奖的精锐争夺者。Fields奖四年颁发3回,与男子足球世界杯同年。

大家盼望神奇小子,June再次创下神奇呢。

那件事对于大家的诱导:

  1. 履新正是旧加新,A加B
  2. 听不懂没涉及,基础不够也没提到,只要消化能听懂的一部分,前边的能够稳步地补,会都出现转机。
  3. 数学和诗篇都亟需天分,可是相互并不是相互争辩不可融通的。
  4. 二个优秀的地工学家,也是能够横跨文科理科二科的。广中平佑青眼俳句,有叁遍用日本俳句诗人小林一茶(Kobayashi
    Issa)为笔名投稿。其结果是,在复变函数论中多了1个一茶定理(Issa’s
    西奥rem)。

顺手说一句,小林一茶的俳句充满烟火气,他写过“大寒后,小便洞真直”,以及“拔萝卜的老乡,挥着萝卜指路。”

就此,本文题指标答案已经显明了。做小说家,做地文学家,都亟需创设性的心血,而两岸非常的大概是如出一辙种东西。

相关文章

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