浏览代码

Wireframe is now beautiful but opaque

/Shaders2019
Arturo Nereu 4 年前
当前提交
cd4ec42a
共有 5 个文件被更改,包括 775 次插入30 次删除
  1. 29
      Assets/Shaders/Materials/WireFrame.mat
  2. 122
      Assets/Shaders/Scenes/Shaders Test Bed.unity
  3. 150
      Assets/Shaders/Scripts/BarycentricDataBuilder.cs
  4. 498
      Assets/Shaders/Shader Graphs/WireFrame.shadergraph
  5. 6
      ProjectSettings/ProjectSettings.asset

29
Assets/Shaders/Materials/WireFrame.mat


m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: WireFrame
m_Shader: {fileID: 4800000, guid: 2ebf8588c637ced48975d10b3856a104, type: 3}
m_Shader: {fileID: -6465566751694194690, guid: 4681bd3e18e3b1549a74e10efff8444c,
type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0

m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- Vector1_A1ED6E53: 2.11
- Vector1_B0D81385: 10
- _BlendOp: 0
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ColorMode: 0
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0.1
- _FlipbookBlending: 0
- _FlipbookMode: 0
- _GlossinessSource: 0
- _Mode: 0
- _Shininess: 0
- _SmoothnessSource: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecSource: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Surface: 0

m_Colors:
- Color_1221528D: {r: 0.35423064, g: 1, b: 0, a: 0}
- Color_6F4043B5: {r: 0.8625419, g: 0.8773585, b: 0.19037022, a: 0}
- _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _CameraFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
- _WireColor: {r: 0.047169805, g: 0.013794942, b: 0.0149748335, a: 1}

122
Assets/Shaders/Scenes/Shaders Test Bed.unity


debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &17098776
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 17098781}
- component: {fileID: 17098780}
- component: {fileID: 17098779}
- component: {fileID: 17098778}
- component: {fileID: 17098777}
m_Layer: 0
m_Name: Capsule
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &17098777
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 17098776}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 728e3adc9244c8348a969a6545a32bda, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!136 &17098778
CapsuleCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 17098776}
m_Material: {fileID: 0}
m_IsTrigger: 0
m_Enabled: 1
m_Radius: 0.5
m_Height: 2
m_Direction: 1
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &17098779
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 17098776}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: c9df653587fec154f8f97bfbfa2cad8a, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
--- !u!33 &17098780
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 17098776}
m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &17098781
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 17098776}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 3.29, y: 1.81, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &776631972
GameObject:
m_ObjectHideFlags: 0

- component: {fileID: 1536347346}
- component: {fileID: 1536347345}
- component: {fileID: 1536347344}
- component: {fileID: 1536347348}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged

m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
- {fileID: 2100000, guid: c9df653587fec154f8f97bfbfa2cad8a, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0

m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1536347348
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1536347343}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 728e3adc9244c8348a969a6545a32bda, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1639904474
GameObject:
m_ObjectHideFlags: 0

150
Assets/Shaders/Scripts/BarycentricDataBuilder.cs


