asp.net 探针下载

Unity 5.4已进入测试版,并且出色的功能是Light Probe Proxy Volume(LPPV)。 我只是想与您分享所有内容,工作流程和一些小实验以展示其实际效果。 (Unity 5.4 has entered beta and a stand out feature is the Light Probe Proxy Volume (LPPV). I just wanted to share with you all what it is, the workflow and some small experiments to show it in action.)

Correct as of 30.01.2016 – Subject to changes during 5.4 beta.

自2016年3月31日起更正–在5.4 beta期间可能会有更改

什么是光探针代理卷? (What Is A Light Probe Proxy Volume?)

The LPPV is a component which allows for more light information to be used on larger dynamic objects that cannot use baked lightmaps, think Skinned Meshes or Particle Systems. Yes! Particle Systems receiving Baked Light information, awesome!

LPPV是一个组件,可以将更多的光照信息用于无法使用烘焙光照贴图的大型动态对象,例如蒙皮网格或粒子系统。 是! 粒子系统收到Baked Light信息,太棒了!

如何使用LPPV组件? (How To Use The LPPV Component?)

The LPPV component requires an exisiting Light Probe Group. The component is located under Component -> Rendering -> Light Probe Proxy Volume, by default, the component looks like this:

LPPV组件需要一个现有的光探针组。 该组件位于“组件”->“渲染”->“光探针代理卷”下,默认情况下,该组件如下所示:

It’s a component you will need to add to the GameObject such as a 3d model or even a Light Probe Group. The GameObject you want to be affected by the LPPV needs to have a MeshRenderer / Renderer that has the Light Probes property set to “Use Proxy Volume”:

这是您需要添加到GameObject的组件,例如3d模型甚至是Light Probe Group。 您想要受到LPPV影响的GameObject需要具有一个将Light Probes属性设置为“ Use Proxy Volume”的MeshRenderer / Renderer:

You can borrow an existing LPPV component which is used by another GameObject by using the Proxy Volume Override, just drag and drop it into the property field for each Renderer you want to use it on. An example: If you added the LPPV component to the Light Probe Group object, you can then share that across all renderers with the Proxy Volume Override property:

您可以通过使用Proxy Volume Override借用另一个GameObject使用的现有LPPV组件,只需将其拖放到每个要使用它的渲染器的属性字段中。 一个示例:如果将LPPV组件添加到“光探针组”对象,则可以使用“代理体积覆盖”属性在所有渲染器之间共享该组件:

Setting up the Bounding Box:

设置边界框:

There are three options for setting up your Bounding Box:

设置边界框有三个选项:

  • Automatic Local自动本地
  • Automatic World

    自动世界

  • Custom

    自订

Automatic Local:

自动本地:

Default property setting – the bounding box is computed in local space, interpolated light probe positions will be generated inside this box. The bounding box computation encloses the current Renderer and all the Renderers down the hierarchy that have the Light Probes property set to Use Proxy Volume, same behaviour for Automatic World.

默认属性设置–边界框是在局部空间中计算的,将在此框内生成内插的光探针位置。 边界框计算将当前的渲染器和所有层次结构下的所有渲染器封闭,这些渲染器的“光探测器”属性设置为“使用代理体积”,对“自动世界”的行为相同。

Automatic World:

自动世界:

A world-aligned bounding box is computed. Automatic Global and Automatic Local options should be used in conjunction with Proxy Volume Override property on other Renderers. Additionally you could have a hierarchy of GameObjects that use the same LPPV component set on a parent in the hierarchy.

计算一个与世界对齐的边界框。 应将“自动全局”和“自动本地”选项与其他渲染器上的“代理卷覆盖”属性结合使用。 另外,您可能拥有一个GameObjects层次结构,该层次结构使用在层次结构中父级上设置的相同LPPV组件。

The Difference between this mode and Automatic Local is that in Automatic Local the bounding box is more expensive to compute when a large hierarchy of GameObjects uses the same LPPV component from a parent game object, but the resulting bounding box may be smaller in size, meaning the lighting data is more compact.

