网站结构是体现的工程分包信息平台

news/2025/10/6 2:00:06/文章来源:
网站结构是体现的,工程分包信息平台,大连网络产业大厦,wordpress 添加ico1. 透明度测试物体的阴影 对于物体有片元丢弃的情况#xff0c;比如透明度测试或者后边会讲到的消融效果#xff0c;使用默认的 ShadowCaster Pass 会产生问题#xff0c;这是因为该Pass在生成阴影映射纹理时#xff0c;没有考虑被丢弃的片元#xff0c;而是使用完整的模…1. 透明度测试物体的阴影 对于物体有片元丢弃的情况比如透明度测试或者后边会讲到的消融效果使用默认的 ShadowCaster Pass 会产生问题这是因为该Pass在生成阴影映射纹理时没有考虑被丢弃的片元而是使用完整的模型计算深度因此镂空的部分也会向外投射阴影。 要解决这个问题可以使用Unity内置的Pass: UsePass Legacy Shaders/Transparent/Cutout/VertexLit/CASTER由于该Pass内部在计算阴影时需要用到特定名称的变量因此在使用时必须声明如下属性 Properties {_MainTex(MainTex, 2D) white{}_Color(Color, Color) (1, 1, 1, 1)_Cutoff(Cutoff, range(0, 1)) 0}除此以外我们也可以自己实现一个 ShadowCaster 的 Pass代码与上一篇【Unity Shader入门精要 第9章】更复杂的光照三中手动实现的 ShadowCaster 基本一样只是在片元着色器中加入和正常渲染 Pass 中一样的剔除代码即可。 另外由于镂空物体的内部也可能产生阴影因此根据需要可以将物体的Cast Shadows选项选为Two Sided 测试Shader如下 Shader MyShader/Chapter_9/Chapter_9_Shadow_AlphaTest_Shader {Properties{_MainTex(MainTex, 2D) white{}_Color(Color, Color) (1, 1, 1, 1)_Cutoff(Cutoff, range(0, 1)) 0}SubShader{Tags {Queue AlphaTest IgnoreProjector True RenderType TransparentCutout}Pass{Tags {LightMode ForwardBase}Cull FrontCGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cginc#include Lighting.cginc#include AutoLight.cginc#pragma multi_compile_fwdbasestruct a2v{float4 vertex : POSITION;float3 normal : NORMAL;float2 uv : TEXCOORD0;};struct v2f{float4 pos : SV_POSITION;float2 uv : TEXCOORD0;float3 worldNormal : TEXCOORD1;float3 worldPos : TEXCOORD2;SHADOW_COORDS(3)};sampler2D _MainTex;float4 _MainTex_ST;fixed _Cutoff;v2f vert(a2v i){v2f o;o.pos UnityObjectToClipPos(i.vertex);o.worldNormal mul(i.normal, (float3x3)unity_WorldToObject);o.uv TRANSFORM_TEX(i.uv, _MainTex);o.worldPos mul(unity_ObjectToWorld, i.vertex).xyz;TRANSFER_SHADOW(o);return o;}fixed4 frag(v2f i) : SV_Target{float3 _worldNormal normalize(i.worldNormal);float3 _worldLight normalize(_WorldSpaceLightPos0.xyz);fixed4 _sampledColor tex2D(_MainTex, i.uv);clip(_sampledColor.w - _Cutoff);fixed3 _ambient UNITY_LIGHTMODEL_AMBIENT.rgb;fixed3 _diffuse _LightColor0.rgb * _sampledColor.xyz * (0.5 * dot(_worldLight, _worldNormal) 0.5);UNITY_LIGHT_ATTENUATION(_atten, i, i.worldPos);return fixed4(_ambient _diffuse * _atten, 1);}ENDCG}Pass{Tags {LightMode ForwardBase}Cull BackCGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cginc#include Lighting.cginc#include AutoLight.cginc#pragma multi_compile_fwdbasestruct a2v{float4 vertex : POSITION;float3 normal : NORMAL;float2 uv : TEXCOORD0;};struct v2f{float4 pos : SV_POSITION;float2 uv : TEXCOORD0;float3 worldNormal : TEXCOORD1;float3 worldPos : TEXCOORD2;SHADOW_COORDS(3)};sampler2D _MainTex;float4 _MainTex_ST;fixed _Cutoff;v2f vert(a2v i){v2f o;o.pos UnityObjectToClipPos(i.vertex);o.worldNormal mul(i.normal, (float3x3)unity_WorldToObject);o.uv TRANSFORM_TEX(i.uv, _MainTex);o.worldPos mul(unity_ObjectToWorld, i.vertex).xyz;TRANSFER_SHADOW(o);return o;}fixed4 frag(v2f i) : SV_Target{fixed3 _ambient UNITY_LIGHTMODEL_AMBIENT.rgb;float3 _worldNormal normalize(i.worldNormal);float3 _worldLight normalize(_WorldSpaceLightPos0.xyz);fixed4 _sampledColor tex2D(_MainTex, i.uv);clip(_sampledColor.w - _Cutoff);fixed3 _diffuse _LightColor0.rgb * _sampledColor.xyz * (0.5 * dot(_worldLight, _worldNormal) 0.5);UNITY_LIGHT_ATTENUATION(_atten, i, i.worldPos);return fixed4(_ambient _diffuse * _atten, 1);}ENDCG}//使用内置的Pass处理透明度测试的物体向外投射阴影//UsePass Legacy Shaders/Transparent/Cutout/VertexLit/CASTER//或者根据渲染逻辑手动实现符合当前效果的ShadowCaster的PassPass{Tags { LightMode ShadowCaster }CGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cginc#pragma multi_compile_shadowcasterstruct a2v{float4 vertex : POSITION;float2 uv : TEXCOORD0;float3 normal : NORMAL;};struct v2f{V2F_SHADOW_CASTER;float2 uv : TEXCOORD0;};sampler2D _MainTex;float4 _MainTex_ST;fixed _Cutoff;v2f vert(a2v v){v2f o;o.uv TRANSFORM_TEX(v.uv, _MainTex);TRANSFER_SHADOW_CASTER_NORMALOFFSET(o);return o;}fixed4 frag(v2f i) : SV_Target{fixed4 _sampledColor tex2D(_MainTex, i.uv);clip(_sampledColor.w - _Cutoff);SHADOW_CASTER_FRAGMENT(i);}ENDCG }}} 效果如下 2. 透明度混合物体的阴影 2.1 投射阴影 透明度混合的Shader中关闭了深度写入不会参与深度纹理的计算因此不会向其他物体投射阴影。要使透明度测试的物体能够向外投射阴影方法有很多比如放一个直接算阴影但不渲染自身的代替物体或者像书中说的添加一个非Transparent的FallBack的Shader再或者自己手写一个都可以实现。 下面的例子就是将之前的阴影投射的Pass复制过来也可以正常产生阴影。 Shader MyShader/Chapter_9/Chapter_9_Shadow_AlphaBlend_Shader {Properties{_MainTex(MainTex, 2D) white{}}SubShader{Tags { Queue Transparent RenderType Transparent IgnoreProjector True}Pass{Tags {LightMode ForwardBase}Cull FrontZWrite OffBlend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fwdbase#include UnityCG.cginc#include Lighting.cginc#include AutoLight.cgincstruct a2v{float4 vertex : POSITION;float3 normal : NORMAL;float2 uv : TEXCOORD0;};struct v2f{float4 pos : SV_POSITION;float2 uv : TEXCOORD0;float3 worldNormal : TEXCOORD1;float3 worldPos : TEXCOORD2;SHADOW_COORDS(3)};sampler2D _MainTex;float4 _MainTex_ST;v2f vert(a2v i){v2f o;o.pos UnityObjectToClipPos(i.vertex);o.worldNormal UnityObjectToWorldNormal(i.normal);o.worldPos mul(unity_ObjectToWorld, i.vertex).xyz;o.uv TRANSFORM_TEX(i.uv, _MainTex);TRANSFER_SHADOW(o);return o;}fixed4 frag(v2f i) : SV_Target{fixed3 _ambient UNITY_LIGHTMODEL_AMBIENT.rgb;float3 _worldNormal normalize(i.worldNormal);float3 _worldLight normalize(_WorldSpaceLightPos0.xyz);float4 _mainColor tex2D(_MainTex, i.uv);fixed3 _diffuse _LightColor0.rgb * _mainColor.xyz * (0.5 * dot(_worldLight, _worldNormal) 0.5);UNITY_LIGHT_ATTENUATION(_atten, i, i.worldPos);return fixed4(_ambient _diffuse * _atten, _mainColor.w);}ENDCG}Pass{Tags {LightMode ForwardBase}Cull BackZWrite OffBlend SrcAlpha OneMinusSrcAlphaCGPROGRAM#pragma vertex vert#pragma fragment frag#pragma multi_compile_fwdbase#include UnityCG.cginc#include Lighting.cginc#include AutoLight.cgincstruct a2v{float4 vertex : POSITION;float3 normal : NORMAL;float2 uv : TEXCOORD0;};struct v2f{float4 pos : SV_POSITION;float2 uv : TEXCOORD0;float3 worldNormal : TEXCOORD1;float3 worldPos : TEXCOORD2;SHADOW_COORDS(3)};sampler2D _MainTex;float4 _MainTex_ST;v2f vert(a2v i){v2f o;o.pos UnityObjectToClipPos(i.vertex);o.worldNormal UnityObjectToWorldNormal(i.normal);o.worldPos mul(unity_ObjectToWorld, i.vertex).xyz;o.uv TRANSFORM_TEX(i.uv, _MainTex);TRANSFER_SHADOW(o);return o;}fixed4 frag(v2f i) : SV_Target{fixed3 _ambient UNITY_LIGHTMODEL_AMBIENT.rgb;float3 _worldNormal normalize(i.worldNormal);float3 _worldLight normalize(_WorldSpaceLightPos0.xyz);float4 _mainColor tex2D(_MainTex, i.uv);fixed3 _diffuse _LightColor0.rgb * _mainColor.xyz * (0.5 * dot(_worldLight, _worldNormal) 0.5);UNITY_LIGHT_ATTENUATION(_atten, i, i.worldPos);return fixed4(_ambient _diffuse * _atten, _mainColor.w);}ENDCG}Pass{Tags { LightMode ShadowCaster }CGPROGRAM#pragma vertex vert#pragma fragment frag#include UnityCG.cginc#pragma multi_compile_shadowcasterstruct v2f{V2F_SHADOW_CASTER;};v2f vert(appdata_base v){v2f o;TRANSFER_SHADOW_CASTER_NORMALOFFSET(o);return o;}fixed4 frag(v2f i) : SV_Target{SHADOW_CASTER_FRAGMENT(i);}ENDCG}}// FallBack VertexLit // FallBack Diffuse } 效果 2.2 接收阴影 半透物体接收阴影就比较麻烦了即使像书中说的将FallBack设置为 VertexLit实际也是无法接收到阴影的可以将上面测试shader中的注释放开试一下。 这是因为正常半透物体的渲染队列为3000Transparent而在2500以后就没有阴影映射纹理的信息了因此即使shader里有相应代码也无法正常接收到阴影。 从下面 FrameDebug 的截图中也可以看出来 网上最多的说法是将渲染队列强制调到2500以下比如像这样 这样虽然能接收到阴影但显然不是正经做法因为这样会造成半透物体的渲染顺序错乱比如这样 要真正解决这个问题内容就超出《入门精要》的范围了也超出我的范围了。 这里先存本书《实时阴影技术》有时间开坑研究一下应该是不会有时间了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

