UE4 Lit shadingmode增加CustomData

1. 类型定义 Definitions.usf

// Copyright Epic Games, Inc. All Rights Reserved.

/*=============================================================================
	Definitions.usf: Defines undefined defines to 0 as Cg can't handle them.
=============================================================================*/

#pragma once

#ifndef MATERIAL_TWOSIDED
#define	MATERIAL_TWOSIDED								0
#endif

#ifndef MATERIAL_TANGENTSPACENORMAL
#define	MATERIAL_TANGENTSPACENORMAL						0
#endif

#ifndef MATERIAL_TWOSIDED_SEPARATE_PASS
#define	MATERIAL_TWOSIDED_SEPARATE_PASS					0
#endif

#ifndef MATERIALBLENDING_MASKED
#define MATERIALBLENDING_MASKED							0
#endif

#ifndef MATERIALBLENDING_TRANSLUCENT
#define MATERIALBLENDING_TRANSLUCENT					0
#endif

#ifndef TRANSLUCENT_SHADOW_WITH_MASKED_OPACITY
#define TRANSLUCENT_SHADOW_WITH_MASKED_OPACITY			0
#endif

#ifndef MATERIALBLENDING_ADDITIVE
#define MATERIALBLENDING_ADDITIVE						0
#endif

#ifndef MATERIALBLENDING_MODULATE
#define MATERIALBLENDING_MODULATE						0
#endif

#ifndef MATERIALBLENDING_ALPHACOMPOSITE
#define MATERIALBLENDING_ALPHACOMPOSITE					0
#endif

#ifndef MATERIALBLENDING_ALPHAHOLDOUT
#define MATERIALBLENDING_ALPHAHOLDOUT					0
#endif

#ifndef MATERIAL_SHADINGMODEL_DEFAULT_LIT
#define MATERIAL_SHADINGMODEL_DEFAULT_LIT				0
#endif

#ifndef MATERIAL_SHADINGMODEL_SUBSURFACE
#define MATERIAL_SHADINGMODEL_SUBSURFACE				0
#endif

#ifndef MATERIAL_SHADINGMODEL_PREINTEGRATED_SKIN
#define MATERIAL_SHADINGMODEL_PREINTEGRATED_SKIN		0
#endif

#ifndef MATERIAL_SHADINGMODEL_UNLIT
#define	MATERIAL_SHADINGMODEL_UNLIT						0
#endif

#ifndef MATERIAL_SINGLE_SHADINGMODEL
#define	MATERIAL_SINGLE_SHADINGMODEL					0
#endif

#ifndef HAS_PRIMITIVE_UNIFORM_BUFFER
#define	HAS_PRIMITIVE_UNIFORM_BUFFER					0
#endif

#ifndef USING_TESSELLATION
#define USING_TESSELLATION								0
#endif

#ifndef GBUFFER_HAS_VELOCITY
#define GBUFFER_HAS_VELOCITY							0
#endif

#define PC_D3D											SM5_PROFILE

#ifndef NEEDS_LIGHTMAP_COORDINATE
#define NEEDS_LIGHTMAP_COORDINATE						0
#endif

#ifndef TESSELLATION_TYPE_FLAT
#define TESSELLATION_TYPE_FLAT							0
#endif

#ifndef TESSELLATION_TYPE_PNTRIANGLES
#define TESSELLATION_TYPE_PNTRIANGLES					0
#endif

#ifndef USE_ADAPTIVE_TESSELLATION_FACTOR
#define USE_ADAPTIVE_TESSELLATION_FACTOR				1
#endif

#ifndef LANDSCAPE_XYOFFSET
#define LANDSCAPE_XYOFFSET								0
#endif

#ifndef MATERIAL_ATMOSPHERIC_FOG
#define	MATERIAL_ATMOSPHERIC_FOG						0
#endif

#ifndef MATERIAL_SKY_ATMOSPHERE
#define	MATERIAL_SKY_ATMOSPHERE							0
#endif

#ifndef BASEPASS_ATMOSPHERIC_FOG
#define	BASEPASS_ATMOSPHERIC_FOG						0
#endif

#ifndef NUM_VF_PACKED_INTERPOLANTS
#define NUM_VF_PACKED_INTERPOLANTS						0
#endif

#ifndef REVERSEBITS
#define REVERSEBITS										reversebits
#endif

#ifndef INSTANCED_STEREO
#define INSTANCED_STEREO								0
#endif	

#ifndef MULTI_VIEW
#define MULTI_VIEW										0
#endif	

#ifndef CLEAR_COAT_BOTTOM_NORMAL
#define CLEAR_COAT_BOTTOM_NORMAL						0
#endif

#ifndef IRIS_NORMAL
#define IRIS_NORMAL										0
#endif

#ifndef TEX_COORD_SCALE_ANALYSIS
#define TEX_COORD_SCALE_ANALYSIS						0
#endif

#ifndef LIGHTMAP_VT_ENABLED
#define LIGHTMAP_VT_ENABLED								0
#endif

#define NOEXPRESSIONOPTIMIZATIONS						

#ifndef HAS_INVERTED_Z_BUFFER
#define HAS_INVERTED_Z_BUFFER	1
#endif

/** When defined sets the layer index for volumetric rendering in the vertex shader, rather than using a geometry shader */
#ifndef USING_VERTEX_SHADER_LAYER
#define USING_VERTEX_SHADER_LAYER	0
#endif

#ifndef DISABLE_FORWARD_LOCAL_LIGHTS
#define DISABLE_FORWARD_LOCAL_LIGHTS					0
#endif

#ifndef SINGLE_LAYER_WATER_SIMPLE_FORWARD
#define SINGLE_LAYER_WATER_SIMPLE_FORWARD				0
#endif

#ifndef CLOUD_LAYER_PIXEL_SHADER
#define CLOUD_LAYER_PIXEL_SHADER						0
#endif


#ifndef SUPPORTS_ANISOTROPIC_MATERIALS
#define SUPPORTS_ANISOTROPIC_MATERIALS					0
#endif

2. 增加custom data设置,BasePassCommon.ush

#define WRITES_CUSTOMDATA_TO_GBUFFER		(USES_GBUFFER && (MATERIAL_SHADINGMODEL_SUBSURFACE || MATERIAL_SHADINGMODEL_PREINTEGRATED_SKIN || MATERIAL_SHADINGMODEL_SUBSURFACE_PROFILE || MATERIAL_SHADINGMODEL_CLEAR_COAT || MATERIAL_SHADINGMODEL_TWOSIDED_FOLIAGE || MATERIAL_SHADINGMODEL_HAIR || MATERIAL_SHADINGMODEL_CLOTH || MATERIAL_SHADINGMODEL_EYE || MATERIAL_SHADINGMODEL_DEFAULT_LIT))

3. ShadingModelsMaterial.ush

#if MATERIAL_SHADINGMODEL_DEFAULT_LIT
	else if (ShadingModel == SHADINGMODEL_DEFAULT_LIT)
	{
		GBuffer.CustomData.x = GetMaterialCustomData0(MaterialParameters);
	}
#endif

4. source/runtime/engine/private/materials/material.cpp

case MP_CustomData0:
		Active = ShadingModels.HasAnyShadingModel({ MSM_ClearCoat, MSM_Hair, MSM_Cloth, MSM_Eye, MSM_DefaultLit });
		break;

5. 报错,直接修改default lit不行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值