此模式与“自动本地”之间的区别在于,在“自动本地”中,当大型GameObjects使用来自父游戏对象的相同LPPV组件时,边界框的计算成本更高,但结果边界框的尺寸可能会更小,这意味着照明数据更紧凑。

Custom:

自订:

Empowers you to edit the bounding box volume yourself in the UI, changing the size and origin values in the Inspector or by using the tools to edit in the scene view. Bounding box is specified in local space of the GameObject. You will need to ensure that all the renderers are within the bounding box of the LPPV in this case.

使您可以在UI中自己编辑边界框体积,在Inspector中更改大小和原点值,或使用工具在场景视图中进行编辑。 在GameObject的本地空间中指定边界框。 在这种情况下,您需要确保所有渲染器都在LPPV的边界框内。

设置分辨率/密度: (Setting Up Resolution / Density:)

After setting up your bounding box, you need to then consider the density / resolution of the Proxy Volume. To do this there’s two options available under Resolution Mode:

设置边界框后,您需要考虑代理卷的密度/分辨率。 为此,“分辨率模式”下有两个可用选项:

Automatic:

自动:

Default property setting – set a value for the density i.e. number of probes per unit. Number of probes per unit is calculated in the X, Y and Z axis, so defined by the bounding box size.

默认属性设置–设置密度值,即每单位探针数。 每单位探针的数量是在X,Y和Z轴上计算的,因此由边界框大小定义。

Custom:

自订:

Set up custom resolution values in the X, Y and Z axis using the drop down menu. Values start at 1 and increment to a power of 2 up to 32. You can have 32x32x32 interpolating probes

使用下拉菜单在X,Y和Z轴上设置自定义分辨率值。 值从1开始,以2的幂为单位递增,最高为32。您可以使用32x32x32内插探针

使用LPPV时要考虑的性能测量: (Performance Measurements To Consider When Using LPPV:)

Keep in mind the interpolation for every batch of 64 interpolated light probes will cost around 0.15ms on CPU (i7 – 4Ghz) (at the time of Profiling). The light probe interpolation is multi-threaded, anything less than or equal to 64 interpolation light probes will not be multi-threaded and will run on the main thread.

请记住,每批64个插值的光探头的插值在CPU(i7 – 4Ghz)(配置文件时)上花费大约0.15ms。 光线探测器插值是多线程的,小于或等于64插值光线探测器的任何值都不会是多线程的,并且将在主线程上运行。

Using Unity’s built-in Profiler you can see BlendLightProbesJob on the main thread using the Timeline viewer, if you increase the amount of interpolated light probes to more than 64 you will see BlendLightProbesJob on the worker thread as well:

使用Unity的内置Profiler,您可以使用时间线查看器在主线程上看到BlendLightProbesJob,如果将插值的光探针的数量增加到64以上,则在工作线程上也会看到BlendLightProbesJob:

The behaviour for just one batch of 64 interpolated light probes is it will run only on the main thread and if there are more batches (>64) it will schedule one on the main thread and others on the worker threads, but this behaviour is just for one LPPV. If you have a lot of LPPVs with less than 64 interpolated light probes each, they will all run on the main thread.

仅一批64个插值式光探测器的行为是,它将仅在主线程上运行,并且如果有更多批次(> 64),它将在主线程上调度一个,而在工作线程上调度其他批次,但是这种行为仅仅是一台LPPV。 如果您有很多LPPV,每个LPPV少于64个内插光探头,它们将全部在主线程上运行。

硬件要求: (Hardware Requirements:)

The component will require at least Shader Model 4 graphics hardware and API support, including support for 3D textures with 32-bit floating-point format and linear filtering.

该组件将至少需要Shader Model 4图形硬件和API支持,包括对具有32位浮点格式和线性滤波的3D纹理的支持。

使用ShadeSHPerPixel函数的粒子系统的样本着色器: (Sample shader for particle systems that uses ShadeSHPerPixel function:)