混沌鸿蒙网站建设公司网站建设维护及使用管理办法

上一章学习了STM32MP1内置RTC外设,了解了Linux系统下RTC驱动框架。一般的应用场合使用SOC内置的RTC就可以了,而且成本也低,但是在一些对于时间精度要求比较高的场合,SOC内置的RTC就不适用了。这个时候需要根据自己的应用要求选择合…

day1 Gitlab Runner 学习

Gitlab Runner 学习 runner下载|安装|启动 下载 # 为您的系统下载二进制文件 sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runne…

网站云优化有哪些做网站好的公司

文章目录 一、前言二、准备阶段三、环境配置3.1 Type-V管理器环境配置3.2 新增.wslconfig 文件 四、遇到的问题以及解决方案 一、前言 ​ 使用 wsl 的过程中,会出现 WSL 的IP地址 找不到,或者无法和计算机通讯,搞 嵌入式 的话,还…

珠海模板建站平台网站建设用途

一 什么是nodeJs nodeJs是一个后端技术,研究web应用的开发模式,能够开发一些简单的服务器,学会操作数据库等等。官方解释就是:nodeJs是基于谷歌v8引擎的javascript运行环境 nodeJs使用了一个事件驱动,非非阻塞式I/O模型…

网站建设合作伙伴网页搜索器