[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
public class BarycentricDataBuilder : MonoBehaviour
{
private Mesh m_Mesh;
GenerateBarycentricData();
void Update()
//void Update()
//{
// GenerateBarycentricData();
//}
void GenerateBarycentricData()
m_Mesh = GetComponent<MeshFilter>().mesh;
SplitMesh(m_Mesh);
Color[] colorCoords = new[]
{
new Color(1, 0, 0),
new Color(0, 1, 0),
new Color(0, 0, 1),
};
Color32[] vertexColors = new Color32[m_Mesh.vertexCount];
//compute vertexcolors
//for(int i = 0; i < vertexColors.Length; i++)
//{
// vertexColors[i] = colorCoords[(int)Mathf.Repeat(i, 3)];
// //vertexColors[i] = Color.red;
//}
for (int i = 0; i < vertexColors.Length; i += 3)
{
vertexColors[i] = colorCoords[0];
vertexColors[i + 1] = colorCoords[1];
vertexColors[i + 2] = colorCoords[2];
}
//for (int i = 0; i < m_Mesh.triangles.Length; i++)
//{
// vertexColors[m_Mesh.triangles[i]] = colorCoords[(int)Mathf.Repeat(i, 3)];
// //vertexColors[m_Mesh.triangles[i]] = colorCoords[0];
// //vertexColors[m_Mesh.triangles[i + 1]] = colorCoords[1];
// //vertexColors[m_Mesh.triangles[i + 2]] = colorCoords[2];
//}
//compute vertexcolors
m_Mesh.colors32 = vertexColors;
//m_Mesh.RecalculateNormals();
//m_Mesh.MarkModified();
}
void SplitMesh(Mesh mesh)
{
int[] triangles = mesh.triangles;
Vector3[] verts = mesh.vertices;
Vector3[] normals = mesh.normals;
Vector2[] uvs = mesh.uv;
Vector3[] newVerts;
Vector3[] newNormals;
Vector2[] newUvs;
int n = triangles.Length;
newVerts = new Vector3[n];
newNormals = new Vector3[n];
newUvs = new Vector2[n];
for (int i = 0; i < n; i++)
{
newVerts[i] = verts[triangles[i]];
newNormals[i] = normals[triangles[i]];
if (uvs.Length > 0)
{
newUvs[i] = uvs[triangles[i]];
}
triangles[i] = i;
}
mesh.vertices = newVerts;
mesh.normals = newNormals;
mesh.uv = newUvs;
mesh.triangles = triangles;
//[RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
//public class Grid : MonoBehaviour
//{
// public int xSize, ySize;
// private Mesh mesh;
// private Vector3[] vertices;
// private void Awake()
// {
// Generate();
// }
// [ContextMenu("generate")]
// private void Generate()
// {
// GetComponent<MeshFilter>().mesh = mesh = new Mesh();
// mesh.name = "Procedural Grid";
// Color[] coords = new[]
// {
// new Color(1, 0, 0),
// new Color(0, 1, 0),
// new Color(0, 0, 1),
// };
// vertices = new Vector3[(xSize + 1) * (ySize + 1)];
// Vector2[] uv = new Vector2[vertices.Length];
// Vector4[] tangents = new Vector4[vertices.Length];
// Vector4 tangent = new Vector4(1f, 0f, 0f, -1f);
// Color32[] vertexColors = new Color32[vertices.Length];
// for (int i = 0, y = 0; y <= ySize; y++)
// {
// for (int x = 0; x <= xSize; x++, i++)
// {
// vertices[i] = new Vector3(x * 5, y * 5);
// vertexColors[i] = coords[(int)Mathf.Repeat(x - y, 3)];
// uv[i] = new Vector2((float)x / xSize, (float)y / ySize);
// tangents[i] = tangent;
// }
// }
// mesh.vertices = vertices;
// mesh.uv = uv;
// mesh.colors32 = vertexColors;
// mesh.tangents = tangents;
// int[] triangles = new int[xSize * ySize * 6];
// for (int ti = 0, vi = 0, y = 0; y < ySize; y++, vi++)
// {
// for (int x = 0; x < xSize; x++, ti += 6, vi++)
// {
// triangles[ti] = vi;
// triangles[ti + 3] = triangles[ti + 2] = vi + 1;
// triangles[ti + 4] = triangles[ti + 1] = vi + xSize + 1;
// triangles[ti + 5] = vi + xSize + 2;
// }
// }
// mesh.triangles = triangles;
// mesh.RecalculateNormals();
// }
//}

498
Assets/Shaders/Shader Graphs/WireFrame.shadergraph
文件差异内容过多而无法显示
查看文件

6
ProjectSettings/ProjectSettings.asset


- m_BuildTarget: WebGLSupport
m_APIs: 0b000000
m_Automatic: 1
- m_BuildTarget: MacStandaloneSupport
m_APIs: 1000000011000000
m_Automatic: 1
- m_BuildTarget: WindowsStandaloneSupport
m_APIs: 02000000
m_Automatic: 1
m_BuildTargetVRSettings:
- m_BuildTarget: Standalone
m_Enabled: 0

正在加载...
取消
保存