The Standard shaders have support for this feature. If you want to add this to a custom shader, use ShadeSHPerPixel function. Check out this sample to see how to use this function:

标准着色器支持此功能。 如果要将其添加到自定义着色器中,请使用ShadeSHPerPixel函数。 查看此示例以了解如何使用此功能:

Shader "Particles/AdditiveLPPV" { Properties { _MainTex ("Particle Texture", 2D) = "white" {} _TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5) } Category { Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} Blend SrcAlpha One ColorMask RGB Cull Off Lighting Off ZWrite Off SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_particles #pragma multi_compile_fog // Don’t forget to specify the target #pragma target 3.0 #include "UnityCG.cginc" // You have to include this header to have access to ShadeSHPerPixel #include "UnityStandardUtils.cginc" fixed4 _TintColor; sampler2D _MainTex; struct appdata_t { float4 vertex : POSITION; float3 normal : NORMAL; fixed4 color : COLOR; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; fixed4 color : COLOR; float2 texcoord : TEXCOORD0; UNITY_FOG_COORDS(1) float3 worldPos : TEXCOORD2; float3 worldNormal : TEXCOORD3; }; float4 _MainTex_ST; v2f vert (appdata_t v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.worldNormal = UnityObjectToWorldNormal(v.normal); o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; o.color = v.color; o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { half3 currentAmbient = half3(0, 0, 0); half3 ambient = ShadeSHPerPixel(i.worldNormal, currentAmbient, i.worldPos); fixed4 col = _TintColor * i.color * tex2D(_MainTex, i.texcoord); >col.xyz += ambient; UNITY_APPLY_FOG_COLOR(i.fogCoord, col, fixed4(0,0,0,0)); // fog towards black due to our blend mode return col; } ENDCG } } } } Shader "Particles/AdditiveLPPV" { Properties { _MainTex ("Particle Texture", 2D) = "white" {} _TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5) } Category { Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"} Blend SrcAlpha One ColorMask RGB Cull Off Lighting Off ZWrite Off SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_particles #pragma multi_compile_fog // Don’t forget to specify the target #pragma target 3.0 #include "UnityCG.cginc" // You have to include this header to have access to ShadeSHPerPixel #include "UnityStandardUtils.cginc" fixed4 _TintColor; sampler2D _MainTex; struct appdata_t { float4 vertex : POSITION; float3 normal : NORMAL; fixed4 color : COLOR; float2 texcoord : TEXCOORD0; }; struct v2f { float4 vertex : SV_POSITION; fixed4 color : COLOR; float2 texcoord : TEXCOORD0; UNITY_FOG_COORDS(1) float3 worldPos : TEXCOORD2; float3 worldNormal : TEXCOORD3; }; float4 _MainTex_ST; v2f vert (appdata_t v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.worldNormal = UnityObjectToWorldNormal(v.normal); o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz; o.color = v.color; o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { half3 currentAmbient = half3(0, 0, 0); half3 ambient = ShadeSHPerPixel(i.worldNormal, currentAmbient, i.worldPos); fixed4 col = _TintColor * i.color * tex2D(_MainTex, i.texcoord); >col.xyz += ambient; UNITY_APPLY_FOG_COLOR(i.fogCoord, col, fixed4(0,0,0,0)); // fog towards black due to our blend mode return col; } ENDCG } } } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