要搭建自己的 PyPI 服务器,您可以使用 warehouse 项目,它是 PyPI 的开源实现。下面是一些基本步骤: 准备环境: 安装 Python安装 PostgreSQL 数据库 克隆 warehouse 项目: git clone https://github.com/pypa/wareh…

Software Foundations Vol.I : 使用结构化的数据(Lists)

Software Foundations Vol.I : 使用结构化的数据(Lists)数值序对 在 Inductive 类型定义中,每个构造子(Constructor)可以有任意多个参数 —— 可以没有(如 true 和 O),可以只有一个(如 S),也可以更多 (如 ny…

阿里云1M做网站闸北区网站建设网

狂神说SpringBoot系列连载课程,通俗易懂,基于SpringBoot2.2.5版本,欢迎各位狂粉转发关注学习。未经作者授权,禁止转载分布式理论什么是分布式系统?在《分布式系统原理与范型》一书中有如下定义:“分布式系统…

Software Foundations Vol.I : 归纳证明(Induction)

Software Foundations Vol.I : 归纳证明(Induction)归纳法证明 我们在上一章中通过基于化简的简单论据证明了 0 是 + 的左幺元。 我们也观察到,当我们打算证明 0 也是 + 的 右 幺元时事情就没这么简单了 Theorem plus…

外贸网站建设和seo海淀网站建设多少钱

本质上, 这两种方式都是加载CSS文件, 但还是存在着细微的差别 import 机制不同于link,link是加载页面前css加载完毕,import 是先读取文件再加载import是css2.0里的 ie5以上不支持用js控制dom时改变样式,只能用link,import不是dom…

广州网站建设app开发哈尔滨网页模板建站

首先思考一个问题:如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损? 本文提供解决这个问题的一种方案。 场景 有两个基于 Dubbo 的微服务应用,一个是服务提供者&…

Software Foundations Vol.I : Coq函数式编程(Basics)

好久没写随笔了,随便投投.这里的内容主要取至《软件基础》第一卷https://coq-zh.github.io/. 我补充了一部分习题的答案,在https://github.com/mesonoxian-yao/softwareFoudations-volume1-coqLearn可以看看. Software…

Python 在自然语言处理中的应用与发展

一、引言 🗣️ 自然语言处理(NLP)是人工智能的重要分支,旨在让计算机理解、生成和处理人类语言。它广泛应用于 搜索引擎、机器翻译、智能客服、情感分析、舆情监测 等场景。Python 作为 AI 研究和工程实现的主流语…

专业的深圳网站建设公司排名深圳网站制作公司在那

文章目录 解决TensorRT加速推理SDXL出现黑图问题1. fp162. 更换vae 解决TensorRT加速推理SDXL出现黑图问题 一般产生黑图,仅需要修改下面两个问题即可解决。 1. fp16 将pipeline中的fp16修改为fp32。 在使用稳定扩散(Stable Diffusion)生…

影响网站可用性的因素青州网站设计

文章目录 协议局域网通信IP 地址网络通信的本质tcp 和 udp 协议网络字节序网络主机数据转化接口 协议 协议:收到数据后,多出来的那一部分,也叫一种 “约定”,一整套的自硬件到软件,都有协议,需要有人定制&a…

Python 在网络爬虫与数据采集中的应用

一、引言 🌐 在大数据时代,数据已成为企业与科研的核心资产。然而,很多数据并不以结构化形式直接提供,需要通过网络爬虫和采集技术来获取。Python,凭借其简洁的语法、强大的第三方库和活跃的社区支持,已经成为网…

开通网站主机站长统计网站统计

栅格数据是一种从远处表示地球表面和大气的地理空间数据,通常使用卫星或航空传感器。它是一种基于网格的数据结构,其中网格中的每个单元或像素代表地球表面的特定位置。这些像素可以存储各种类型的信息,例如海拔、温度、土地覆盖、降水量或与该位置相关的任何其他连续或分类…

做网站和seo哪个好网站制作的收费标准

虚拟机Linux系统网络配置: 1、Vmware网络设置 虚拟机设置->网路适配器->网络连接 桥接模式:能提供独立的IP地址的情况下使用NAT模式:一台计算机只能使用一个IP,主机与虚拟机共享IP,外部网络无法发现虚拟机&#…

wordpress 企业整站源码岳阳网站建设网站

点击访问体验 之前有体验过github的代码助手,奈何收费了,上周发现有一个免费的代码助手。 下载安装 vscode 搜索扩展 TONGYI Lingma 安装完成后登陆即可体验 写注释让他写代码 根据上下文自动补充 这里我只写了一个方法名,getAgencyList…

15_spring_data_neo4j简单教程

Spring Data Neo4j 简单教程 简介 Spring Data Neo4j 是 Spring Data 项目的一部分,它提供了对 Neo4j 图数据库的集成支持。通过 Spring Data Neo4j,开发者可以轻松地在 Spring Boot 应用中使用 Neo4j 数据库,利用图…

珠海网站制作哪家便宜久久建筑网 百度网盘

认证与权限频率组件 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制。然后 权限 和 限制 组件决定是否拒绝这个请求。 简单来说就是: 认证确定了你是谁权限确定你能不能访问某个接口限制确定你访问某…