wordpress 显示文章数量,网站大图怎么优化,网页设计素材加工,wordpress 老萨文章目录 前言一、 我们先了解一下 Shader Graph 怎么操作1、了解一下 Shader Graph 的面板信息2、修改Shader路径3、鼠标中键 或 Alt 鼠标左键 移动画布4、鼠标右键 打开创建节点菜单5、把ShaderGraph节点转化为 Shader 代码6、可以看出 URP 和 BuildIn RP 大体框架一致 二、… 文章目录 前言一、 我们先了解一下 Shader Graph 怎么操作1、了解一下 Shader Graph 的面板信息2、修改Shader路径3、鼠标中键 或 Alt 鼠标左键 移动画布4、鼠标右键 打开创建节点菜单5、把ShaderGraph节点转化为 Shader 代码6、可以看出 URP 和 BuildIn RP 大体框架一致 二、把ShaderGraph转化后的 Shader 只保留最基础的通用前向渲染Pass1、我们看一下 URP Pass不可用后使用的默认Shader 前言
在之前的文章中我们学习了 ShaderLab 中 BuildIn Render Pipeline 下的Shader书写。在这篇文章中我们来了解一下 URP 下 的最简Shader怎么编写。 一、 我们先了解一下 Shader Graph 怎么操作
1、了解一下 Shader Graph 的面板信息 2、修改Shader路径 3、鼠标中键 或 Alt 鼠标左键 移动画布
4、鼠标右键 打开创建节点菜单 5、把ShaderGraph节点转化为 Shader 代码
可以直接 查看 或 复制 编译后的Shader
6、可以看出 URP 和 BuildIn RP 大体框架一致 二、把ShaderGraph转化后的 Shader 只保留最基础的通用前向渲染Pass
因为是由ShaderGraph转化过来的。所以这里虽然简化了。但是还是过于臃肿在之后的文章中我们来优化一下
Shader MyShader/P2_10
{Properties {}SubShader{Tags{RenderPipelineUniversalPipelineRenderTypeOpaqueQueueGeometry}Pass{Name Universal ForwardTags{// LightMode: None}// Render StateCull BackBlend One ZeroZTest LEqualZWrite On// Debug// None// --------------------------------------------------// PassHLSLPROGRAM// Pragmas#pragma target 2.0#pragma multi_compile_instancing#pragma multi_compile_fog#pragma instancing_options renderinglayer#pragma vertex vert#pragma fragment frag// Keywords#pragma multi_compile _ LIGHTMAP_ON#pragma multi_compile _ DIRLIGHTMAP_COMBINED#pragma shader_feature _ _SAMPLE_GI#pragma multi_compile_fragment _ _DBUFFER_MRT1 _DBUFFER_MRT2 _DBUFFER_MRT3#pragma multi_compile_fragment _ DEBUG_DISPLAY#pragma multi_compile_fragment _ _SCREEN_SPACE_OCCLUSION// GraphKeywords: None// Defines#define ATTRIBUTES_NEED_NORMAL#define ATTRIBUTES_NEED_TANGENT#define VARYINGS_NEED_POSITION_WS#define VARYINGS_NEED_NORMAL_WS#define FEATURES_GRAPH_VERTEX/* WARNING: $splice Could not find named fragment PassInstancing */#define SHADERPASS SHADERPASS_UNLIT#define _FOG_FRAGMENT 1/* WARNING: $splice Could not find named fragment DotsInstancingVars */// custom interpolator pre-include/* WARNING: $splice Could not find named fragment sgci_CustomInterpolatorPreInclude */// Includes#include Packages/com.unity.render-pipelines.core/ShaderLibrary/Color.hlsl#include Packages/com.unity.render-pipelines.core/ShaderLibrary/Texture.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlsl#include Packages/com.unity.render-pipelines.core/ShaderLibrary/TextureStack.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/ShaderGraphFunctions.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/DBuffer.hlsl#include Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/ShaderPass.hlsl// --------------------------------------------------// Structs and Packing// custom interpolators pre packing/* WARNING: $splice Could not find named fragment CustomInterpolatorPrePacking */struct Attributes{float3 positionOS : POSITION;float3 normalOS : NORMAL;float4 tangentOS : TANGENT;#if UNITY_ANY_INSTANCING_ENABLEDuint instanceID : INSTANCEID_SEMANTIC;#endif};struct Varyings{float4 positionCS : SV_POSITION;float3 positionWS;float3 normalWS;#if UNITY_ANY_INSTANCING_ENABLEDuint instanceID : CUSTOM_INSTANCE_ID;#endif#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;#endif#if (defined(UNITY_STEREO_INSTANCING_ENABLED))uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;#endif#if defined(SHADER_STAGE_FRAGMENT) defined(VARYINGS_NEED_CULLFACE)FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;#endif};struct SurfaceDescriptionInputs{};struct VertexDescriptionInputs{float3 ObjectSpaceNormal;float3 ObjectSpaceTangent;float3 ObjectSpacePosition;};struct PackedVaryings{float4 positionCS : SV_POSITION;float3 positionWS : INTERP0;float3 normalWS : INTERP1;#if UNITY_ANY_INSTANCING_ENABLEDuint instanceID : CUSTOM_INSTANCE_ID;#endif#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))uint stereoTargetEyeIndexAsBlendIdx0 : BLENDINDICES0;#endif#if (defined(UNITY_STEREO_INSTANCING_ENABLED))uint stereoTargetEyeIndexAsRTArrayIdx : SV_RenderTargetArrayIndex;#endif#if defined(SHADER_STAGE_FRAGMENT) defined(VARYINGS_NEED_CULLFACE)FRONT_FACE_TYPE cullFace : FRONT_FACE_SEMANTIC;#endif};PackedVaryings PackVaryings(Varyings input){PackedVaryings output;ZERO_INITIALIZE(PackedVaryings, output);output.positionCS input.positionCS;output.positionWS.xyz input.positionWS;output.normalWS.xyz input.normalWS;#if UNITY_ANY_INSTANCING_ENABLEDoutput.instanceID input.instanceID;#endif#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))output.stereoTargetEyeIndexAsBlendIdx0 input.stereoTargetEyeIndexAsBlendIdx0;#endif#if (defined(UNITY_STEREO_INSTANCING_ENABLED))output.stereoTargetEyeIndexAsRTArrayIdx input.stereoTargetEyeIndexAsRTArrayIdx;#endif#if defined(SHADER_STAGE_FRAGMENT) defined(VARYINGS_NEED_CULLFACE)output.cullFace input.cullFace;#endifreturn output;}Varyings UnpackVaryings(PackedVaryings input){Varyings output;output.positionCS input.positionCS;output.positionWS input.positionWS.xyz;output.normalWS input.normalWS.xyz;#if UNITY_ANY_INSTANCING_ENABLEDoutput.instanceID input.instanceID;#endif#if (defined(UNITY_STEREO_MULTIVIEW_ENABLED)) || (defined(UNITY_STEREO_INSTANCING_ENABLED) (defined(SHADER_API_GLES3) || defined(SHADER_API_GLCORE)))output.stereoTargetEyeIndexAsBlendIdx0 input.stereoTargetEyeIndexAsBlendIdx0;#endif#if (defined(UNITY_STEREO_INSTANCING_ENABLED))output.stereoTargetEyeIndexAsRTArrayIdx input.stereoTargetEyeIndexAsRTArrayIdx;#endif#if defined(SHADER_STAGE_FRAGMENT) defined(VARYINGS_NEED_CULLFACE)output.cullFace input.cullFace;#endifreturn output;}// --------------------------------------------------// Graph// Graph PropertiesCBUFFER_START(UnityPerMaterial)CBUFFER_END// Object and Global properties// Graph Includes// GraphIncludes: None// -- Property used by ScenePickingPass#ifdef SCENEPICKINGPASSfloat4 _SelectionID;#endif// -- Properties used by SceneSelectionPass#ifdef SCENESELECTIONPASSint _ObjectId;int _PassValue;#endif// Graph Functions// GraphFunctions: None// Custom interpolators pre vertex/* WARNING: $splice Could not find named fragment CustomInterpolatorPreVertex */// Graph Vertexstruct VertexDescription{float3 Position;float3 Normal;float3 Tangent;};VertexDescription VertexDescriptionFunction(VertexDescriptionInputs IN){VertexDescription description (VertexDescription)0;description.Position IN.ObjectSpacePosition;description.Normal IN.ObjectSpaceNormal;description.Tangent IN.ObjectSpaceTangent;return description;}// Custom interpolators, pre surface#ifdef FEATURES_GRAPH_VERTEXVaryings CustomInterpolatorPassThroughFunc(inout Varyings output, VertexDescription input){return output;}#define CUSTOMINTERPOLATOR_VARYPASSTHROUGH_FUNC#endif// Graph Pixelstruct SurfaceDescription{float3 BaseColor;};SurfaceDescription SurfaceDescriptionFunction(SurfaceDescriptionInputs IN){SurfaceDescription surface (SurfaceDescription)0;surface.BaseColor IsGammaSpace() ? float3(0.5, 0.5, 0.5) : SRGBToLinear(float3(0.5, 0.5, 0.5));return surface;}// --------------------------------------------------// Build Graph Inputs#ifdef HAVE_VFX_MODIFICATION#define VFX_SRP_ATTRIBUTES Attributes#define VFX_SRP_VARYINGS Varyings#define VFX_SRP_SURFACE_INPUTS SurfaceDescriptionInputs#endifVertexDescriptionInputs BuildVertexDescriptionInputs(Attributes input){VertexDescriptionInputs output;ZERO_INITIALIZE(VertexDescriptionInputs, output);output.ObjectSpaceNormal input.normalOS;output.ObjectSpaceTangent input.tangentOS.xyz;output.ObjectSpacePosition input.positionOS;return output;}SurfaceDescriptionInputs BuildSurfaceDescriptionInputs(Varyings input){SurfaceDescriptionInputs output;ZERO_INITIALIZE(SurfaceDescriptionInputs, output);#ifdef HAVE_VFX_MODIFICATION#if VFX_USE_GRAPH_VALUESuint instanceActiveIndex asuint(UNITY_ACCESS_INSTANCED_PROP(PerInstance, _InstanceActiveIndex));/* WARNING: $splice Could not find named fragment VFXLoadGraphValues */#endif/* WARNING: $splice Could not find named fragment VFXSetFragInputs */#endif#if UNITY_UV_STARTS_AT_TOP#else#endif#if defined(SHADER_STAGE_FRAGMENT) defined(VARYINGS_NEED_CULLFACE)#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN output.FaceSign IS_FRONT_VFACE(input.cullFace, true, false);#else#define BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGN#endif#undef BUILD_SURFACE_DESCRIPTION_INPUTS_OUTPUT_FACESIGNreturn output;}// --------------------------------------------------// Main#include Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/Varyings.hlsl#include Packages/com.unity.render-pipelines.universal/Editor/ShaderGraph/Includes/UnlitPass.hlsl// --------------------------------------------------// Visual Effect Vertex Invocations#ifdef HAVE_VFX_MODIFICATION#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/VisualEffectVertex.hlsl#endifENDHLSL}}FallBack Hidden/Shader Graph/FallbackError
}1、我们看一下 URP Pass不可用后使用的默认Shader
使用的是内置渲染管线返回颜色为洋葱紫
Shader Hidden/Universal Render Pipeline/FallbackError
{SubShader{Tags{RenderType OpaqueRenderPipeline UniversalPipelineIgnoreProjector True}Pass{HLSLPROGRAM#pragma target 2.0#pragma editor_sync_compilation// -------------------------------------// Shader Stages#pragma vertex vert#pragma fragment frag// -------------------------------------// Unity defined keywords#pragma multi_compile _ STEREO_INSTANCING_ON STEREO_MULTIVIEW_ON//--------------------------------------// GPU Instancing#include_with_pragmas Packages/com.unity.render-pipelines.universal/ShaderLibrary/DOTS.hlsl// -------------------------------------// Includes#include Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl#include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Input.hlslstruct appdata_t{float4 vertex : POSITION;UNITY_VERTEX_INPUT_INSTANCE_ID};struct v2f{float4 vertex : SV_POSITION;UNITY_VERTEX_OUTPUT_STEREO};v2f vert (appdata_t v){v2f o;UNITY_SETUP_INSTANCE_ID(v);UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);o.vertex TransformObjectToHClip(v.vertex.xyz);return o;}float4 frag (v2f i) : SV_Target{return float4(1,0,1,1);}ENDHLSL}}Fallback Hidden/Core/FallbackError
}