Shader "Particles/AdditiveLPPV" {
Properties
{
_MainTex ("Particle Texture", 2D) = "white" {}
_TintColor ("Tint Color", Color) = (0.5,0.5,0.5,0.5)
}
Category
{
Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
Blend SrcAlpha One
ColorMask RGB
Cull Off Lighting Off ZWrite Off
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_particles
#pragma multi_compile_fog
// Don’t forget to specify the target
#pragma target 3.0
#include "UnityCG.cginc"
// You have to include this header to have access to ShadeSHPerPixel
#include "UnityStandardUtils.cginc"
fixed4 _TintColor;
sampler2D _MainTex;
struct appdata_t
{
float4 vertex : POSITION;
float3 normal : NORMAL;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
};
struct v2f
{
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
UNITY_FOG_COORDS(1)
float3 worldPos : TEXCOORD2;
float3 worldNormal : TEXCOORD3;
};
float4 _MainTex_ST;
v2f vert (appdata_t v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.worldNormal = UnityObjectToWorldNormal(v.normal);
o.worldPos = mul(unity_ObjectToWorld, v.vertex).xyz;
o.color = v.color;
o.texcoord = TRANSFORM_TEX(v.texcoord,_MainTex);
UNITY_TRANSFER_FOG(o,o.vertex);
return o;
}
fixed4 frag (v2f i) : SV_Target
{
half3 currentAmbient = half3(0, 0, 0);
half3 ambient = ShadeSHPerPixel(i.worldNormal, currentAmbient, i.worldPos);
fixed4 col = _TintColor * i.color * tex2D(_MainTex, i.texcoord);
>col.xyz += ambient;
UNITY_APPLY_FOG_COLOR(i.fogCoord, col, fixed4(0,0,0,0)); // fog towards black due to our blend mode
return col;
}
ENDCG
}
}
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

Shader "Particles/AdditiveLPPV" {
Properties
{
_MainTex ( "Particle Texture" , 2D ) = "white" { }
_TintColor ( "Tint Color" , Color ) = ( 0.5 , 0.5 , 0.5 , 0.5 )
}
Category
{
Tags { "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent" }
Blend SrcAlpha One
ColorMask RGB
Cull Off Lighting Off ZWrite Off
SubShader
{
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile_particles
#pragma multi_compile_fog
// Don’t forget to specify the target
#pragma target 3.0
#include "UnityCG.cginc"
// You have to include this header to have access to ShadeSHPerPixel
#include "UnityStandardUtils.cginc"
fixed4 _TintColor ;
sampler2D _MainTex ;
struct appdata_t
{
float4 vertex : POSITION ;
float3 normal : NORMAL ;
fixed4 color : COLOR ;
float2 texcoord : TEXCOORD0 ;
} ;
struct v2f
{
float4 vertex : SV_POSITION ;
fixed4 color : COLOR ;
float2 texcoord : TEXCOORD0 ;
UNITY_FOG_COORDS ( 1 )
float3 worldPos : TEXCOORD2 ;
float3 worldNormal : TEXCOORD3 ;
} ;
float4 _MainTex_ST ;
v2f vert ( appdata _ t v )
{
v2f o ;
o . vertex = UnityObjectToClipPos ( v . vertex ) ;
o . worldNormal = UnityObjectToWorldNormal ( v . normal ) ;
o . worldPos = mul ( unity_ObjectToWorld , v . vertex ) . xyz ;
o . color = v . color ;
o . texcoord = TRANSFORM_TEX ( v . texcoord , _MainTex ) ;
UNITY_TRANSFER_FOG ( o , o . vertex ) ;
return o ;
}
fixed4 frag ( v2f i ) : SV_Target
{
half3 currentAmbient = half3 ( 0 , 0 , 0 ) ;
half3 ambient = ShadeSHPerPixel ( i . worldNormal , currentAmbient , i . worldPos ) ;
fixed4 col = _TintColor * i . color * tex2D ( _MainTex , i . texcoord ) ;
> col . xyz += ambient ;
UNITY_APPLY_FOG_COLOR ( i . fogCoord , col , fixed4 ( 0 , 0 , 0 , 0 ) ) ; // fog towards black due to our blend mode
return col ;
}
ENDCG
}
}
}
}

翻译自: https://blogs.unity3d.com/2016/02/03/light-probe-proxy-volume-5-4-feature-showcase/

asp.net 探针下载

asp.net 探针下载_光探针代理卷:5.4功能展示相关推荐

  1. 用python实现bt下载_【图片】分享一段功能非常简陋的python代码实现下载free种【pt吧】_百度贴吧...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ##### class Torrents(): ''' Define a torrent ''' def __init__(self,torrent): ...

  2. Ip探针_信息探针_社工查询个人信息php网站源码

    介绍: Ip探针_信息探针_社工查询个人信息php网站源码 他可以查IP 精确位置 然后社工地址的话更准 需要的东西: 服务器或主机一部 2.浏览器搜索 二级域名分发 很多免费的 3.绑定域名 4.上 ...

  3. 如何在 ASP.NET 中下载文件

    这是笔者常被问到的一个问题,如何通过ASP.NET来下载文件,这个问题可大可小,我们先从小的开始.当我们要让用户下载一个文件,最简单的方式是通过Response.Redirect指令: 殇﹖ ☆粉汐げ ...

  4. 分享66个ASP上传下载源码,总有一款适合您

    分享66个ASP上传下载源码,总有一款适合您 66个ASP上传下载源码下载链接:https://pan.baidu.com/s/1AAZA99BVNOFtVFIjnYl4XA?pwd=vyqa  提取 ...

  5. 【JAVA基础☞探针技术】Java探针-Java Agent技术

    个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 1.原理:基于javaAgent和Java字节码注入技术的java探针工具技术原理 2.原理分析 动态代理功能实现说明,我们利用ja ...

  6. cleanmymac3.9.6下载_单耳兔o2oapp下载-单耳兔o2o商城官方版下载v10.6 安卓版

    单耳兔o2o商城官方版是一款非常强大的线上o2o平台.成熟的互联网电商.完全免费开店.帮助用户进行更好的平台推广.产多商品可供自由选择.支持各种支付方式.一键分享开店.让更多的人推广销售,创造双赢.利 ...

  7. 黑鹰ASP教程(全部)下载

    黑鹰ASP教程(全部)下载 [url]http://down.dzfly.com/hacker/3800/asp/lesson1.rar[/url] [url]http://down.dzfly.co ...

  8. figma下载_在Figma上进行原型制作的各种触发选项

    figma下载 Prototypes are model versions of digital products. They're used to measure usability by test ...

  9. figma下载_在Figma中进行原型制作的技巧和窍门

    figma下载 自定义过渡和微交互 (Custom transitions and micro-interactions) Yep, I know that there are a lot of us ...

最新文章

  1. mysql combat_LICENSE · 爱是与世界平行/mysqlActualCombat - Gitee.com
  2. Learning to rank基本算法小结
  3. SAP Spartacus Session affinity
  4. .NET的一点历史故事:擦肩而过的机遇
  5. Java进阶之对象克隆(复制)
  6. Windows XP下Service的编程入门[2]
  7. 使用eclipse开发web需要搭建什么环境
  8. RTT时钟管理篇——RTT定时器超时判断理解
  9. “中国锦鲤” 信小呆辞职旅行,这辈子真的不用工作了?
  10. linux命令行终端设置tab补全文件名或路径不区分大小写(大小写不敏感)
  11. 用户控件中得到CurrentUser
  12. 如何使用C#进行Visio二次开发
  13. auto.js下载安装教程
  14. 如何阅读MySQL源码
  15. 百度知道,每天电影资源轻松引流赚钱小项目!
  16. 博弈论中SG函数的解释与运用
  17. Googel浏览器添加百度搜索引擎
  18. VMware虚拟机鼠标失灵怎么办
  19. 信息安全基础练习题(看完包过)
  20. 2020校招面试之深信服

热门文章

  1. python中输出语句的怎么写_python 中简单的输出语句
  2. 什么才是社交APP该有的样子
  3. python之 下载及安装Anaconda
  4. 【Linux】vi和vim编辑器——常用命令大全
  5. akshare库 | A股股票价格指数数据获取
  6. 【Linux驱动开发】Linux 自带按键驱动
  7. 51单片机波特率计算工具介绍
  8. 【bug 记录】df.to_csv()中文件名的问题
  9. “在本地计算机无法启动Server服务。错误2:系统找不到指定的文件。”
  10. 为什么MySQL不推荐使用uuid作为主键?真香!